Тематические термины: Postfix, SMTP.
В данной статье мы разберем ситуацию, при которой есть необходимость отправлять почту со своего сервера на Postfix, но через почту яндекса (использовать его в качестве smarthost). При этом, необходимо настроить возможность использования нескольких учетных записей. Инструкция подойдет под любой дистрибутив системы UNIX, на котором можно установить Postfix. Почтовая система Яндекса используется лишь для примера — по сути, по данному принципу можно настроить и пересылку почты через другие почтовые системы.
Нам необходимо иметь почтовые учетные записи в Яндексе. При отправке писем мы будем использовать правила аутентификации на серверах последнего с использованием данных учетных записей.
Открываем конфигурационный файл postfix:
vi /etc/postfix/main.cf
Добавим следующие строки:
relayhost =smtp_sasl_auth_enable = yessmtp_sasl_password_maps = hash:/etc/postfix/private/sasl_passwdsmtp_sasl_security_options = noanonymoussmtp_sasl_type = cyrussmtp_sasl_mechanism_filter = loginsmtp_sender_dependent_authentication = yessender_dependent_relayhost_maps = hash:/etc/postfix/private/sender_relaysmtp_tls_CAfile = /etc/postfix/ca.pemsmtp_use_tls = yes
* где:
Создаем каталог для конфигов:
mkdir /etc/postfix/private
Создаем файл с правилами пересылки сообщений:
vi /etc/postfix/private/sender_relay
@yandex.ru smtp.yandex.ru
* в данном примере мы все сообщения, отправляемые от домена yandex.ru переправляем через сервер smtp.yandex.ru.
Создаем файл с настройкой привязки логинов и паролей:
vi /etc/postfix/private/sasl_passwd
[email protected] [email protected]:password1[email protected] [email protected]:password2
* в данном примере мы создаем 2 учетные записи для аутентификации на яндексе. При отправке писем от [email protected] необходимо авторизоваться на сервере яндекса от этой же учетной записи с паролем password1. Соответственно, при отправке письма от [email protected] — с паролем password2.
Создаем карты для данных файлов:
postmap /etc/postfix/private/{sasl_passwd,sender_relay}
Получаем сертификат от Яндекса, для этого выполняем запрос:
openssl s_client -starttls smtp -crlf -connect smtp.yandex.ru:25
… на экран будет выведена различная информация — нам нужна вся, что заключена между —–BEGIN CERTIFICATE—– и —–END CERTIFICATE—–. Копируем ее и создаем файл сертификата:
vi /etc/postfix/ca.pem
—–BEGIN CERTIFICATE—–MIIGazCCBVOgAwIBAgIQcUU9mJXW4OUs5Gf0JfLtsjANBgkqhkiG9w0BAQsFADBf…nRG0DfdqYIuPGApFORYe—–END CERTIFICATE—–
Перезапускаем Postfix:
systemctl restart postfix
Обратите внимание на 2 момента:1) так как яндекс может обслуживать почту для любых доменов, не обязательно должен использоваться домен yandex.ru.2) отправка сообщения должна идти строго от того пользователя, под которым идет авторизация на yandex. В противном случае, подключение не пройдет проверку и завершится ошибкой.
Для проверки можно использовать консольную команду mail.
yum install mailx
После отправляем письмо
echo “Test text” | mail -s “Test title” -r [email protected] [email protected]
* в данном примере мы отправляем письмо от почты [email protected]ru на ящик [email protected].
apt-get install mailutils
После можно отправлять письмо:
echo “Test text” | mail -s “Test title” [email protected] -aFrom:[email protected]
* в данном примере мы отправляем письмо от ящика [email protected] на почту [email protected].
В итоге на отправляемый ящик электронной почты должно прийти письмо от нашего адреса с доменом yandex.ru. Если посмотреть в заголовки, оно должно было быть отправлено через серверы Яндекса:
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies