Перейти к содержимому

Отправка почты от Postfix через почтовый сервер Яндекса

В данной статье мы разберем ситуацию, при которой есть необходимость отправлять почту со своего сервера на Postfix, но через почту яндекса (использовать его в качестве smarthost). При этом, необходимо настроить возможность использования нескольких учетных записей. Инструкция подойдет под любой дистрибутив системы UNIX, на котором можно установить Postfix. Почтовая система Яндекса используется лишь для примера — по сути, по данному принципу можно настроить и пересылку почты через другие почтовые системы.

Требования

Нам необходимо иметь почтовые учетные записи в Яндексе. При отправке писем мы будем использовать правила аутентификации на серверах последнего с использованием данных учетных записей.

Настройка Postfix

Открываем конфигурационный файл postfix:

vi /etc/postfix/main.cf

Добавим следующие строки:

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 smtp_tls_CAfile = /etc/postfix/ca.pem smtp_use_tls = yes

* где:

  • relayhost — сервер, через который нужно отправлять почту. Мы будем использовать отдельные правила, поэтому оставляем данный параметр с пустым значением.
  • smtp_sasl_auth_enable — включение аутентификации на стороне клиента.
  • smtp_sasl_password_maps — указывает на файл, в котором хранится база связок логин/пароль.
  • smtp_sasl_security_options — опции SASL. noanonymous указывает на запрет анонимной аутентификации.
  • smtp_sasl_type — задает плагин SASL для аутентификации.
  • smtp_sasl_mechanism_filter — перечисляет механизмы проверки пользователя и пароля.
  • smtp_sender_dependent_authentication — включает зависящую от отправителя аутентификацию, отключает кэширование SMTP-соединения.
  • sender_dependent_relayhost_maps — указание на список адресов и почтовых серверов, через которые нужно отправлять письма на эти адреса.
  • smtp_tls_CAfile — файл с сертификатом Яндекса.
  • smtp_use_tls — указывает, использовать ли TLS для SMTP.

Создаем каталог для конфигов:

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

root@yandex.ru        root@yandex.ru:password1 info@yandex.ru         info@yandex.ru:password2

* в данном примере мы создаем 2 учетные записи для аутентификации на яндексе. При отправке писем от root@yandex.ru необходимо авторизоваться на сервере яндекса от этой же учетной записи с паролем password1. Соответственно, при отправке письма от info@yandex.ru — с паролем 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.

Если используем Red Hat / CentOS

yum install mailx

После отправляем письмо

echo «Test text» | mail -s «Test title» -r root@yandex.ru master@dmosk.ru

* в данном примере мы отправляем письмо от почты root@yandex.ru на ящик master@dmosk.ru.

Если используем Ubuntu / Debian

apt-get install mailutils

После можно отправлять письмо:

echo «Test text» | mail -s «Test title» master@dmosk.ru -aFrom:info@yandex.ru

* в данном примере мы отправляем письмо от ящика info@yandex.ru на почту master@dmosk.ru.

Результат

В итоге на отправляемый ящик электронной почты должно прийти письмо от нашего адреса с доменом yandex.ru. Если посмотреть в заголовки, оно должно было быть отправлено через серверы Яндекса:

https://www.dmosk.ru/miniinstruktions.php?mini=postfix-over-yandex

Опубликовано вLinux

Ваш комментарий будет первым

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

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