Отправка локальной почты через удаленный MTA с авторизацией


На самом деле это только звучит сложно, а на практике имеется небольшой конфигурационный файл и надо сделать несколько дополнительных телодвижений, чтобы это все заработало, в общем максимально типовая операция.

Установка Postfix

Первым делом установите пакет postfix при помощи пакетного менеджера вашего дистрибутива:

# yum install postfix

Настройка Postfix

Следующим этапом приведите конфигурационный файл /etc/postfix/main.cf к следующему виду:

inet_interfaces = 127.0.0.1 
relayhost = 
smtp_sasl_auth_enable = yes 
smtp_sasl_password_maps = hash:/etc/postfix/private/sasl_passwd 
smtp_sasl_security_options = noanonymous 
smtp_sasl_type = cyrus 
smtp_sasl_mechanism_filter = login 
smtp_sender_dependent_authentication = yes 
sender_dependent_relayhost_maps = hash:/etc/postfix/private/sender_relay 
sender_canonical_maps = hash:/etc/postfix/private/canonical 
compatibility_level=2 
append_dot_mydomain=yes 
smtputf8_enable = no
smtp_generic_maps = hash:/etc/postfix/private/smtp_generic_maps

Создаем файлы описания авторизации и транспорта

Файл /etc/postfix/private/sasl_passwd:

[smtp.yandex.ru] robot-report@prod.com:xxxUserPasswordxxx

Файл /etc/postfix/private/sender_relay:

@prod.com smtp.yandex.ru

Файл /etc/postfix/private/canonical:

@prod.com robot-report@prod.com

Домен prod.com конечно надо заменить на свой корпоративный домен на Yandex или использовать @yandex.ru если вы не пользуетесь почтой для домена.

Файл /etc/postfix/private/smtp_generic_maps содержит соотношения внутренних пользователей системы и адреса электронной почты от которого они будут общаться с удаленным почтовым сервером:

www-data robot-report@prod.com
root robot-report@prod.com
asterisk robot-report@prod.com

Завершающим этапом выполним операцию postmap на последних четырех файлах:

# postmap /etc/postfix/private/*

Перезапускаем почтовый сервер командой:

# systemctl start postfix

Проверяем, что все работает корректно:

# echo "nl12345df@yandex.ru" | mail anton@gita-dev.ru

Если все прошло успешно, то вы должны получить письмо на адрес указанный параметром команды mail, а в лог-файле /var/log/maillog будет нечто похожее:

Aug 3 05:01:46 pbx postfix/smtpd[8237]: connect from localhost[127.0.0.1] 
Aug 3 05:01:46 pbx postfix/smtpd[8237]: 6E7C148A7: client=localhost[127.0.0.1] 
Aug 3 05:01:46 pbx postfix/cleanup[8240]: 6E7C148A7: message-id=<201808030901.w7391keU008236@localhost.localdomain> 
Aug 3 05:01:46 pbx postfix/qmgr[8233]: 6E7C148A7: from=<root@localhost.localdomain>, size=666, nrcpt=1 (queue active) 
Aug 3 05:01:46 pbx sendmail[8236]: w7391keU008236: to=anton@gita-dev.ru, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30213, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (Ok: queued as 6E7C148A7) 
Aug 3 05:01:46 pbx postfix/smtpd[8237]: disconnect from localhost[127.0.0.1]