IMAP の STARTTLS コマンドが正確にどのように動作するか、送信時に何が起こるかを理解しようとしています。クライアントとしてログインプロセスの前に「STARTTLS」コマンドを送信し、「OK start TLSネゴシエーション」という応答を受信した後、お客様として変更される事項はありますか?さらに進む通信(例えば、要求と応答の形式、いくつかの追加情報など)?私は低レベルではなくAPIレベルについて話しています。
答え1
このSTARTLS
プロセスはクライアントとサーバーに暗号化された接続ネゴシエーションを開始するように指示するので、すべての追加データはTLS(SSL、Close Enough)暗号化されます。これにより、ユーザーがトラフィック(ユーザー名、パスワードなど)をスニッフィングするのを防ぐことができます。
これで、一部のサーバーは他のサービスを提供するように構成できます。たとえば、IMAPサーバーは通常の接続ではLOGINコマンドを許可しませんが、TLS暗号化接続では許可できます。
我々は違いを見ることができます。この例では、通常の IMAP 接続について以下を表示します。
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE STARTTLS LOGINDISABLED] Dovecot ready.
「LOGINDISABLED」部分を参照してください。
TLSを介して同じサーバーに接続する場合
* CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN
これで「AUTH」が利用可能になり、ログインを試すことができます。
IMAPは、このように動作する唯一のサービスではありません。たとえば、通常の接続のSMTPは次のようになります。
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
そしてTLSを使う
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
もう一度AUTH
新しいコマンドを使用できます。