SMTPクライアントは、明示的SSLと暗黙的SSLのどちらを使用するかをどのように決定しますか

StackOverflow https://stackoverflow.com/questions/803899

  •  03-07-2019
  •  | 
  •  

質問

SSL / TLSをサポートするほとんどのメールクライアントは、SSLを有効にするかどうかをユーザーに言うだけです。ユーザーはExplicit&について何も知る必要はありません。暗黙的なSSLとそれらの違い。

では、メールクライアントはどのタイプのSSLを使用するかをどのように決定しますか?デフォルトのポート番号に基づいていますか? 1つだけを試し、次にもう1つを試しますか?

役に立ちましたか?

解決

メールクライアントは、 ClientHello メッセージでSSLハンドシェイクを開始する責任があるため、接続時に暗黙的なSSLが使用されているかどうかを知る必要があります。これを決定する方法は、クライアント次第です。ポート番号は素晴らしいヒントですが、一部のUIには、標準の(保護されていない)ポート番号が使用されている場合でも強制するチェックボックスがあります。

セキュアメール用のIANA登録ポート番号がありますが、ISPによっては他のポートを使用する場合があります。

  • IMAP / SSL:993
  • POP3 / SSL:995

SMTP / SSLはしばしばポート465で提供されますが、これは登録されておらず、SMTPエージェントが明示的なSSLのサポートを広くサポートしているため、あまり一般的ではありません。

明示的なSSLのサポートは、プロトコル固有のネゴシエーションを使用してサーバーによってアドバタイズできます。たとえば、クライアントがSMTPサーバーに接続し、EHLOコマンドを発行すると、サーバーはその機能をリストします。これには、STARTTLSコマンドのサポートが含まれる場合があります。

他のヒント

ポート465は商用メールサーバーで非常に一般的であり、非常に頻繁に使用されます。ほとんどの場合、暗黙的なSSLに使用されます。このポートにtelnetで接続すると、メールサーバーと通信する前に最初にSSL接続を設定する必要があるため、タイムアウトが発生します。したがって、タイムアウトは、暗黙的なSSL接続がある最初の手がかりになる可能性があります。 SSL接続以外の接続は許可されていないため、EHLOを使用して結果を返すことはできません。また、暗黙のSSLを実行しているSMTPサーバーに単純に接続するのではなく、応答せずに接続をドロップするだけです。それはそれがすることになっているものです。明示的なSSLでは、最初に接続を許可してから、SSLをセットアップします。そして、はい暗黙のSSLが頻繁に使用されます。欠点は、RFC規格の実装方法が明確ではないため、暗黙のSSLが減価償却されていると見なされている場合でも、さまざまな開発者がさまざまな方法で設定することです。

SMTP over SSLをサポートするほとんどのクライアントは、暗号化されていない接続で開始し、HELOではなくEHLOを発行すると考えています。前者には追加のフラグ応答があり、その1つはサーバーがSTARTTLSコマンドをサポートしているかどうかを示します。その場合、クライアントはSTARTTLSを使用し、その時点からSSLを使用できます。

例:

% telnet quack.kfu.com 25
220 quack.kfu.com ESMTP ready NO UCE
EHLO client
250-quack.kfu.com Hello client [xx.xx.xx.xx] (may be forged), pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 25000000
250-ETRN
250-AUTH PLAIN LOGIN
250-STARTTLS
250-DELIVERBY
250 HELP
starttls
220 2.0.0 Ready to start TLS
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top