← RFC Reference

MTA-STS — メール転送エージェント厳密トランスポートセキュリティ

Standards Track Transport Security Published March 2026
ELI5: 施錠されたメールボックスに手紙を送ることを想像してください。ただし、誰かが本物の鍵を偽物と入れ替えてあなたのメールを読むことができます。MTA-STSは「私は常に本物の鍵を使用しています。鍵がおかしく見える場合は配信しないでください」という看板を発表するようなものです。これは攻撃者がメールサーバーを騙して暗号化なしでメールを送信させるのを防ぎます。

これが存在する理由

SMTPは電子メールが平文で送信されていた時代に設計されました。STARTTLS (RFC 3207)はオプションの暗号化を追加しましたが、致命的な欠陥があります。それは機会主義的です。送信サーバーが「TLSをサポートしていますか?」と尋ね、アクティブなネットワーク攻撃者はその応答を単に削除し、平文へのダウングレードを強制できます。送信サーバーは「このサーバーはTLSをサポートしていない」と「攻撃者がTLSオファーを削除した」の違いを知る方法がありません。

MTA-STSはドメイン所有者がポリシーをパブリッシュすることで這い問題を解決します — DNSではなくHTTPSで — 「私のメールサーバーは常に有効な証明書を持つTLSをサポートしています。安全な接続を確立できない場合は、配信を拒否してください」と宣言します。ポリシーはHTTPS(それ自体が独自の証明書信頼チェーンを持つ)を経由して取得されるため、アクティブな攻撃者はそれを偽造または抑制することはできません。

動作方法

MTA-STSは受け取るドメインから2つのことを要求します:

  1. DNSTXTレコード _mta-sts.example.comでポリシーが存在することを通知し、キャッシュバスティング用のバージョン識別子を含みます。
  2. HTTPS で配信されるポリシーファイル https://mta-sts.example.com/.well-known/mta-sts.txtで実際のポリシーを宣言します。

ステップ1: DNSレコード

MTA-STSポリシーをアドバタイズするためにTXTレコードをパブリッシュします:

_mta-sts.example.com. IN TXT "v=STSv1; id=20240101T000000Z"

idフィールドは不透明な文字列です。送信サーバーはポリシーをキャッシュし、idが変わると再取得します。タイムスタンプまたは増加するカウンターを使用してください。

ステップ2: ポリシーファイル

https://mta-sts.example.com/.well-known/mta-sts.txtでポリシーをホストします。HTTPSの証明書はmta-sts.example.comに対して有効である必要があります。

version: STSv1
mode: enforce
mx: mail.example.com
mx: backup.example.com
mx: *.example.net
max_age: 604800

ポリシーフィールド

フィールド 説明
version STSv1である必要があります。
mode enforce(失敗時に拒否)、testing(配信しますがレポート)、またはnone(無効化)。
mx 許可されたMXホスト名。最左ラベルのみワイルドカード許可(例:*.example.com)。
max_age 送信者がこのポリシーをキャッシュすべき期間(秒)。推奨:604800(1週間)以上。

送信サーバーが行うこと

  1. 受信者ドメインのMXレコードを検索します。
  2. キャッシュされたMTA-STSポリシーを確認するか、DNS _mta-sts TXTレコードが新規または変更された場合は取得します。
  3. MXホストに接続してSTARTTLSを開始します。
  4. MXサーバーのTLS証明書をポリシーのmxパターンに対して検証します。
  5. モードがenforceでTLSが失敗または証明書が一致しない場合:配信しないでください。メッセージをキューに入れて後で再試行します。

主要な技術的詳細

DNSSECの代わりにHTTPSを使う理由

DNSSECのデプロイメントは限定的なままです。HTTPSは広く展開されているWeb PKI(認証局インフラストラクチャ)を活用します。Webの証明書を取得できるすべてのドメインはMTA-STSを使用できます — DNSSECは不要です。これは、DNSSECを必要とするDANE (RFC 7672)とMTA-STSの主要な違いです。

最初の使用を信頼する(TOFU)

MTA-STSはTOFUモデルに従います。送信者が初めてポリシーに遭遇するとき、DNS と HTTPS応答を信頼する必要があります。その後、キャッシュされたポリシーはmax_ageが期限切れになるまでダウングレードから保護します。攻撃者は初期フェッチ中にHTTPSとDNSの両方を同時に危険にさらす必要があります — はるかに難しい攻撃です。

テストモード

mode: testingで開始してください。このモードでは、送信サーバーはTLS検証が失敗してもメールを配信しますが、enforceに切り替える前に問題を特定できるようにTLS-RPT (RFC 8460)レポートを生成します。

デプロイメントの例

example.comの完全なMTA-STS設定:

DNSレコード

; MTA-STSポリシーシグナル _mta-sts.example.com. 300 IN TXT "v=STSv1; id=2024061501" ; TLSレポートエンドポイント(RFC 8460) _smtp._tls.example.com. 300 IN TXT "v=TLSRPTv1; rua=mailto:tls-reports@example.com" ; MXレコード(ポリシーmxラインと一致する必要があります) example.com. 300 IN MX 10 mail.example.com. example.com. 300 IN MX 20 backup.example.com.

ポリシーファイル

# https://mta-sts.example.com/.well-known/mta-sts.txt で配信
version: STSv1
mode: testing
mx: mail.example.com
mx: backup.example.com
max_age: 86400

TLS-RPTレポートが問題がないことを確認したら、modeenforceに変更し、max_ageを604800以上に増やします。

一般的なミス

配信可能性への影響

MTA-STSは直接受信箱の配置を改善しません — 受信者のメールを傍受から保護します。しかし、それには間接的な配信可能性の利点があります:

Related RFCs