Ошибка Postfix при отправке на Яндекс: lost connection with mx.yandex.ru
При попытке отправить письмо через Postfix в сторону почтового сервера Яндекса возникает критическая ошибка: lost connection with mx.yandex.ru[77.88.21.249] while receiving the initial server greeting. При этом отправка на Google (Gmail) работает без проблем. Рассмотрим основные причины и способы решения этой проблемы, особенно если Postfix запущен в контейнере Docker под управлением Mailu.
Почему возникает ошибка lost connection при отправке на Яндекс?
Ошибка lost connection while receiving the initial server greeting указывает на то, что сервер Яндекса разрывает соединение сразу после попытки установить связь. Это часто связано с проблемами DNS-записей, PTR-записей или настройками TLS. В вашем случае конфигурация smtp_tls_security_level = may и smtp_tls_wrappermode = no говорит о том, что Postfix пытается использовать STARTTLS, но не требует шифрования.
Проверка DNS и PTR записей
Яндекс предъявляет строгие требования к обратной DNS-записи (PTR). Убедитесь, что:
- PTR-запись для IP-адреса вашего сервера указывает на домен
mail.aralash-squad.ruилиaralash-squad.ru. Две PTR-записи - это нормально, но основная должна совпадать с именем хоста, с которого происходит отправка. - Запись MX настроена корректно:
MX @ → mail.aralash-squad.ru (priority 5). - SPF-запись:
v=spf1 mx ~all- этого достаточно, но убедитесь, что IP сервера входит в список разрешённых.
Настройка TLS и версии протокола
Яндекс может блокировать устаревшие версии TLS. В конфигурации Postfix (обычно /etc/postfix/main.cf) добавьте или измените:
smtp_tls_security_level = encrypt
smtp_tls_wrappermode = no
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1Параметр encrypt требует шифрования, что повышает шансы успешного соединения.
Проблемы с Docker и Mailu
Если Postfix работает внутри контейнера Mailu, проверьте:
- Сетевые настройки контейнера - убедитесь, что исходящие соединения на порт 25 (и 587 для submission) не блокируются.
- Файл
docker-compose.yml- параметрhostnameдолжен совпадать с вашим доменом (например,mail.aralash-squad.ru). - Логи Mailu:
docker logs mailu- ищите ошибки, связанные с TLS или DNS.
Альтернативные причины
Иногда ошибка вызвана временной блокировкой со стороны Яндекса. Проверьте, не занесён ли ваш IP в чёрный список (например, через DNSBL). Также убедитесь, что ваш сервер не использует динамический IP или не числится в публичных спам-базах.
Пошаговое решение
- Проверьте PTR-запись через команду
host <ваш IP>. Она должна возвращать ваш домен. - Обновите конфигурацию TLS в Postfix, как указано выше, и перезапустите сервис:
docker restart mailu. - Проверьте DNS с помощью
dig mx yandex.ruиnslookup mail.aralash-squad.ru. - Протестируйте отправку с помощью
swaksилиtelnet mx.yandex.ru 25.
Если после всех исправлений ошибка сохраняется, обратитесь в поддержку Яндекса для Business или проверьте логи Postfix: tail -f /var/log/mail.log.