SPF/DKIM/DMARC/BIMIのすべてが解決するサイト!
一括無料診断ツール、設定値作成ツールも無料公開!
もうあちこちのサイトを見て回る必要はありません。

登録不要 無料 30秒

DMARC徹底解説 — 合格の決まり方と、レコードの中身

最終更新: 2026-09-09

こちらは踏み込んだ解説です。まず全体像をつかみたい方はDMARCとは?(かんたん解説)からどうぞ。このページでは、DMARCが何を見て合格・不合格を決めているのかを最初に押さえ、そこからレコードの中身を1つずつ見ていきます。

このページでわかること
  • 合格の条件は「SPFかDKIMのどちらか一方が、認証成功+ドメイン一致」だということ
  • レコードの全タグと、書かなかったときにどう扱われるか
  • ruaruf は名前が似ているだけで、性質がまるで違うこと
  • サブドメインへのポリシーの継ぎ方(sp= / np=

DMARCは、何を見て「合格」と決めているの?

DMARCの判定は、次の1行に尽きます。

SPFとDKIMのうち、どちらか一方が「認証に成功し、かつ差出人ドメインと揃っている」なら合格。

両方そろえる必要はありません。逆に、片方が認証に成功していても、ドメインが揃っていなければ数に入りません。ここを取り違えると「SPFもDKIMもpassなのにDMARCがfailする」という状態の理由が分からなくなります。

DMARCが合格を出すまで 届いた1通のメール SPFの経路 ① 認証に成功したか 配送に使う差出人のSPFがpass ② From欄とドメインが揃っているか Return-Path ≒ From のドメイン DKIMの経路 ① 認証に成功したか 署名の検証がpass ② From欄とドメインが揃っているか 署名の d= ≒ From のドメイン どちらか一方が ①と② の両方を満たせば → DMARC 合格 両方だめなら不合格。そのとき初めて、レコードの p= に書いたポリシーが適用されます。
「認証成功」と「ドメイン一致」はセット。片方だけでは数に入らない
📌 ②の「揃っているか」をアライメントと呼びます。配信サービスを使うと①は通るのに②で落ちる、というのが最も多いつまずきです(→アライメント不一致の直し方)。

レコードには、何が書いてあるの?

DMARCレコードは _dmarc.あなたのドメイン というTXTレコードとして1本公開します。よく使う形はこれだけです。

DMARCレコードの構文 v=DMARC1 p=quarantine rua=mailto:dmarc@yourdomain.com adkim=r バージョン 必ず先頭。この値で固定 ポリシー 不合格のとき、どう扱うか none / quarantine / reject レポートの送り先 毎日届く集計レポート。 実質これが本体 揃い方の厳しさ r=緩やか(既定) s=厳格 置き場所は _dmarc.yourdomain.com のTXTレコード。ドメインに1本だけです。 最低限 v= と p= があれば動きます。rua= は付けないと、何も分からないまま運用することになります。
p= は不合格のときの扱い。rua= が無いと、状況が一切見えない

タグの一覧 — 何を指定するもので、書かないとどうなるか

タグ何を指定する書かないと
v=DMARC1DMARCレコードだという宣言必須。無いとレコードとして認識されない
p=不合格のメールの扱い(none / quarantine / reject必須。無いとレコード全体が無効
rua=集計レポートの送り先(mailto:レポートが届かない。状況が見えないまま運用することになる
ruf=失敗レポート(個別のメールの詳細)の送り先届かない。ただし送ってくる受信事業者はごく一部
fo=失敗レポートを出す条件(0/1/d/s0扱い(SPFもDKIMも両方だめなときだけ)
adkim=DKIMの揃い方(r=緩やか / s=厳格)r。サブドメインでも揃っているとみなす
aspf=SPFの揃い方(r / sr。同上
sp=サブドメイン向けのポリシーp= がそのまま継承される
np=存在しないサブドメイン向けのポリシーsp=、無ければ p= を継承
psd=そのドメインがPublic Suffix Domainかどうかの表明(y / n / uu(不明)。通常の企業ドメインでは書きません。→RFC 9989で新設
t=試験扱い(t=y でポリシーを強制しない)本番扱い。→RFC 9989で新設
⚠️ RFC 9989で3つのタグが削除されました。pct=(適用割合)、rf=(失敗レポートの形式)、ri=(集計レポートの間隔)です。とくに pct= は段階移行は「nonequarantinereject をレポートで確認しながら進める」に一本化されています(→reject移行チェックリスト)。

rua と ruf は何が違うの?

名前が似ていますが、性質がまるで違います。

rua(集計レポート)ruf(失敗レポート)
中身1日分の集計。送信元IPごとの通数と認証結果失敗した個別のメールのヘッダー情報
頻度受信事業者ごとに1日1通ほど失敗のつど(送ってくれば)
個人情報含まれない宛先や件名が含まれうる
送ってくる事業者Gmail・Microsoft・Yahoo!など主要どころは送るごく一部。ほとんど届かない
実務必ず設定する無理に設定しなくてよい

ruf= を設定する場合、fo= で「どんなときに送ってほしいか」を指定できます。fo=1 は「SPFかDKIMのどちらかが落ちたら送る」で、既定の fo=0(両方落ちたときだけ)より多く届きます。ただし前述のとおり、そもそも送ってくる事業者が限られます。

サブドメインはどうなるの?

DMARCは組織ドメインに1本置けば、その下のサブドメインにも効きます。個別に置く必要はありません。

  • sp= を書かなければ、サブドメインにも p= がそのまま適用されます
  • sp=none と書けば、本体は厳しく、サブドメインだけ緩くという設定ができます。移行期に使う手です
  • np=reject「存在しないサブドメイン」だけを狙い撃ちにします。使っていない名前を騙る攻撃を、本番の配信に影響を与えずに止められます
💡 サブドメインに自分でDMARCレコードを置くと、そちらが優先されます。親の sp= は、レコードを置いていないサブドメインにだけ効きます。

アライメントを厳格にすると、何が起きるの?

adkim=s / aspf=s と書くと、ドメインの完全一致を求めるようになります。既定の r では mail.yourdomain.comyourdomain.com は揃っているとみなされますが、s では別物として扱われます。

厳格にすると、配信サービスの多くが使えなくなります。Return-Pathを専用サブドメインにする方式(→SPF徹底解説)は aspf=s と両立しません。特別な理由がなければ、既定の r のままにしてください。

確認のしかた

# 自分のDMARCレコードを引く
dig +short TXT _dmarc.yourdomain.com

# サブドメインに個別のレコードがあるか
dig +short TXT _dmarc.mail.yourdomain.com

届いたメールでの判定結果は、Authentication-Results ヘッダーの dmarc=pass / dmarc=fail で分かります(→Authentication-Resultsの見方)。このサイトの診断では、ドメインを入れるだけでレコードの内容と継承の状態まで確認できます。

よくある質問

Q. SPFもDKIMもpassなのに、DMARCがfailします。
A. 認証は通っていても、ドメインが揃っていないためです。配信サービス利用時の典型で、SPFはReturn-Pathが、DKIMは署名の d= がサービス側のドメインになっているのが原因です。→アライメント不一致の直し方

Q. SPFとDKIM、両方そろえないとダメですか?
A. DMARCの合格だけならどちらか一方で足ります。ただし両方そろえてください。転送されるとSPFは壊れやすく、そのときDKIMが残っていないと不合格になります。

Q. p=none のままでも意味はありますか?
A. あります。rua= を設定していれば、自分のドメインを名乗るメールの実態が毎日見えます。まずここから始めるのが正しい順番です。

Q. レポートの宛先は、自分のドメイン以外でもいいですか?
A. 可能ですが、受け取る側のドメインに承認レコードが必要です(yourdomain.com._report._dmarc.受け取る側のドメイン)。解析サービスを使う場合は、サービス側の案内に従ってください。