我们有一个Java Web应用程序需要发送电子邮件给我们的用户,并且当这些电子邮件尝试出去时,我得到这个Java错误:
javax.mail.MessagingException: Could not connect to SMTP host: hostname.example.com, port: 25, response: 421
我开始通过telnet到我们的sendmail服务器尝试一些SMTP命令来解决这个exception。 我看到它与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正在replace我运行telnet命令的IP地址,但星号不会混淆任何东西 – 这正是命令输出的内容)
但是,在Windows Server上,在禁用Windows防火墙的同一子网上,vlan,我得到以下内容:
telnet hostname.example.com 25
给我:
220 ********************************************************************************************************************************************************* ******************** HELO hostname.example.com 500 5.5.1 Command unrecognized: "XXXX XXXXXXXXXXXXXXXXXXX"
(在上面的输出中, *或X都没有被混淆 – 这正是命令的输出)
在Linux / Windows客户端和sendmail服务器之间没有代理。
原来这是一个防火墙问题。 我们的思科防火墙被设置为执行ESMTP检查,我们按照本指南来禁用它。