(このブログ記事はこちらの英語版記事の翻訳になります。最新の記事ではないので内容がいくらか古いものであることをご了承ください)

 

MEGが平文テキストで電子メールを次のホップサーバに配送する際に、次のホップサーバへのSMTP接続をトラブルシュートする場合、MEG上のシェル(コマンドプロンプ ト)から "telnet <宛先SMTPサーバアドレス> 25" を実行し、EHLOやQUITなどの幾つかのSMTPコマンドを実施することが出来ます。このテストコマンドに250 等のSMTPレスポンスコードがターゲットのサーバから返ってきた場合に、SMTP接続はいくらか動作していることを判別できます。

 

しかし、MEGからTLSを使用して次のホップサーバに電子メールを配送する場合、telnet コマンドは十分では無いでしょう。何故なら、STARTTLS コマンド入力後のTLSネゴシエーションフェーズにおいてはバイナリファイルのやり取りも必要だからです。この目的を達成するためには、"openssl s_client" コマンドを代わりに使用することが出来ます。下記は典型的な使用例です:

openssl s_client -connect <宛先SMTPサーバアドレス>:<ポート番号> -starttls smtp

 

このコマンドで宛先のSMTPサーバアドレスの指定したポート番号に着信しTCP接続を確立し、SMTP接続において最初にEHLO コマンドを送信し、次にSTARTTLSコマンドを送り、TLSハンドシェイクメッセージと証明書を交換し、それからTLSの暗号化されたセッションを開始いたします。 そのプロンプトでの入力はTLSチャネルで宛先SMTPサーバに転送され、TLSチャネルで宛先サーバから応答が返ってきます。そのプロムプトは例えば下記の様に行われま す:

 

CONNECTED(00000003)
.. (中略) ..
---
250 OK

 

そして、EHLO, MAIL, そして RCPTなどのSMTPコマンド入力ができるようになります。宛先のSMTPサーバは 250 や452 などのSMTP応答コードをこちらに返してきます。このテストを終了させたい場合は、QUITを入力するか 最初に q で始まるフレーズを何でも入力致します。

TLSネゴシエーションが上手く行き、応答コード "250 OK" メッセージが返ってきたが、その後サーバから何も入力を返さない場合は "451 4.7.0 Timeout waiting for client input" のようなメッセージを結果的に返ってきますので、代わりに下記のコマンドを入力してみてください:

openssl s_client -connect <宛先SMTPサーバアドレス>:<ポート番号> -starttls smtp -crlf

 

前のコマンドとの違いは -crlf オプションだけです。

 

openssl s_client コマンドは、宛先SMTPサーバがどのSSL/TLS バージョンを許可できるか確認するために使用することが出来ます:

 

SSLv2の確認: openssl s_client -connect <宛先SMTPサーバアドレス>:<ポート番号> -starttls smtp -crlf -ssl2
SSLv3の確認: openssl s_client -connect <宛先SMTPサーバアドレス>:<ポート番号> -starttls smtp -crlf -ssl3
TLSv1の確認: openssl s_client -connect <宛先SMTPサーバアドレス>:<ポート番号> -starttls smtp -crlf -tls1
TLSv1.1の確認: openssl s_client -connect <宛先SMTPサーバアドレス>:<ポート番号> -starttls smtp -crlf -tls1_1
TLSv1.2の確認: openssl s_client -connect <<宛先SMTPサーバアドレス>:<ポート番号> -starttls smtp -crlf -tls1_2

 

SSLv2 の場合を例に挙げると、---250 OK を受信しない場合は、それなら宛先SMTPサーバはSSLv2を許可しないものとみなすことが出来ます。そのような場合、KB76671 に記述しているようなSSLv2を無効化を実施する、もしくはSSLv2を無効化するための下記のパッチバージョンをインストールする選択肢があります (KB79384 を参照ください):

  • MEG 7.6: 7.6.2 またはそれ以降
  • MEG 7.5: 7.5.2 またはそれ以降
  • MEG 7.0: 7.0.4 またはそれ以降

 

TLSv1.2に関しても上記と同様です。次のホップのSMTPサーバが TLSv1.2を許可するかどうか確認することが出来、KB78818 で記載されている通りの必要な手順を実施いただいて、TLSv1.2を無効化してください。

これで、TLSによる宛先SMTPサーバの期待された動作を確認することが出来ます。また、宛先SMTPサーバにメールの配送を試行する時のMEG上のネットワークトラフ ィックキャプチャとこの結果を比較することが出来ます。