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


Администрирование операционных систем на базе Linux (Debian/Ubuntu и Centos/RedHat) Open Source компоненты почтового сервера Мое портфолио, сертификаты и разработки
postfix private smtp smtputf8 yandex настройка postfix
 
 

* В этом блоге я описываю свою повседневную рабочую практику, поэтому все статьи в блоге написаны лично мной и при копировании их на свой сайт пожалуйста указывайте ссылку на страницу откуда вы скопировали.
* Если какая-то статья вам помогла, то вы можете дать мне немного денег вместо простого спасибо (ссылка на форму поддержки проекта внизу страницы), если вы что-то не поняли или у вас что-то не получается, то вы можете нанять меня и я вам все подробно расскажу (расценки и ссылки в конце статьи).


(последние правки 3 недели, 5 дней)

Если у вас есть приложение которое использует для отправки почты системные функции и не поддерживает указание 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]
Моя официальная страница на FaceBook
Мой микроблог в твиттер

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

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

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


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

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

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


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

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

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


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


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

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