技術解説 · 出典付きの回答
DMARCレコードとは?定義と設定方法
DMARCレコードは、SPFまたはDKIMの認証に失敗したメールをどう扱うかを受信側メールサーバーに伝えるDNSのTXTレコードです。ドメイン所有者は、認証されていないメールに対するポリシーとしてnone、quarantine、rejectのいずれかを指定でき、承認された送信者だけがそのドメインを使えるようにします。
仕組み
DMARCは、FromヘッダーのドメインとSPF・DKIMで検証されたドメインとのアライメントを確認することで機能します。SPFチェックに合格してドメインが一致する場合、またはDKIM署名が有効でドメインが一致する場合、そのメールはDMARCに準拠しています。両方が失敗するかアラインしていない場合、受信側はDMARCレコードで定義されたポリシーを適用し、メッセージを配信するか、フラグを付けるか、ブロックするかを決定します。
送信者にとっての重要性
DMARCは、承認されていないメールを受信側がどう扱うかを送信者が制御できるようにすることで、ドメインのなりすましやフィッシングを防ぎます。DMARCレコードがないと、受信側には認証に失敗したメールの扱いについて明示的な指示がないため、配信結果にばらつきが生じることがあります。厳格なポリシーを適用すれば、攻撃者が自社の公式ドメインから送られたように見える詐欺メールを送るリスクを減らせます。
運用上の注意とよくある間違い
よくある失敗は、レポートデータを分析する前にrejectポリシーへ移行してしまうことです。まずは p=none で始め、配信に影響を与えずにトラフィックを監視してください。また、セミコロンの欠落や無効なタグなど、TXTレコードの構文の誤りもよく見られます。SendHQやその無料ツール(https://sendhq.cc/tools)を使えば、公開前にレコードの書式が正しいかどうかを確認できます。
具体例
一般的なDMARCレコードは v=DMARC1; p=quarantine; rua=mailto:reports@example.com のような形式です。この例では、v=DMARC1 がレコードのバージョンを示し、p=quarantine は失敗したメールを迷惑メールフォルダに送るよう受信側に指示し、rua は分析用の集計XMLレポートの送信先メールアドレスを指定します。
ポリシーのレベル
主なポリシーのレベルは3つあります。p=none は監視モードで、失敗したメールに対して何も措置を取りません。p=quarantine は失敗したメールを受信者の迷惑メールフォルダに送ります。p=reject は最も厳格なレベルで、受信側サーバーにメールを完全にバウンスさせ、受信者のメールボックスに届かないようにします。
よく寄せられる質問
DMARCはSPFやDKIMの代わりになりますか?
いいえ。DMARCはSPFとDKIMを基盤としています。送信者IDを検証するには、そのうち少なくとも1つが設定されていて有効である必要があり、DMARCはそれらが失敗したときのポリシーを提供します。
ruaとrufの違いは何ですか?
ruaは、メールの量や認証についての概要統計を提供する集計レポートに使います。rufは、失敗した個々のメッセージに関する詳細情報を提供するフォレンジックレポートに使います。
DMARCレコードは複数設定できますか?
いいえ。1つのドメインに設定できるDMARCレコードは1つだけです。DNSで複数のレコードが見つかった場合、受信側サーバーは通常そのすべてを無視するため、ドメインが保護されない状態になります。
一次情報源
- RFC 7489:ドメインベースのメッセージ認証・レポート・適合(DMARC) — RFC Editor
- RFC 7208:送信者ポリシーフレームワーク(SPF) — RFC Editor
- RFC 6376:DomainKeys Identified Mail(DKIM)の仕様 — RFC Editor