Skip to main content

Отправка писем по SMTP с нескольких доменов

У меня дома свой собственный сервер, для которого я арендую выделенный 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. Способ не претендует на звание лучшего, но по-другому мне решить данную проблему в кротчайшие сроки не удалось.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *