Найти в Дзене

Отправка системной почты через внешний почтовый сервер

В Linux системах вы будете постоянно сталкиваться с необходимостью отправки почты системных пользователей внешнему получателю. Исторически для этих целей был предназначен Sendmail – старейший MTA – агент отправки почты. В современных системах Sendmail обычно не используется и является ссылкой на другие почтовые агенты, например, Postfix. Но реалии сегодняшнего дня таковы, что настройка собственного SMTP-сервера на служебных серверах не имеет никакого смысла. Требования к добросовестному отправителю почты сегодня весьма велики, и ваш отправитель скорее всего попадет в спам у всех публичных и непубличных почтовых сервисов. Можно, конечно, настроить все правильно, но это достаточно затратно и неоправданно для рабочих серверов. Поэтому более универсальным решением будет использовать внешние почтовые службы, публичные или собственные. Для этого нам нужно будет передать системную почту специальному почтовому клиенту (MUA), который, с одной стороны, будет имитировать стандартный Sendmail,

Отправка системной почты через внешний почтовый сервер

В Linux системах вы будете постоянно сталкиваться с необходимостью отправки почты системных пользователей внешнему получателю. Исторически для этих целей был предназначен Sendmail – старейший MTA – агент отправки почты.

В современных системах Sendmail обычно не используется и является ссылкой на другие почтовые агенты, например, Postfix.

Но реалии сегодняшнего дня таковы, что настройка собственного SMTP-сервера на служебных серверах не имеет никакого смысла. Требования к добросовестному отправителю почты сегодня весьма велики, и ваш отправитель скорее всего попадет в спам у всех публичных и непубличных почтовых сервисов.

Можно, конечно, настроить все правильно, но это достаточно затратно и неоправданно для рабочих серверов. Поэтому более универсальным решением будет использовать внешние почтовые службы, публичные или собственные.

Для этого нам нужно будет передать системную почту специальному почтовому клиенту (MUA), который, с одной стороны, будет имитировать стандартный Sendmail, а на самом деле работать в роли почтового клиента, отправляя почту через внешние сервера.

Одним из таких приложений является SSMTP, который прозрачно заменяет sendmail и позволяет отправлять системную почту через внешний почтовый сервер.

Установим его:

apt install ssmtp mailutils

Затем откроем файл /etc/ssmtp/ssmtp.conf и приступим к редактированию параметров, благо их немного.

Сначала укажем получателя для системной почты (все пользователи с идентификаторами < 1000):

root = admin@examlpe.com

Если вы не хотите выполнять перенаправление, то оставьте эту опцию пустой.

Разрешим изменять отправителя в поле From, для этого раскомментируйте и приведите к следующему виду опцию:

FromLineOverride=YES

Если этого не сделать, то система будет отправлять письма от имени root@hostname, которые будут отклоняться почтовым сервером.

В некоторых случаях вам потребуется правильно указать в опции hostname имя хоста, желательно FQDN, но в большинстве случаев все работает с автоматически подставленным туда значением.

Это были общие параметры, а теперь настроим работу с почтовыми службами.

В общем виде настройка выглядит так:

mailhub=smtp.example.com:587

AuthUser=my_account@example.com

AuthPass=mY_pa$$word_1

UseTLS=YES

UseSTARTTLS=YES

TLS_CA_File=/etc/pki/tls/certs/ca-bundle.crt

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

Теперь создадим алиасы, чтобы системные пользователи могли отправлять почту через ssmtp. Для этого откроем /etc/ssmtp/revaliases и внесем туда следующую строку:

root:my_account@example.com:smtp.example.com:587

Это означает что пользователю root соответствует аккаунт my_account@example.com на сервере smtp.example.com:587 и отправку почты следует производить через него.

Секций mailhub в конфигурационном файле может быть несколько, и разные пользователи могут отправлять почту через разные системные записи.

Для проверки выполните:

echo "Test" | mail -s "Test" admin@example.com

После чего вы должны получить на указанную почту тестовое письмо.

В случае ошибки полезно будет выполнить отладку с получением логов обмена с почтовым сервером, для этого немного изменим команду отправки почты:

echo "Test" | ssmtp -v -s "Test" admin@example.com

Теперь весь обмен с сервером как на ладони, что позволяет быстро найти и исправить возможные ошибки настройки.