SMTPサーバーがSSL対応かどうかを確認する最良の方法は何ですか?
追加質問:まだSSL対応でない場合、SSL対応にする方法を教えてください。
OSはCentOSです。
それは、SSLとTLSのどちらを意味するかによって異なります。
[〜#〜] ssl [〜#〜]は、TCP/465に専用のポートを持っています。それが存在するかどうかをテストする最良の方法は、SSLトリックをネゴシエートするOpenSSLのすばらしいs_clientを使用することです。
openssl s_client -connect localhost:465
サーバーがlocalhostにバインドされていない場合は、明らかにそれをIPまたはホスト名に置き換えます。
[〜#〜] tls [〜#〜]は、最初は通常のSMTPのように見えます。暗号化は、プレーンテキストプロトコルとの間でネゴシエートされます。 EHLO要求をサーバーに発行することにより、それが使用可能かどうかをテストできます。これにはNetcatまたはTelnetクライアントを使用できます。
$ nc -v localhost 25
localhost [127.0.0.1] 25 (smtp) open
220 mail.example.com ESMTP Exim 4.69 Fri, 11 Sep 2009 09:25:20 +0100
ehlo test
250-mail.example.com Hello localhost [127.0.0.1]
250-SIZE 10485760
250-PIPELINING
250-STARTTLS
250 HELP
重要な行は最後から2番目で、STARTTLS機能をアドバタイズします。
メールサーバーでSSL/TLSを有効にする方法を説明するには、使用しているメールパッケージを指定する必要があります。
これには簡単なツールがあります。あなたは彼らにメールを送り、彼らはたくさんの詳細で返信します:
CentOSを実行している場合は、おそらくSendmailを使用しています。 Sendmail-mcパッケージをインストールします。 /etc/mail/sendmail.mcの中には、TLSを調べるためのいくつかのディレクティブがあります。
dnl # Rudimentary information on creating certificates for sendmail TLS:
dnl # cd /usr/share/ssl/certs; make sendmail.pem
dnl # Complete usage:
dnl # make -C /usr/share/ssl/certs usage
dnl #
dnl define(`confCACERT_PATH', `/etc/pki/tls/certs')dnl
dnl define(`confCACERT', `/etc/pki/tls/certs/ca-bundle.crt')dnl
dnl define(`confSERVER_CERT', `/etc/pki/tls/certs/sendmail.pem')dnl
dnl define(`confSERVER_KEY', `/etc/pki/tls/certs/sendmail.pem')dnl
これが機能するようになったら、Sendmail over SSLを次のように有効にできます。
DAEMON_OPTIONS(`Addr=142.46.200.221, Port=465, Name=SSA, M=Eas')
ああ、それを正しく理解する前に、たくさんの時間をかけて遊んでください。
これを行ったとき、私はほとんど常にsendmailの3つのインスタンスを実行しなければなりませんでした。
それぞれに個別の設定ファイルがありました。最初の2つを両方のポートでリッスンする同じインスタンスとして実行する方法があるはずですが、正しく機能させることができませんでした。
十分に大きくなると、これらの異なるインスタンスが異なるマシンで実行される可能性があります。
私の考えでは、このページで与えられた答えは単に間違っています。
その理由は、SSL/TLS + SMTPには2つの異なる意味があるからです。
1つは、SSL/TLSでソケットをラップする場所です。サーバーが暗号化されていないトラフィックと暗号化されたトラフィックの両方を処理したい場合、この目的のために、トラフィックのタイプごとに1つずつ、合計2つのポートが必要です。慣例により、SMTPサーバーは通常、暗号化されていないトラフィックにはポート25を使用し、暗号化されたトラフィックにはポート465を使用します。 stunnelなどの外部ツールを使用すると、クライアントとサーバーの両方が実際のトラフィックが暗号化されたソケットを通過することを認識できないように、これを実際に実装できます。したがって、SMTPサーバーがSSL/TLSをサポートしていない場合でもこのアプローチを実装できますが、sendmailやpostfixなどのサーバーはこれをサポートしているため、外部ツールは必要ありません。
他のアプローチは [〜#〜] starttls [〜#〜] が使用されることです。これはSMTPプロトコルの拡張機能であるため、サーバーとクライアントの両方でサポートする必要があります。 STARTTLSを使用すると、サーバーは暗号化されたトラフィックと暗号化されていないトラフィックの両方を同じソケットで処理できます。つまり、両方にポート25を使用できます。 Danがこのページの他の場所で説明しているように、ポート25で接続してEHLO
コマンドを発行することにより、SMTPサーバーでSTARTTLSが有効になっているかどうかを確認できます。
SSLとTLSはどちらも単なる暗号化プロトコルであり、TLSはSSLの後継です。
こちら から情報を入手しました。
2つのアプローチの混乱は、SMTPサーバーが使用する用語によって加速されます。 Postfixのパラメータを考えてくださいsmtpd_tls_security_level
およびsmtpd_use_tls
および関連ドキュメント。これらのパラメータはSTARTTLS
ではなくTLS
を扱います。他のSMTPサーバーも、用語を混乱させる上で同様に優れた働きをします。