フォレンジックレポート(Failure Report)
概要
フォレンジックレポート(Failure Report) は、DMARC 認証に失敗した個々のメールについて、失敗の詳細情報をドメイン所有者に送信するレポートです。RFC 7489(2015年)で定義されており、DMARC レコードの ruf= タグでレポートの送信先を指定します。
集計レポート(rua)が一定期間の統計データをまとめて送るのに対し、フォレンジックレポートは認証失敗が発生するたびにリアルタイムに近いタイミングで個別送信されます。メールのヘッダー情報、送信元 IP、認証結果の詳細が含まれるため、なりすましの調査や設定ミスの特定に役立ちます。
ただし、フォレンジックレポートにはプライバシーの懸念があります。レポートに含まれるメールヘッダーから受信者のメールアドレスが特定できるため、Gmail や Microsoft 365 をはじめ、フォレンジックレポートを送信しない受信プロバイダーが多数あります。実運用では集計レポート(rua)を主軸にして、フォレンジックレポートは補助的に利用します。
仕組み
フォレンジックレポートは ARF 形式で生成され、ruf タグで指定した送信先に認証失敗の発生ごとに個別送信されます。
レポートの生成と送信
フォレンジックレポートの生成フローは次の通りです。
- 受信サーバーがメールを受信し、SPF・DKIM・DMARC の認証を実行する
- DMARC 認証が失敗する(
fo=タグの条件に合致する) - 受信サーバーが
ruf=で指定されたアドレスにレポートを送信する
レポートの形式は RFC 5965(2010年)で定義された Abuse Reporting Format(ARF)に準拠します。RFC 6591(2012年)はその ARF を DMARC のような認証失敗レポートに特化させた拡張仕様です。MIME パートとして人間が読めるテキスト部分と機械処理用の構造化データが含まれます。
レポートに含まれる情報
フォレンジックレポートには、認証失敗したメールの次の情報が含まれます。
- 送信元 IP アドレス
- ヘッダー From と エンベロープ From
- DKIM 署名のヘッダー(
d=、s=、署名検証結果) - SPF の認証結果と照合ドメイン
Authentication-Resultsヘッダーの内容- メールの
Subjectやその他のヘッダー(プロバイダーの実装による)
メール本文はデフォルトでは含まれませんが、プロバイダーによっては本文の一部が含まれることがあります。
fo タグとの連携
fo= タグでフォレンジックレポートの送信条件を制御します。デフォルトは fo=0 で、SPF と DKIM の両方がアライメント fail したとき(DMARC fail のとき)にレポートを送信します。fo=1 では SPF または DKIM のどちらかが fail するだけでレポートが送信されます。
設定例
DMARC レコードの ruf タグでフォレンジックレポートの送信先を指定し、fo タグで送信条件を制御します。
基本設定
_dmarc.example.com. IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc-agg@example.com; ruf=mailto:dmarc-forensic@example.com"
rua と ruf を同じレコードに設定します。レポートの送信先メールアドレスは別にすると管理しやすくなります。
fo タグとの組み合わせ
_dmarc.example.com. IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc-agg@example.com; ruf=mailto:dmarc-forensic@example.com; fo=1"
fo=1 を指定すると、SPF か DKIM のどちらか一方でも認証失敗したメールについてレポートが送信されます。DMARC 導入初期に設定ミスを早期発見する場合に有用です。
外部ドメインへの送信
_dmarc.example.com. IN TXT "v=DMARC1; p=reject; ruf=mailto:forensic@dmarcservice.example.net"
ruf= に外部ドメインのアドレスを指定する場合、そのドメイン側に example.com._report._dmarc.dmarcservice.example.net の TXT レコードを設定して受信許可を宣言する必要があります。これは外部報告先の認証(RFC 7489 Section 7.1)で定められています。
確認方法
DMARC レコードの ruf= タグは dig で確認できます。
dig TXT _dmarc.example.com
;; ANSWER SECTION:
_dmarc.example.com. 3600 IN TXT "v=DMARC1;p=reject;rua=mailto:dmarc@example.com;ruf=mailto:forensic@example.com;fo=1"
ruf= の有無でフォレンジックレポートが設定されているかを確認します。fo= タグでレポート送信条件も合わせて確認します。
外部の視点からも確認したい場合は、Labee Dev Toolbox の Mail Auth API を使うと、外部の視点から見た結果を取得できます。
curl "https://labee.dev/api/mail-auth?domain=example.com"
{
"success": true,
"data": {
"spf": { "record": "v=spf1 include:_spf.google.com ~all", "exists": true },
"dkim": { "record": "v=DKIM1; k=rsa; p=MIIBIjANBgkqh...", "exists": true, "selector": "default" },
"dmarc": {
"record": "v=DMARC1; p=reject; rua=mailto:dmarc@example.com; ruf=mailto:forensic@example.com; fo=1",
"exists": true
},
"bimi": { "record": null, "exists": false }
},
"error": null,
"meta": { "responseTime": 123 }
}
data.dmarc.record フィールドから ruf= タグの有無と送信先を確認できます。
よくある問題
フォレンジックレポートの運用では、主要プロバイダーが送信しないこと、レポートの大量送信、外部ドメインへの転送設定がつまずきやすいポイントです。
フォレンジックレポートが届かない
Gmail、Microsoft 365、Yahoo Mail など主要プロバイダーの多くはフォレンジックレポートを送信しません。プライバシー保護のポリシーに基づく判断です。ruf= を設定してもレポートが届かないのは正常な動作であり、設定ミスではありません。レポートを送信するプロバイダーは限られているため、なりすましの調査は rua の集計レポートを主軸にします。
レポートが大量に届く
DMARC 認証失敗が頻発するドメインでは、フォレンジックレポートが短時間に大量送信されることがあります。メールボックスの容量を圧迫するため、専用のメールアドレスを用意するか、DMARC レポート解析サービス(dmarcian、Valimail、Postmark など)に転送します。
外部ドメインへの ruf 送信が機能しない
ruf=mailto:forensic@external.example.net のように外部ドメインのアドレスを指定した場合、外部ドメイン側に example.com._report._dmarc.external.example.net の TXT レコードが必要です。このレコードがないと、受信プロバイダーはレポートを送信しません。DMARC レポート解析サービスを利用する場合、サービス側がこのレコードの設定手順を案内しています。