Используемые термины: Postfix , SMTP .
В данной статье мы разберем ситуацию, при которой есть необходимость отправлять почту со своего сервера на Postfix, но через почту яндекса (использовать его в качестве smarthost). При этом, необходимо настроить возможность использования нескольких учетных записей. Инструкция подойдет под любой дистрибутив системы UNIX, на котором можно установить Postfix. Почтовая система Яндекса используется лишь для примера — по сути, по данному принципу можно настроить и пересылку почты через другие почтовые системы.
Описание требований
Настройка Postfix
Тест отправки сообщения
Решение возможных проблем
Дополнительные материалы
Нам необходимо иметь почтовые учетные записи в Яндексе. При отправке писем мы будем использовать правила аутентификации на серверах последнего с использованием данных учетных записей.
Также нам нужен пакет cyrus-sasl. Он реализует метод аутенификации SASL (Simple Authentication and Security Layer).
В зависимости от дистрибутива Linux действия по его установки будут отличаться.
а) на сервере RPM (Rocky, РЕД ОС, CentOS):
yum install cyrus-sasl-plain
б) на сервере DEB (Debian, Astra Linux, Ubuntu):
apt install cyrus-imapd cyrus-clients cyrus-doc cyrus-admin sasl2-bin
Готово. Система подготовлена к настройке почты.
Открываем конфигурационный файл 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
smtp_tls_CAfile = /etc/postfix/ca.pem
smtp_use_tls = yes
smtp_tls_security_level=may
smtpd_tls_security_level=may
sender_dependent_relayhost_maps = hash:/etc/postfix/private/sender_relay
* некоторые директивы уже будут в конфигурационном файле. Нужно изменить им значения.
** где:
Создаем каталог для конфигов:
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.
yum install mailx
После отправляем письмо
echo «Test text» | mail -s «Test title» -r root@yandex.ru master@remontka.com
* в данном примере мы отправляем письмо от почты root@yandex. ru на ящик master@remontka.com .
apt-get install mailutils
После можно отправлять письмо:
echo «Test text» | mail -s «Test title» master@remontka.com -aFrom:info@yandex.ru
* в данном примере мы отправляем письмо от ящика info@yandex.ru на почту master@remontka.com .
В итоге на отправляемый ящик электронной почты должно прийти письмо от нашего адреса с доменом yandex.ru. Если посмотреть в заголовки, оно должно было быть отправлено через серверы Яндекса:
Рассмотрим некоторые проблемы, с которыми можно столкнуться во время выполнения работ.
Данную ошибку можно увидеть в логе сервера. При этом, почта не уходит через промежуточный почтовый сервер.
Причина: для работы с hash используется компонент Berkeley DB (BDB). Его лицензию поменяла компания Oracle, поэтому некоторые сборки Postfix отказались от данного компонента в пользу lmdb.
Решение: в конфигурационном файле postfix необходимо заменить все:
hash:
на
lmdb
:
После перезагрузить postfix:
systemctl restart postfix
Данные материалы также могут оказаться полезными:
1. Настройка почты GMAIL и Яндекс для подключения по IMAP или POP3 .
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…