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.