← RFC Reference

RFC 8314: 平文は廃止予定と見なされる

Standards Track Transport Security Published March 2026
ELI5: 長年にわたり、メールクライアントはクリアテキストポートでサーバーに接続してから、暗号化への「アップグレード」をリクエストしていました(STARTTLS)。これは満員の部屋でスピーカーフォンで電話を始めて、その後「プライベートラインに切り替えよう」と囁くようなものです。RFC 8314は次のように述べています:最初からプライベートラインで始めてください。最初のバイトからTLSで接続してください—アップグレードステップなし、盗聴のための隙間なし。

これが存在する理由

メールは歴史的にクライアント・ツー・サーバー通信に3つの平文ポートを使用してきました:

ポート プロトコル 用途
25 SMTP サーバー間リレー
143 IMAP メールボックスアクセス
110 POP3 メールボックスアクセス
587 Submission クライアントメッセージ送信

4つすべて平文接続で開始されます。STARTTLSは、これらの接続をストリーム中盤でTLSにアップグレードするために追加されました。しかし、STARTTLSには根本的な弱点があります:

RFC 8314は、これらの平文接続をメール送信とメールボックスアクセスで廃止予定と宣言し、暗黙的TLSを代わりとして義務付けます。

仕組み

暗黙的TLS対STARTTLS

STARTTLS(古い方法): 平文ポートに接続、平文でグリーティングを交換、STARTTLSコマンドを送信、TLSをネゴシエート、その後暗号化セッションを続行します。

-- ポート587(送信)でのSTARTTLS --
220 mail.example.com ESMTP          ← 平文グリーティング
EHLO client.example.com             ← 平文
250-mail.example.com                ← 平文
250-STARTTLS                        ← 攻撃者がこの行を削除できます
250 OK
STARTTLS                            ← 平文
220 Go ahead                        ← 平文
-- ここでTLSハンドシェイクが発生します --
EHLO client.example.com             ← 現在は暗号化
AUTH PLAIN dXNlcjpwYXNz            ← 暗号化(安全)

暗黙的TLS(RFC 8314の方法): 専用のTLSポートに接続します。TLSハンドシェイクは接続時の最初の処理です。平文フェーズはまったくありません。

-- ポート465(送信)での暗黙的TLS --
-- 接続時にTLSハンドシェイクが即座に発生します --
220 mail.example.com ESMTP          ← 最初のバイトから暗号化
EHLO client.example.com             ← 暗号化
AUTH PLAIN dXNlcjpwYXNz            ← 暗号化

新しいポート割り当て

サービス 旧(STARTTLS) 新(暗黙的TLS) IANA名
メッセージ送信 587 465 submissions
IMAP 143 993 imaps
POP3 110 995 pop3s

ポート465は複雑な歴史を持ちます。1990年代後半に「SMTPS」で割り当てられ、その後STARTTLSに有利に無効化されました。RFC 8314は暗黙的TLS送信用にsubmissions(sに注意)として再割り当てします。今回は公式で永続的です。

ポート25について?

ポート25はサーバー間リレー用であり、クライアント送信ではありません。RFC 8314はポート25の動作を変更しません。サーバー間SMTPはオポチュニスティックSTARTTLSを使用し続け、MTA-STSまたはDANEが強制を提供します。この区別は重要です: クライアントは認証情報で認証し(保護する必要がある)、サーバーはDNS、DKIM、SPFを介して認証します。

重要な技術詳細

TLSバージョン要件

RFC 8314はTLS 1.2以降を要求します。TLS 1.0および1.1はRFC 8996で非推奨になります。実際には、TLS 1.2の最小値を要求し、TLS 1.3を推奨する必要があります。

証明書検証

暗黙的TLSでは、クライアントは標準的なWeb PKIルールを使用して、サーバー証明書を予期されたホスト名に対して検証する必要があります。これはSTARTTLSの時代と大きく異なり、多くのクライアントがどの証明書でも受け入れました。証明書は以下を満たす必要があります:

サービスディスカバリ用のSRVレコード

RFC 8314は、SRVレコード経由の自動クライアント設定用にRFC 6186と連携します:

; 暗黙的TLS送信(RFC 8314 + RFC 6186) _submissions._tcp.example.com. IN SRV 0 1 465 mail.example.com. ; 暗黙的TLS IMAP _imaps._tcp.example.com. IN SRV 0 1 993 mail.example.com. ; 暗黙的TLS POP3 _pop3s._tcp.example.com. IN SRV 0 1 995 mail.example.com.

クライアント設定

SMTP送信を統合するアプリケーション開発者向け:

# Python例: ポート465での暗黙的TLS
import smtplib

# 正しい: SMTP_SSLは直ちにTLSで接続します
with smtplib.SMTP_SSL('mail.example.com', 465) as smtp:
    smtp.login('user', 'password')
    smtp.send_message(msg)

# 回避: ポート587でのSTARTTLS(レガシー)
# with smtplib.SMTP('mail.example.com', 587) as smtp:
#     smtp.starttls()
#     smtp.login('user', 'password')

よくある間違い

配信可能性への影響

Related RFCs