送信ドメイン認証DMARCとは?DMARC対応。

SPFとDKIMは対応済みでDMARCは導入しなくてもいいかなと思っていたけれど、ARC(Authenticated Received Chain)を導入するついでにやってしまおうと調査しているときの覚書。

環境: CentOS Stream 9, Postfix 3.5.9, OpenDMARC 


1.DMARCとは?

DMARCはDomain-based Message Authentication, Reporting and Conformanceの略。

メールヘッダーのFROMとSPF/DKIMから送信者ドメインを検証する仕組み。
DMARCをpassしていれば送信者ドメインが管理下にあることを証明できる。

SPFとDKIMだけでは、両方passする偽装メールは可能らしい。
参考: DMARCの認証ってSPFやDKIMと何が違うんですか?を説明してみる。|藤田紀行(株式会社WOW WORLD CTO)|note

また自社になりすました(可能性のある)メールのレポートを受け取ることができる。
ドメイン管理者がなりすまし状況を認識しセキュリティ意識を高めることに繋がる。

メール送信するだけならDNSのtxtレコードにdmarc用の記述するだけでOK.

参考サイト


メール転送やメーリングリストを運用している場合は、転送先でSPFとDKIMの検証に失敗する可能性があるので、ARC(Authenticated Received Chain)も対応が必要。


2.DMARCレコードをDNSに記述

SPFとDKIMを導入済みであれば、DMARCレコードをDNSに追加するだけで対応完了。

value domainなら下記のように_dmarcサブドメインにtxt行を指定する。

txt _dmarc v=DMARC1; p=none; rua=mailto:hoge@gmail.com

各意味は下記サイトを参考に。

nslookupで確認してから外部サーバーからメール送信してみる。
# sendmail hoge@outlook.com

Microsoft 365のアカウントに送信すれば「dmarc=pass」「dmarc=bestguesspass」が挿入されるので、TXTレコードを参照できているか確認することができる。
参考: スパム対策メッセージ ヘッダー - Office 365 | Microsoft Learn

確認できたら検疫モード(quarantine)にしておく。

txt _dmarc v=DMARC1; p=quarantine; rua=mailto:hoge@gmail.com




【関連記事】