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).