У нас есть веб-приложение Java, которое должно рассылать электронные письма нашим пользователям, и я получаю эту ошибку Java, когда эти письма пытаются выйти:
javax.mail.MessagingException: Could not connect to SMTP host: hostname.example.com, port: 25, response: 421
Я начал устранять неполадки этого исключения, попробовав некоторые команды SMTP через telnet на наш sendmail
сервер. Я вижу странные расхождения между тем, как он взаимодействует с сервером Linux и Windows Server.
В Linux я могу запускать:
telnet hostname.example.com 25
и результат:
220 ******************************************************************************************************************************************************************************
HELO hostname.example.com
250 hostname.example.com Hello [xxx.xxx.xxx.xxx], pleased to meet you
(xxx.xxx.xxx.xxx заменяет IP-адрес, который я запустил telnet
команда из, но звездочки не что-либо запутывать - это именно то, что выводит команда)
Однако на Windows Server, в той же подсети, vlan, брандмауэр Windows отключен, я получаю следующее:
telnet hostname.example.com 25
дает мне:
220 *********************************************************************************************************************************************************
********************
HELO hostname.example.com
500 5.5.1 Command unrecognized: "XXXX XXXXXXXXXXXXXXXXXXX"
(ни *
или X
были запутаны в выводе выше - это именно то, что выводит команда)
Между клиентами Linux / Windows и клиентом нет прокси. sendmail
сервер.
Оказывается, это проблема брандмауэра. Наш межсетевой экран Cisco был настроен на выполнение проверки ESMTP, и мы следовали это руководство чтобы отключить его.