技術解説 · 出典付きの回答
SMTPS(暗黙的TLS)とは
SMTPSの暗黙的TLSとは、接続直後にTLSハンドシェイクを行うことでSMTP通信を保護する方式です。平文のセッションとして始まるSTARTTLSとは異なり、SMTPSではSMTPコマンドをやり取りする前に接続が暗号化されている必要があります。
仕組み
暗黙的TLSの接続では、クライアントはサーバーとのTCP接続を確立します。通常はポート465を使います。サーバーはすぐにTLSハンドシェイクを待ち受けます。ハンドシェイクが失敗した場合や、クライアントが平文を送信しようとした場合、サーバーは接続を切断します。これにより、認証情報やメールの内容などの機密データが平文で送信されることは一切ありません。
STARTTLSとの比較
STARTTLSは明示的TLSであり、セッションはポート587または25で平文として始まります。クライアントはSTARTTLSコマンドを送信して、接続を暗号化にアップグレードします。SMTPSの暗黙的TLSではこのアップグレードの手順がないため、中間者がSTARTTLSコマンドを取り除いてセッションを平文に強制するダウングレード攻撃のリスクがなくなります。
送信者にとっての重要性
暗黙的TLSを使うと、トランザクションメールに対してより強力なセキュリティを保証できます。暗号化を通信の前提条件とすることで、誤って平文が漏れることを防ぎ、クライアントの設定もシンプルになります。開発者はSendHQの無料ツールを使って、メールの全般的な設定を確認し、インフラが現在のセキュリティ標準に沿っていることを確かめられます。
運用上の注意
多くのレガシーシステムは今もポート25や587に依存しています。SMTPSを設定する際は、クライアントライブラリがSTARTTLSではなくSSLまたはTLSモードを使うよう明示的に設定されていることを確認してください。ポート465でSTARTTLSを使うようクライアントを誤って設定すると、サーバーはTLSハンドシェイクを待っているのにクライアントは平文を送信するため、タイムアウトや接続のリセットが発生します。
実装例
典型的な実装では、SSL/TLSフラグを有効にして、ポート465でsmtp.example.comに接続するようSMTPクライアントを設定します。クライアントはTCPソケットを開始し、TLSハンドシェイクを行い、その後で初めてEHLOコマンドを送信してメール転送の処理を始めます。
よく寄せられる質問
SMTPSの暗黙的TLSにはどのポートが使われますか?
SMTPSの暗黙的TLSの標準ポートは465です。これはIANAに登録されており、最新のRFCでも安全なサブミッション用に推奨されています。
SMTPSはSTARTTLSとは違うものですか?
はい、SMTPSは暗黙的で、暗号化がすぐに始まります。STARTTLSは明示的で、平文として始まり、コマンドによって暗号化にアップグレードします。
明示的TLSではなく暗黙的TLSを選ぶ理由は?
暗黙的TLSは、安全な暗号化トンネルが先に確立されない限り通信を拒否するため、ダウングレード攻撃に対してより安全です。
一次情報源
- RFC 8314:SMTP以外のメールプロトコルにおける平文通信の扱い — RFC Editor
- サービス名およびトランスポートプロトコルのポート番号レジストリ — IANA