Windows 中的 SMTP HELO 命令给出 500 命令无法识别错误,而 Linux 中的相同命令则返回 Hello

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 尝试一些 SMTP 命令来排除此异常sendmail。我发现它与 Linux 服务器和 Windows 服务器的交互方式存在奇怪的差异。

在 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

答案1

原来这是防火墙的问题。我们的思科防火墙设置为执行 ESMTP 检查,我们按照本指南来禁用它。

相关内容