参考
DMARC を設定する意味
せっかく SPF や DKIM を設定しても、成りすましメールは送信先のお客様の迷惑フォルダに届いたり、普通に届いたりします。 これは Gmail やキャリアメールの受信者側の設定によるものなので、送信者側ではどうしようもないです。
しかし、DMARC を設定することで送信者側で成りすましメールの扱いを決めることができます。 また、成りすましメールの到着時に本当の送信者側に、成りすましメールがきたとレポートを送信することができます。 https://support.google.com/a/answer/2466580?hl=ja
前提
送信元サーバー= example サーバー 送信元ドメイン名= example.com 送信元 IP = xx.xx.xx.xx 成りすましサーバー= spoofing サーバー
SPF・DKIM が設定されたメールを Gmail に送信してみる(DMARC なし)
testsmaeno@gmail.com宛てに送信しました。 黒で塗りつぶしているところは送信元のドメイン名です。(example.com) 赤は送信元 IP です。(xx.xx.xx.xx)
- SPF が PASS(成功)
- DKIM が PASS(成功)
なりすましメールを送信してみる(DMARC なし)
上記の example サーバーとは全く関係のない成りすましサーバーで from ヘッダー(送信アドレス)を詐称してメールを送信してみます。
echo "佐川急便よりお荷物のお届けに上がりましたがご不在のため持ち帰りました。" | mail -s "成りすまし" -r wordpress@example.com testsmaeno@gmail.com
普通に届きました。
開くと警告が出ます
DKIM がなく、SPF も SOFTFAIL(失敗)とあります

DMARC レコードの登録
やり方は簡単で、送信元ドメインの DNS サーバーに TXT レコードを追加するのみです。 aaa@aaaaa.comからメールが届いたときに、そのメールが成りすましじゃないか aaaa.com の DNS サーバーに問い合わせるという感じです。
以下のレコードを DNS サーバーに追加します
DMARCレコードの登録
Name: _dmarc.example.com
Type: TXT - Text
Alias: No
TTL: 任意
Value: "v=DMARC1; p=reject"
Routing Policy: Simple
Save Record Setをクリック
SPF・DKIM が設定されたメールを Gmail に送信してみる(DMARC あり)
- DMARC がつきました
- PASS なので成功していそうです
なりすましメールを送信してみる(DMARC あり)
同じコマンドを実行します
echo "佐川急便よりお荷物のお届けに上がりましたがご不在のため持ち帰りました。" | mail -s "成りすまし" -r wordpress@example.com testsmaeno@gmail.com
メールは届かないです。 ログを見てみると、DMARC により弾かれたと出てます。
Unauthenticated email from example.com 550-5.7.26 k is not accepted due to domain's DMARC policy.
DMARC レポート送信機能について
DMARC レコードの値に以下を入れたと思うのですが、色々なオプションがあります。
Value: "v=DMARC1; p=reject"
その中の一つにレポート機能があります。
| パラメータ | 概要 |
|---|---|
| rua | 集約レポートの送り先 (URI で指定) |
| ruf | 失敗レポートの送り先 (URI で指定) |
DMARC レポートには次の情報が含まれます。
- ドメインのメールを送信しているサーバーまたはサードパーティ サービス
- ドメインから送信されるメールのうち、DMARC 認証に合格するメールの割合
- DMARC に失敗するメールの送信元サーバーまたはサービス
- ドメインからの未認証メールに対して受信サーバーが行う DMARC 処理(none、quarantine、reject)
設定すると以下の感じです
Value: "v=DMARC1; p=reject; rua=mailto:xxx@example.com; ruf=mailto:xxx@example.com"
DMARC レポートの受信を外部に委託したい場合、すなわち DMARC レコードを設定したドメインと関係の無いドメインを rua や ruf に指定する場合には、レポートの委譲先のドメインに、委譲元のドメインの情報を示す必要があります。
例えば、example.com ドメインで運用していて、レポート結果は example.jp ドメインで受け取りたい場合は、委譲先の currentia.co.jp ドメインで以下の TXT レコードを追加する必要があります。
example.com._report._dmarc.example.jp IN TXT "v=DMARC1"