У меня дома свой собственный сервер, для которого я арендую выделенный IP-адрес от провайдера. Тем не менее, некоторые почтовики (в частности Mail.ru) не пропускают мои письма, т.к. PTR-запись ведет не на конкретный домен, и больше похожа на запись для динамического IP. Провайдер отказался изменять PTR для физического лица, договориться с Mail.ru мне тоже не удалось, поэтому пришлось решать проблему с помощью доменозависимого SMTP-релея.
Привожу пример части конфига Postfix /etc/postfix/main.cf
, необходимой для отправки писем с разных доменов по SMTP (через Gmail):
sender_canonical_maps = hash:/etc/postfix/sender_canonical smtp_sender_dependent_authentication = yes sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relayhost smtp_use_tls = yes smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = relayhost = [smtp.gmail.com]:submission
В файле /etc/postfix/sender_canonical
пишем локальных пользователей (о том, как запустить сайты от разных пользователей читайте в предыдущей статье) и соответствующие внешние почтовые аккаунты:
user noreply@domain.com user1 info@domain1.com user2 noreply@domain2.com user3 noreply@domain3.com
В файле /etc/postfix/sender_relayhost
прописываем параметры SMTP-подключения к внешним аккаунтам:
noreply@domain.com [smtp.gmail.com]:587 info@domain1.com [smtp.gmail.com]:587 noreply@domain2.com [smtp.gmail.com]:587 noreply@domain3.com [smtp.gmail.com]:587
А в файле /etc/postfix/sasl_passwd
пишем внешние ящики с логинами и паролями от них:
noreply@domain.com noreply@domain.com:PASSWORD info@domain1.com info@domain1.com:PASSWORD noreply@domain2.com noreply@domain2.com:PASSWORD noreply@domain3.com noreply@domain3.com:PASSWORD [smtp.gmail.com]:587 noreply@domain.com:PASSWORD
В последней строке указан аккаунт для отправки почты по умолчанию (если не подходит по другим условиям).
После внесения изменений в конфиги делаем postmap
и перезапускаем Postfix:
postmap hash:/etc/postfix/sender_canonical postmap hash:/etc/postfix/sender_relayhost postmap hash:etc/postfix/sasl_passwd /etc/init.d/postfix restart
После этого почта с разных доменов будет уходить через разные почтовые аккаунты по SMTP.
P.S. Способ не претендует на звание лучшего, но по-другому мне решить данную проблему в кротчайшие сроки не удалось.