У меня есть сервер Debian8, на котором запущен exim4, который отправляет исходящую почту через smarthost через smtp-сервер NameCheap mail.privateemail.com - или, по крайней мере, он его использует. После недавнего обновления сервер больше не принимает соединения через порт 25. Я перенастроил exim на использование порта 587, но не могу отправлять почту.
Проблема, по-видимому, возникает во время квитирования STARTTLS. Первоначальное соединение установлено успешно, сервер отправляет свой ответ 220, клиент exim отправляет свою команду ELHO, а сервер предлагает опцию 250 STARTTLS. В этот момент вместо ответа STARTTLS и установления безопасного соединения exim начинает отправлять заголовки сообщений. На это сервер отправляет 530 «Сначала необходимо выполнить команду STARTTLS», и попытка доставки сообщения прерывается. Вот фрагмент отладочной информации о принудительной доставке замороженного сообщения с помощью exim -d -M
:
Transport port=25 replaced by host-specific port=587
Connecting to mail.privateemail.com [198.54.122.60]:587 ... connected
waiting for data on socket
read response data: size=32
SMTP<< 220 PrivateEmail.com Mail Node
198.54.122.60 in hosts_avoid_esmtp? no (option unset)
SMTP>> EHLO efserver.hellonull.com
waiting for data on socket
read response data: size=22
SMTP<< 250-STARTTLS
250 OK
198.54.122.60 in hosts_require_tls? no (option unset)
198.54.122.60 in hosts_avoid_pipelining? no (option unset)
not using PIPELINING
198.54.122.60 in hosts_require_auth? no (option unset)
SMTP>> MAIL FROM:<>
waiting for data on socket
read response data: size=41
SMTP<< 530 Must issue a STARTTLS command first
ok=0 send_quit=1 send_rset=1 continue_more=0 yield=0 first_address is not NULL
SMTP>> QUIT
Раньше все работало на порту 25. Кроме того, я могу отправлять исходящую почту с помощью IceDove, настроенного на использование того же сервера, порта и STARTTLS. Может ли кто-нибудь объяснить, почему exim, похоже, игнорирует предложение STARTTLS с сервера?
Я рад сообщить, что проблема устранена. Проблема, по-видимому, связана с частной почтовой службой NameCheap. Я снова занялся этим сегодня, и после dpkg-reconfigure exim4-config
используя те же настройки, что и раньше, я могу отправлять исходящую почту через mail.privateemail.com:587. Мне не нужно было изменять какие-либо специальные параметры в конфигурации exim. SMTP-диалог показывает, что сервер privateemail.com теперь нормально отвечает на SMTP-соединение. Я предполагаю, что обновление от NameCheap решило проблему.
SMTP>> EHLO efserver.hellonull.com
SMTP<< 250-MTA-08.privateemail.com
250-PIPELINING
250-SIZE 81788928
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
SMTP>> AUTH PLAIN ********************************************
SMTP<< 235 2.7.0 Authentication successful
Вы можете исправить это, добавив hosts_require_tls
вариант со смарт-хостом в списке к вашей конфигурации. Это заставит Exim послать команду STARTTLS для установления соединения TLS. Однако hosts_avoid_tls
опция может переопределить эту настройку.
Вы можете попробовать использовать порт 465 (SSMTP). T Документировано, что он поддерживается для входящего трафика. Он поддерживает исходящий трафик. Я тестировал определение smarthost как example.com:ssmtp
вместо того example.com
.