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
サーバーの間にプロキシはありません。
これはファイアウォールの問題であることがわかりました。シスコのファイアウォールはESMTP検査を実行するように設定されており、 このガイド に従って無効にしました。