web-dev-qa-db-ja.com

SMTPサーバーがSSL対応かどうかを確認する最良の方法は何ですか?

SMTPサーバーがSSL対応かどうかを確認する最良の方法は何ですか?

追加質問:まだSSL対応でない場合、SSL対応にする方法を教えてください。

OSはCentOSです。

6
Randell

それは、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を有効にする方法を説明するには、使用しているメールパッケージを指定する必要があります。

16
Dan Carley

これには簡単なツールがあります。あなたは彼らにメールを送り、彼らはたくさんの詳細で返信します:

https://www.checktls.com/Perl/TestSender.pl

1
mlissner

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つのインスタンスを実行しなければなりませんでした。

  • tLSがポート587で有効になっていて、さまざまなSMTP-AUTH構成が設定されている(認証されたリモートユーザーが任意のメールを送信できるようにする)。
  • さまざまなSMTP-AUTH構成(同じ理由で、異なるクライアント(Microsoft Outlook "Express"に感謝))を使用してポート465でSSLが有効になっているもの、および
  • tLSが有効になっているがAUTHはなく、ロックされているため、有効なローカル受信者宛てのメールのみを受信します(リモート送信者は、TLSを好きなように使用できます)。

それぞれに個別の設定ファイルがありました。最初の2つを両方のポートでリッスンする同じインスタンスとして実行する方法があるはずですが、正しく機能させることができませんでした。

十分に大きくなると、これらの異なるインスタンスが異なるマシンで実行される可能性があります。

0

私の考えでは、このページで与えられた答えは単に間違っています。

その理由は、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サーバーも、用語を混乱させる上で同様に優れた働きをします。

0
unixhacker2010