Comments 15
с гитхаба легко стянуть и попробовать, а выковыривать код с хабра — сомнительное удовольствие ))
Если надо отправить почту из приложения которое крутится внутри контейнера, можно:
а) подключиться к локальному MTA на хосте из докера (локально оно слушает всегда на 127.0.0.1:25)
или
б) отправлять по API через предназначенные для этого сервисы (а не заморачиваться с настройкой своего mail-сервера, а то адрес отправителя и IP очень быстро улетит в замечательный spam-blacklist)
Другая часть этих настроек конечно должна быть проведена в настройках домена. Что к сожалению не всегда выполняется правильно. И поэтому почта часто попадает в серые и черные списки или отвергается некоторыми серверами.
Другая часть этих настроек конечно должна быть проведена в настройках домена. Что к сожалению не всегда выполняется правильно. И поэтому почта часто попадает в серые и черные списки или отвергается некоторыми серверами.
Так я вот именно поэтому и спрашиваю — зачем? Настройка полноценного мейл-сервера, которому другие сервера будут доверять, это дело очень сложное (DNS A/AAAA, DNS PTR, DNS SPF это как минимум, еще добавим TLS, DKMS и прочее), что все достоинства использования контейнеров сходят на ноль, совсем.
При этом в интернете тысячи (ну или хотя бы сотни уж точно) сервисов, которые делают отправку почты через API банальным делом (например — AWS SES, не знаю какие сервисы для этого популярны в России).
По-моему
postconf -e "smtpd_recipient_restrictions = permit_sasl_authenticated,reject_unauth_destination"
postconf -e "smtpd_client_restrictions = permit_sasl_authenticated,reject_unauth_destination"
лучше заменить на
postconf -e "smtpd_relay_restrictions = permit_sasl_authenticated,reject_unauth_destination"
postconf -e "smtpd_recipient_restrictions = reject" # (reject_unauth_destination - если хотите локальный bcc)
smtpd_recipient_restrictions
после версии 2.10 (я уверен, у вас старше) предназначен для ограничений на "локальную" доставку, вы же хотите настроить relay, поэтому лучше использовать соответствующий параметр.
smtpd_client_restrictions
— это generic ограничения
Причем, правило reject_unauth_destination
— это правило из раздела smtpd_recipient_restrictions
, и в smtpd_client_restrictions
оно будет иметь силу только если стоит smtpd_delay_reject = yes
(значение по умолчанию).
И получается что вы одно и то же написали 2 раза.
Тут написано подробнее
И последний момент
myhostname = example.com
советую все таки вписывать именно имя хоста docker-mx.mycompany.com
(а не просто доменную часть) ведь именно так он будет представляться в HELO/EHLO при отправке почты. И на это имя вы будете заводить dkim/spf/dmark записи, а так же PTR запись в днс, а то рискуете попасть в спам.
Если представляться надо как-то иначе, то можно воспользоваться параметром smtp_helo_name
.
Задал параметр smtpd_relay_restrictions. Задание параллельно и параметра smtpd_recipient_restrictions как оказалось перекрывает значение smtpd_relay_restrictions и с другого адреса почта по прежнему не отправляется.
Так, кажется, я в первый раз неверно понял задачу. Меня сбил первый абзац о том что вы хотели что-то там прописывать в relay_domains
.
Я и подумал что вы relayхотите:
The relay domain class.
Purpose: mail forwarding to remote destinations that list your system as primary or backup MX host. For a discussion of the basic configuration details, see the BASIC_CONFIGURATION_README document. For a discussion of the difference between canonical domains, hosted domains and other domains, see the VIRTUAL_README file.
Но по итогу вам нужен обычный
The default domain class.
Purpose: mail forwarding to the Internet on behalf of authorized clients. For a discussion of the basic configuration details, see the BASIC_CONFIGURATION_README file. For a discussion of the difference between canonical domains, hosted domains and other domains, see the VIRTUAL_README file.
Тогда, конечно, вы были правы с классом
postconf -e "smtpd_recipient_restrictions = permit_sasl_authenticated,reject_unauth_destination"
просто smtpd_client_restrictions
лишние были
Отправка почты из Docker-контейнера (докеризация postfix и sasl)