20.5. Отправка интернет-почты

Проблема

Как настроить Postfix для отправки интернет-почты? Сервер настроен, но почта почему-то не отправляется. Это распространённая проблема, особенно если интернет-провайдер требует дополнительных настроек или аутентификации для SMTP.

Решение

Задача настройки Postfix на отправку почты через Интернет стала сложнее из-за борьбы со спамом, поэтому сегодня к серверам предъявляются строгие требования по аутентификации. Если ваш интернет-провайдер не требует аутентификации SMTP, вы можете использовать его сервер для пересылки исходящей почты.

Для этого нужно включить директиву relayhost в конфигурационном файле /etc/postfix/main.cf. Эта директива указывает Postfix, через какой сервер пересылать почту. Для настройки откройте файл main.cf в текстовом редакторе и добавьте строку, где isp.smtpserver.com замените на SMTP-сервер вашего провайдера:

relayhost = isp.smtpserver.com

Используйте точное название сервера SMTP, указанное в информации от вашего интернет-провайдера.

Возможны дополнительные параметры настройки, в зависимости от требований вашего провайдера. Если для доступа к SMTP-серверу требуется аутентификация, обратитесь к разделу 20.7, где описано, как настроить Postfix для работы с SMTP-аутентификацией. Также может потребоваться указание портов, если провайдер использует нестандартные порты для SMTP.

Чтобы проверить настройки и перезапустить Postfix, выполните следующую команду:

sudo systemctl restart postfix

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

echo "Это тестовое сообщение" | mail -s "Тест" your-email@example.com

Если почта не отправляется, можно проверить логи Postfix для поиска возможных ошибок. Логи хранятся в файле /var/log/mail.log (или /var/log/maillog в некоторых системах). Введите следующую команду, чтобы просмотреть последние записи в логе:

tail -f /var/log/mail.log

Ошибки могут возникать по разным причинам, включая неверные настройки DNS или блокировку порта 25 вашим интернет-провайдером. В этом случае попробуйте указать другой порт для relayhost:

relayhost = [isp.smtpserver.com]:587

Порт 587 часто используется для SMTP с аутентификацией и является менее подверженным блокировке со стороны провайдеров.

В случае сложностей можно настроить Postfix на работу с более продвинутыми параметрами. Например, указание параметра smtp_tls_security_level поможет защитить ваши сообщения от перехвата:

smtp_tls_security_level = encrypt

Эта настройка заставит Postfix использовать шифрование при отправке писем через SMTP, если сервер-получатель поддерживает TLS. Для включения поддержки TLS необходимо также указать пути к сертификатам:

smtp_tls_cert_file = /etc/ssl/certs/your-cert.pem
smtp_tls_key_file = /etc/ssl/private/your-key.pem

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

Также убедитесь, что у вас настроены правильные DNS-записи для вашего домена, включая SPF и DKIM, которые помогают почтовым системам идентифицировать ваш сервер как надёжный. Эти записи особенно важны для обеспечения доставки ваших сообщений и избегания попадания в папку «Спам».

Для проверки DNS-записей используйте утилиты dig или nslookup:

dig +short txt yourdomain.com

Эта команда отобразит TXT-записи, включая SPF и DKIM, если они настроены.

См. также

Раздел 20.7; описание Postfix (/usr/share/doc/postfix/html/index.html).