20.10. Применение smtp-auth для аутентификации Postfix на другом сервере

Проблема

Требуется организовать пересылку почты с сервера SMTP вашего поставщика услуг Интернета, но для этого необходимы имя и пароль. В вашей системе механизм smtp-auth уже настроен и работает для пользователей.

Решение

Для начала создайте или отредактируйте файл /etc/postfix/sasl_passwd и сохраните в нём имя пользователя и пароль, которые вам предоставил ваш поставщик:

mail.tuxcomputing.com carla:sekritword

Очень важно защитить этот файл, поскольку он содержит конфиденциальные данные. Ограничьте доступ к файлу, изменив его права:

# chown root:root /etc/postfix/sasl_passwd && chmod 600 /etc/postfix/sasl_passwd

Теперь необходимо преобразовать файл sasl_passwd в хешированный формат базы данных (DB), чтобы Postfix мог использовать его при подключении к SMTP-серверу:

# postmap hash:/etc/postfix/sasl_passwd

В результате будет создан файл /etc/postfix/sasl_passwd.db, который Postfix будет использовать для аутентификации. Убедитесь, что хеш-файл обновлён, если вы измените пароль или добавите новые записи.

Теперь добавьте строку в /etc/postfix/main.cf, чтобы указать Postfix использовать этот файл для аутентификации:

smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd

После того как вы внесли изменения, перезапустите Postfix для применения новой конфигурации:

# postfix reload

Комментарий

Файл /etc/postfix/sasl_passwd может содержать несколько записей для разных хостов, если вам требуется подключение к нескольким SMTP-серверам. Записи должны иметь формат сервер имя:пароль, например:

mail.tuxcomputing.com carla:sekritword
smtp.goodeats.com carla:sekritword
mail.saddles.net horselady:secritword

Если вам нужно подключаться к разным серверам или использовать несколько учётных записей на одном сервере, убедитесь, что каждая запись добавлена в файл sasl_passwd с точным именем SMTP-сервера, так как даже небольшая ошибка в имени может привести к сбоям при аутентификации.

Также убедитесь, что права доступа к sasl_passwd и sasl_passwd.db остаются строго ограниченными, поскольку утечка этих данных может скомпрометировать безопасность вашего сервера.

Дополнительно можно настроить параметры безопасности, такие как smtp_tls_security_level в main.cf, чтобы обеспечить использование шифрования при передаче данных на SMTP-сервер. Например:

smtp_tls_security_level = encrypt

Этот параметр указывает Postfix, что он должен использовать TLS для отправки почты, если это поддерживает сервер получателя. Также возможно указать smtp_tls_CAfile, чтобы задать файл сертификата, используемый для проверки подлинности сервера.

Кроме того, стоит рассмотреть использование параметра relayhost в main.cf, чтобы установить основной сервер, через который будет проходить вся почта:

relayhost = [mail.tuxcomputing.com]:587

Это гарантирует, что даже при изменении DNS-записей или других факторов вся почта будет пересылаться через указанный SMTP-сервер. Порт 587 в этом примере часто используется для аутентифицированной отправки почты и требует шифрования.

См. также

Описание параметров main.cf в /usr/share/doc/postfix/examples/; описание параметров аутентификации в /usr/share/doc/postfix/examples/sample-auth.cf.gz; разделы 20.7 и 20.9.