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

by Anton Chernousov aka GITA-DEV


Опубликовано: 03 Авг 2018 (последние правки 1 месяц, 2 недели)


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

Если у вас есть приложение которое использует для отправки почты системные функции и не поддерживает указание SMTP-сервера и учетных данных с которыми необходимо осуществлять отправку почты (например через почтовый сервер Yandex), то вам придется настроить локальный MTA (например Postfix) таки образом, чтобы он не просто отправлял почту Relay-ем на Yandex, но еще и авторизовывался на удаленном сервере.

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

Установка 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]

Обратите внимание на статьи:


Логирование ошибок в Django-проекте на боевом сервере

Логирование ошибок в Django-проекте на боевом сервере

Как вы наверное знаете у Django Framework имеется отличная система отладки и вывода отладочной информации при ошибке WEB-приложения и включается режим отладки простым DEBUG = True. Естественно, что на продакшн (боевых) сервера такое поведение недопустимо и в случае сбоя клиенту отображается лишь страница 500 с соответствующим кодом возврата и конечно клиенту этого вполне достаточно, но нам то необходимо оперативно отреагировать на сбой web-приложения и принять меры.


Настройка MTA Postfix в связке с Dovecot

Настройка MTA Postfix в связке с Dovecot

В предыдущей статье посвященной сборке и настройке почтового сервера из Opensource-компонентов, я в качестве MTA использовал EXIM и как мне сказали я это сделал зря, так как наиболее распространенным почтовым сервером на данный момент является Postfix и он применяется на 90% почтовых серверов. Пожалуй прислушаюсь к советам читателей и расскажу в дополнение к предыдущей статье как настроить Postfix для той же связки.


Легковесный почтовый сервер с хранением учетных данных в базе Postgresql

Легковесный почтовый сервер с хранением учетных данных в базе Postgresql

До этого я рассказывал исключительно о монстроидальном комплексе совместной работы под названием Zimbra и вы наверное поняли, что запустить его на небольшом VPS у вас не получится, так как он потребляет просто огромное количество системных ресурсов. Но, что же делать, если требуется собственный почтовый сервер и вы сильно ограничены в системных ресурсах? Правильный ответ, это собрать его самому из Opensource-компонентов и полученный результат удивит вас своей легковесностью.


Есть вопросы?
Спрашивайте и я обязательно вам отвечу!

* Поля обязательные для заполнения .

Блог это некоммерческий проект! Если вам понравился мой блог и то что я пишу помогло вам на практике, то можете сказать спасибо материально.