
2026/07/06 22:02
DKIM2 と DMARC bis が実装されました
RSS: https://news.ycombinator.com/rss
要約▶
日本語訳:
サマリー:
2026 年 7 月 6 日に DKIM2 と DMARCbis の導入による電子メールセキュリティの進展があり、メッセージの転送時に頻繁に失敗してきた 20 年以上前の認証システムの刷新がなされました。以前は署名の破損やバウンス処理の不適切な対応などで知られていましたが、これらの新規格により静的チェックは検証可能な所有権の連鎖へと変化し、仲介者によるリレーが行われる際もメールが信頼されることを保証します。重要な改善として、柔軟性の向上とプライバシーの強化のために、剛直的なパブリックサフィックスリストに代わる動的 DNS ツリーウォークが採用され、報告形式も更新されています。Stal.mail サーバーは両方のプロトコルを完全に実装した初のサーバーとなり、即座の技術的準備完了を示しました。重要なのは、この進化は後方互換性を持つことであり、既存のレガシーレコードが新しいタグと並んで滑らかに機能し続けます。その結果、組織は強制移行なしに段階的に変更を採用できます。最終的には、送信者は配信成功率の大幅向上と誤検出の減少を、ユーザーはより正確なバウンスルーティングと失敗報告に対する厳格なプライバシーコントロールから恩恵を受けます。
サマリー・スケルトン
テキストが主に伝えていること(主要メッセージ)
電子メール認証エコシステムは 2026 年 7 月 6 日に DKIM2 と DMARCbis の規格導入により進化しており、これらは 20 年以上前のシステムの重要な制限事項に対処します。これらの新プロトコルはメッセージチェーンのセキュリティ強化、転送互換性の向上、ドメイン検証メカニズムの改善に焦点を当てています。
証拠・論理(こう言った理由)
DKIM2 は署名を静的スナップショットから検証可能な所有権の連鎖へと変え、メッセージ転送と信頼できるバウンス処理をサポートします。DMARCbis は静的パブリックサフィックスリストに動的 DNS ツリーウォークを取り入れ、プライバシーと拡張性の向上のため報告形式を更新することで認証を強化します。 Stalwart が両方の規格を完全に実装した初のメールサーバーとなり、その実用的な実現可能性と技術的準備完了を実証しました。
関連ケース・背景(文脈、過去の出来事、周囲の情報)
これらの更新は DKIM1 および DMARC(RFC 7489)などのレガシーシステムの上に構築されており、古いタグが単純に無視されることで既存システムが有効に維持されます。エコシステムは長年にわたり、転送時の署名破損や正確なポリシー執行を妨げる効果的なタグ設定など、様々な課題に直面してきています。
今後起こりうる可能性(テキストに記載されている今後の開発・予測)
業界は
p=rejectポリシーが署名ベースで機能し、 mailing list の誤検出を減らす未来へと移行しています。ユーザーは新しい XML ネームスペースを使用した集計レポートの改善、失敗報告に対するレートルミティングによる厳格なプライバシーコントロールから恩恵を受けることができます。
これへの影響(ユーザー/企業/業界)
送信者は「転送生存」機能から恩恵を受け、リレーされる際に認証されない状態にならず、配信成功率を大幅に向上させます。バックスカッター問題の解決により、バウンスメッセージが署名データに基づいて正しくルーティングされ、信頼できないヘッダーに基づくことがなくなります。 組織はレガシーレコードが新しい規格と並んで滑らかに機能し続けるため、強制移行なしに段階的に変更を採用できます。
本文
DKIM2 と DMARCbis の登場と Stalwart v0.16.12 での実装について
はじめに:電子メール認証の新たな一歩
2026 年 7 月、電子メール認証システムは長年にわたる静かな進化から大きな転換点を迎えました。DKIM2 と DMARCbis の二つの新しい規格が同時に発表され、インターネットのセキュリティ構造を根本的に再構築する準備が整いました。
新規度への要約
- DKIM2 (Draft -04): 従来の単一のコンテンツ署名から脱却。作者から最終受信者までのメッセージを追跡する「管理責任(チェーン・オブ・カストディ)」を実現し、転送による署名破断を解消しました。
- 復号攻撃での検証が不可能になります。
- バウンス通知の真正性を証明できるようになりました。
- DMARCbis (RFC 9989, RFC 9990, RFC 9991): 待ち望まれている DMARC の正式な後継規格です。
- 静的な**パブリックサフィックスリスト(PSL)**を、ライブの DNS トリーウォークに置き換えました。
- 過去に機能しなかったタグを廃止し、10 年間にわたる運用上の教訓を標準に統合しています。
これらの規格が重要である理由は、なりすまし(フィッシャー)攻撃を防ぐことにあります。銀行などのドメインを「From:」ヘッダーに使うことを防ぐため、老朽化していた従来の仕組みの刷新が必要です。
リリースのアナウンス: Stalwart v0.16.12 から、DKIM2 および DMARCbis が完全に対応しています。Stalwart はこれらを両方ともサポートする最初のメールサーバーです。
- ブラウザ上での検証可能:mail-auth playground により、インストール不要で署名・検証を実行できます。
DKIM2 の概要と変更点
DKIM とは
ドメインキー識別子付きメール(RFC 6376)が担うのは、「ドメインがそのメッセージについて責任を持つ」という保証です。
- 送信サーバーは秘密鍵で署名し、結果をヘッダーに固定します。
- 公開鍵は
に配置され、受信者はハッシュ計算により以下のことを検証できます。selector._domainkey.domain- メッセージが本当にそのドメインから来たものであること。
- 署名対象の部分が途中経過で変更されていないこと。
「このドメインがこのコンテンツを保証する」という有効な署名は、宛先や経由地などを含む情報を持ちません。ほぼ 20 年間、DKIM は電子メール認証の主要な要素でしたが、単独でのパスでは決定的な信頼にはならなかったため、DMARC が「人間が実際に見ているドメイン(From:ヘッダー)」に認証を紐付けるための「識別子整合性」ルールを追加する役割を果たしました。
DKIM1 の問題点
実運用において DKIM1 の署名は想像以上によく破損しており、以下の根本的な弱点がありました。
- 誰でも宛先になり得る(リプレイ攻撃): 署名は宛先ではなくコンテンツに紐づくため、正当なメッセージをキャプチャして数百万件の異なるアドレス宛てで再送すれば全て検証にパスします。
- 転送が silently で署名を破壊する: メーリングリストのタグ付けやゲートウェイによるリンク書き換えなど、途中経過でハッシュ値が変わり、失敗判定になります。検証者が「破損」と見分けることができないため悪用されます。
- 通過経路の記録がない: 「Received」ヘッダーは未認証であり偽造されやすいため、管理責任の連鎖を議論する手がかりがありません。
- ARC は不十分だった: 各ホップがその時点での状態を証明しましたが、多くの受信者が ARC のシールに信頼できなかったため、独立したオーバーレイとして機能しません。
- ヘッダー署名の不統一: 署名対象のヘッダーを選べるため、攻撃者に未署名のヘッダーを通す隙があるだけでなく、脆弱性が増幅されました。
- バウンスが危険: リターンパスに存在しないドメインを指定でき、「バックスキャター」と呼ばれる攻撃があり得ました。
- フィードバックの不規則さ: 標準的なフィードバックルートが存在せず、不整合が生じやすいものでした。
DKIM2 の仕組みと改善点
DKIM2 は機能していた部分は維持しつつ、以下の問題を一気解決します。署名が単なるコンテンツ宣言から、発信元から最終受信者まで追跡する「検証可能な管理責任(チェーン・オブ・カストディ)」の一環になります。
ヘッダーの分割とカウンター
従来の単一ヘッダーを 2 つの機能を持つヘッダーに分割します。
- Message-Instance ヘッダー: ある時点でのメッセージの状態を記述します(バージョン番号、暗号指紋、レシピ)。
- DKIM2-Signature ヘッダー: メッセージが実際に通過したエンベロープ(送信者/宛先)を記録し、署名します。
カウンターシステム:
- 署名数カウンター: ホップごとにカウント。
- リビジョン数カウンター: コンテンツが実際に変更された際のみ増分する。
- これにより、透明な転送ノードでもチェーンが維持され、変更履歴が追跡可能になります。
一つのメカニズムで全ての問題解決
少数のメカニズムだけでリスト上の問題を解決します。
| 問題 | DKIM2 の解決策 |
|---|---|
| リプレイ | エンベロープ(MAIL FROM/RCPT TO)を署名内へ含めることで対処。チェーンが整合しなくなるため。 |
| 転送破損 | 変更されたホップは、下流の検証者が元に戻せるよう**レシピ(Recipe)**を記録。全体を却退する必要なし。 |
| 管理責任の連鎖不足 | 各ホップは現在のスナップショットと前回の署名を包含し、作者から受信者までの改ざん耐性なシーケンスを形成。 |
| ARC の役割吸収 | ネイティブに統合。並行するヘッダーセットを持たず、既存の ARC-* ヘッダーは無視して移行可能。 |
| ヘッダー署名不整合 | 単一で固定された正規化と定義済みのハッシュスキームを使用し、推測を排除。 |
| バックスキャター | 記録された連鎖に沿ってバウンスをルーティングすることで防止。 |
| フィードバック | と フラグを通じた標準チャンネルを提供。 |
注意: DKIM2 は署名チェックの回数を減らすのではなく、増やす可能性があります(変更メッセージは各ホップで追加)。ただし、ドラフトでは最初に最も最近適用された署名を検証して停止するため、未変更メッセージは高速処理されます。
レシピ:メッセージを元に戻す仕組み
転送 survivability を実現するメカニズムです。検証者が現在のメッセージを以前の状態に戻せるように指示する小さな JSON オブジェクトで、
r= タグに base64 エンコードして埋め込まれます。
- ヘッダー処理 (
): 行またはヘッダーインスタンスのコピー ("h"
) またはリテラル値の挿入 (c
) を指定。d - 本文処理 (
): コピーする範囲を指定。"b"
の場合は再構築不可(機密消去など)を示す。null
番号付けルール:
- ヘッダー:下側から数える(最後の Subject が 1)。
- 本文:上側から数える(最初の行が 1)。
例:二つのホップを通ったメッセージ
アリスがノートンにメーリングリストを送信し、ホップ 2 で件名タグとフッターを追加されたケースです。
- ホップ 1(発信者): アリスが署名。
。Message-Instance: m=1- エンベロープ:
,mf=PGFsaWNlQGV4YW1wbGUuY29tPg==rt=PGxpc3RAbGlzdHMuZXhhbXBsZS5vcmc+
- エンベロープ:
- ホップ 2(リスト): リストがリビジョン。件名に
プレフィックス、フッター追加。[list]- レシピ適用:
{"h":{"subject":[{"d":["Trip report"]}]},"b":[{"c":[1,2]}]} - 検証者はこのレシピを適用し、現在のハッシュ値から元の状態 (
) を再構築。アリスの署名を検証可能になります。m=1
- レシピ適用:
このように、リストが件名を書き換えても、変更内容が明記されているため検証者が特定でき、悪意のある置き換えと無害なタグ付けを区別できます。
バウンスは独自の証明を持ちます
DKIM2 は「バックスキャター」問題を解決し、バウンス通知の真正性を保証します。
- 信頼しないヘッダー: 「Received」や「Return-Path」は無視され、権威ある戻り先アドレスは連鎖内の署名された
タグから再構築されます。mf= - DSN 宛先の決まりごと: DSN は番号の最大の DKIM2-Signature の
に宛てられなければなりません。mf= - 真正性の証明: バウンス自体が DKIM2 メッセージであり、埋め込まれた元のメッセージと検証可能な連鎖を持ちます。
- DSN の署名ドメインは最後の
と整合しているか。rt= - 返されたメッセージの最後の署名はシステム生成物か。
- 埋め込まれるメッセージは Message-Instance 指紋と検証されるか。
- DSN の署名ドメインは最後の
これら全ての条件を満たせば、バウンスは真正であると証明され、遅延バウンス(1 時間後のスパム判定など)でも安全に発信元へ通知できます。
DMARCbis の概要と変更点
2026 年 5 月、IETF は RFC 9989, RFC 9990, RFC 9991 を発行し、これをまとめて DMARCbis と呼びました。これにより DMARC は第一級のインターネット標準へと成長しています。
DMARC の復習と問題点
SPF と DKIM はエンベロープまたは署名ドメインを検証しますが、ユーザーが見る「From:」ドメインとは一致しない場合があります。これを埋めるのが DMARC です。しかし、RFC 7489(旧規格)には以下の弱点がありました。
- パブリックサフィックスリスト (PSL) の弱点: 静的なファイルに依存しており、更新頻度やバージョン管理が脆弱でした。
- pct タグの問題: 実際には 0 と 100 の二値しか機能せず、タグ自体がスイッチのようなものでした。
- 存在しないサブドメインのなりすまし: 厳格なポリシーでも未登録の plausible なサブドメインでなりすましが可能でした。
- 単一の文書への依存: コアプロトコルとレポート機能が一つに詰め込まれ、進化が制限されました。
DMARCbis:三つへの分割と構造の変更
DMARCbis はこれらの巨大な仕様を自然な継ぎ目から分割し、独自に進化させます。
| 規格 | 役割 | 対象範囲 |
|---|---|---|
| RFC 9989 | コアプロトコル(整合性、ポリシー、レコード構文) | RFC 7489 と RFC 9091 の置換 |
| RFC 9990 | 集計レポート | XML まとめ、運用データの統合 |
| RFC 9991 | 失敗レポート | メール毎の詳細レポート、XML スキーマの更新 |
リストへの依存ではなく木に登る(DNS トリーウォーク)
DMARCbis の最大の革新は、組織権限の開始点を見つける方法です。静的なリストに頼る代わりに、ライブの DNS トリーウォークを定義しました。
受信者は
Author Domain からルートへ向かいながら適用可能なレコードを探すため、以下のプロセスを行います(最長 8 クエリ制限):
を確認。_dmarc.<author-domain>- 見つかれば終了。見つからなければ左側のラベルを落とし親ドメインを検索し続ける。
- 最短決定ルールセットを使用し、最も長い名前を持つレコード(
)を Organizational Domain とマーク。psd=n
この変更により、Organizational Domain は所有者が管理する DNS レコードによって定義され、PSL の不具合や静的リストの問題から解放されます。
レコードの調整:新タグと旧タグ
DMARCbis の有効セットは以下の通りです。
| タグ | DMARCbis での状態 | 機能しない/備考 |
|---|---|---|
| p | New | Organizational Domain の存在しないサブドメイン向けのポリシー |
| psd | New | ドメインがパブリックサフィックスかどうかを宣言 (y/n/u) |
| t | New | 強制力を弱めるためのテストフラグ(オフにはならない) |
| pct | Removed | 百分率サンプリング;信頼できるのは常に 0 と 100 のみ |
| rf | Removed | 失敗レポート形式;実際にデプロイされた形式は一つしかありませんでした |
| ri | Removed | 集計レポート間隔;実質的に約 1 日に固定 |
| v, p, sp, adkim, aspf, fo, rua, ruf | Unchanged | バージョン、ポリシー、整合モード、失敗オプション、レポート宛先 |
新規タグの詳細機能
- t (テストフラグ):
を置換します。pct
は公表されたポリシー適用、t=n
はドメインがテスト中であることを示すため、受信者は有効ポリシーを一段階下げます(reject→quarantine など)。レポートには影響しません。t=y - np (非存在サブドメイン): NXDOMAIN 応答として識別される完全に存在しないサブドメイン向けにポリシーを設定できます。攻撃者が未登録のサブドメインでなりすましすることを防ぎます。
- psd (パブリックサフィックス宣言): country gov ネームスペースなどが
を宣言し、ツリーウォークのアンカーとなり得ます。psd=y
はそのドメインが Organizational Domain 自身であることを示します。psd=n
p=reject の現実チェック
p=rejectは、無条件にバウンスする命令として扱われなくなりました。
- 送信ドメイン(一般用途): メーリングリスト投稿の可能性があれば
を公表せず、p=reject
またはnone
から段階的に進めるべきです。quarantine - 送信ドメイン(任意の p=reject): SPF 単体への依存を禁止し、転送耐性のある DKIM 署名を適用すべきです。
- 受信者: ポリシーが
であっても、他の証拠も考慮してから行動してください。reject
ポリシーは盲目的なトリガーではなく、考慮すべき強いシグナルとなりました。
レポートの成長
レポート機能は独立した二つの文書へ移行し、より拡張性のある XML スキーマになりました。
- 集計レポート (RFC 9990): 新しい XML ネームスペース
への移行。urn:ietf:params:xml:ns:dmarc-2.0
フィールドで旧 PSL と新ツリーウォークを区別。discovery_method- プライバシーに安全(ユーザー識別情報は含まない)。
- ガンジー圧縮されたメール添付ファイルでの配送が標準。
- 失敗レポート (RFC 9991): 完全なメッセージを含めるため、プライバシー懸念があり大手プロバイダーで無効化されていますが、形式は更新されました。
- 専用
タイプと Identity-Alignment フィールドの追加。dmarc failure - パブリックサフィックスドメインでは、レジストラの同意なしに ruf リクエストに従わないよう制限。
- 専用
何が変わらなかったか
- Alignment(緩和型/厳密型)は従来通り機能します。
- ポリシー (
) の意味は変わりません。none, quarantine, reject - DMARC は引き続き From: ヘッダーのみを評価し、SPF と DKIM を基盤とします。
- 既存の DMARC レコードは引き続き機能します。廃止されたタグは無視されるため、フラグデーや強制移行はありません。
今日 Stalwart での両プロトコルの実装
Stalwart v0.16.12 時点で、DKIM2 および DMARCbis が完全に対応しています。Stalwart はこれらをサポートする最初のメールサーバーです。
機能とアクセス
- 完全実装: 署名、検証、管理責任ロジック、レシピ逆転、バウンス検証、DNS トリーウォーク、新規および廃止された DMARC タグのすべてが動作しています。
- ブラウザ上での検証: mail-auth playground を利用すると、インストール不要で以下の操作が可能です。
- DKIM2 メッセージの署名・検証。
- 破損させてチェーンの却退を確認。
- DMARCbis を並行して実行し、ツリーウォークによる Organizational Domain の解決を視覚化。
- ライブラリ: Rust 開発者向けに
crate が存在し、DKIM1, SPF, DMARC, ARC, DKIM2, DMARCbis のすべてをカバーしています。任意の Rust プロジェクトで単一の依存関係として利用可能です。mail-auth
まとめ
DKIM2 と DMARCbis は、署名がコンテンツのスナップショットではなく全体の旅路を保証し、転送による認証破断を阻止する方向に進んでいます。DMARCbis はこれらを実際のユーザーが見るドメインに紐付け、静的リストや機能しなかったタグを廃止しました。
Stalwart は IETF の最新規格を早期に ship することを優先しており、実世界のメールに対して硬化する前にテストされることで、運用者が最新の保護を受けることができます。是非、プレイグラウンドで試したり、ライブラリを読み込んだりして、DKIM2 と DMARCbis の未来を確認してください。