← RFC Reference

RFC 8689: SMTP TLS必須オプション

Standards Track Transport Security Published March 2026
ELI5: 通常のメール暗号化は、宅配業者に「利用可能であれば装甲トラックを使ってください」と頼むようなものです。装甲トラックが忙しければ、宅配業者は肩をすくめて普通のバンを使います。REQUIRETLSは封筒に押された「装甲トラック以外は配達するな」というスタンプです。メッセージは暗号化されていない移動よりも跳ね返ることを選びます。

なぜこれが存在するのか

サーバー間のメール暗号化(STARTTLS経由)はデフォルトで機会的です。受信サーバーがTLSをサポートしていない場合、またはman-in-the-middleがSTARTTLS機能をストリップした場合、ほとんどの送信サーバーは平文配信にフォールバックします。メッセージは配信されますが、暗号化なしです。

MTA-STSDANEなどのテクノロジーはドメインレベルでこの問題に対処します。受信ドメインが「我々へのすべてのメールはTLSを使用する必要があります」と宣言できます。しかし、それらは受信側のポリシーです。送信側は「このメッセージはすべてのホップでTLSが必要」と言う方法がありませんでした。

RFC 8689はこのギャップを2つの補完的なメカニズムで埋めます:

動作方法

REQUIRETLS SMTP拡張

送信側はSMTP トランザクション中にMAIL FROMコマンドにパラメーターとしてREQUIRETLSを追加して意図を通知します:

# サーバーがEHLOでREQUIRETLSサポートを通知 S: 220 mx.example.com ESMTP C: EHLO sender.example.org S: 250-mx.example.com S: 250-STARTTLS S: 250-REQUIRETLS S: 250 OK # 最初にTLSにアップグレード C: STARTTLS S: 220 Go ahead # ... TLSハンドシェイクと証明書検証 ... C: EHLO sender.example.org S: 250-mx.example.com S: 250-REQUIRETLS S: 250 OK # REQUIRETLSフラグ付きで送信 C: MAIL FROM:<alice@example.org> REQUIRETLS S: 250 OK C: RCPT TO:<bob@example.com> S: 250 OK

各ホップでの動作

リレーサーバーがREQUIRETLSフラグ付きのメッセージを処理するとき、転送前にこれらのルールを実行する必要があります:

  1. TLSは必須です。 次のホップへの接続はTLSを使用する必要があります。次のサーバーがSTARTTLSをサポートしていない場合、メッセージは配信されず、バウンスします。
  2. 証明書検証が必須です。 次のホップのTLS証明書は有効で、サーバーホスト名と一致する必要があります(DANE/TLSAまたはWeb PKI経由)。自己署名証明書またはホスト名が一致しない証明書はバウンスを引き起こします。
  3. REQUIRETLSフラグは伝播します。 リレーは次のホップもこの拡張をサポートする場合、REQUIRETLSパラメーターを次のホップに渡す必要があります。次のホップがREQUIRETLSをサポートしない場合、リレーはDANEまたはMTA-STSを通じてTLSを検証できれば配信できます。

TLS-Requiredヘッダー

MSAを経由して送信し、SMTPパラメーターを直接制御しない送信側のために、TLS-Requiredヘッダーは同じシグナルを提供します:

TLS-Required: No ; 待って、「No」は「TLSを必須としない」という意味? ; 正しいです。ヘッダーには2つの値があります: ; TLS-Required: No → REQUIRETLSをオプトアウト ; (通常の機会的TLSを使用) ; ヘッダーがない場合は通常の動作です。 ; REQUIRETLSエンベロープフラグが肯定的なシグナルです。

TLS-Required: Noヘッダーは特にオプトアウトメカニズムとして設計されています。これは送信MTA に「通常このメッセージにREQUIRETLSが適用される場合でも(例えば、ドメイン全体のポリシーのため)、この特定のメッセージに対しては強制しないこと」を伝えます。これはパスワードリセットや通知など、配信が暗号化の保証よりも重要なメッセージに役立ちます。

バウンス動作

REQUIRETLSが配信を防ぐと、送信サーバーは非配信報告(バウンス)を生成します。バウンス自体もTLS経由で送信される必要があります。REQUIRETLSはDSN(配信状態通知)メッセージにも適用されます。バウンスをセキュアに配信できない場合、元のメッセージに関する情報の漏洩を回避するために平文で送信されるのではなく、サイレントにドロップされます。

# 次のホップはTLSをサポートしない。REQUIRETLSが配信を防ぐ C: EHLO relay.example.org S: 250-mx.recipient.com S: 250 OK # STARTTLSがアナウンスされていない。REQUIRETLSで配信できない # リレーはalice@example.orgへのバウンスを生成: # 550 5.7.30 REQUIRETLS support required but not available

主要な技術詳細

MTA-STSとDANEとの関係

メカニズム ポリシー設定者 スコープ 検証方法
MTA-STS 受信ドメイン ドメインへのすべてのメール Web PKI(HTTPSフェッチ)
DANE 受信ドメイン ドメインへのすべてのメール DNSSEC + TLSAレコード
REQUIRETLS 送信サーバー/ユーザー メッセージごと 各ホップでのDANEまたはMTA-STS

REQUIRETLSは競争ではなく補完的です。MTA-STSとDANEは受信ドメインのインバウンドメールを保護します。REQUIRETLSは特定のアウトバウンドメッセージを保護します。REQUIRETLSを持つメッセージは各ホップでDANEまたはMTA-STSを使用して検証されます。どちらもホップで使用できない場合、配信は失敗します。

TLSバージョン要件

REQUIRETLSはTLS 1.2以降が必要です。TLS 1.0または1.1を使用する接続はこの要件を満たしません。これはRFC 8996の古いTLSバージョンの廃止予定と一致しています。

拡張ステータスコード

コード 意味
5.7.30 REQUIRETLSサポートが必須だが次のホップで利用できない
5.7.31 REQUIRETLSを実行できない(例えば、次のホップの証明書が無効)

一般的な誤り

配信可能性への影響

Related RFCs