来自Windows的SMTP HELO命令给出500命令无法识别的错误,从Linux返回相同的命令返回Hello

我们有一个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检查,我们按照本指南来禁用它。