web-dev-qa-db-ja.com

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コマンドを試すことで、この例外のトラブルシューティングを開始しました。 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はtelnetコマンドを実行したIPアドレスを置き換えていますが、アスタリスクはnot何かを難読化しています-それがまさにコマンド出力です)

ただし、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サーバーの間にプロキシはありません。

2
Nathan Jones

これはファイアウォールの問題であることがわかりました。シスコのファイアウォールはESMTP検査を実行するように設定されており、 このガイド に従って無効にしました。

3
Nathan Jones