DMARC徹底解説 — 合格の決まり方と、レコードの中身
最終更新: 2026-09-09
こちらは踏み込んだ解説です。まず全体像をつかみたい方はDMARCとは?(かんたん解説)からどうぞ。このページでは、DMARCが何を見て合格・不合格を決めているのかを最初に押さえ、そこからレコードの中身を1つずつ見ていきます。
- 合格の条件は「SPFかDKIMのどちらか一方が、認証成功+ドメイン一致」だということ
- レコードの全タグと、書かなかったときにどう扱われるか
ruaとrufは名前が似ているだけで、性質がまるで違うこと- サブドメインへのポリシーの継ぎ方(
sp=/np=)
DMARCは、何を見て「合格」と決めているの?
DMARCの判定は、次の1行に尽きます。
SPFとDKIMのうち、どちらか一方が「認証に成功し、かつ差出人ドメインと揃っている」なら合格。
両方そろえる必要はありません。逆に、片方が認証に成功していても、ドメインが揃っていなければ数に入りません。ここを取り違えると「SPFもDKIMもpassなのにDMARCがfailする」という状態の理由が分からなくなります。
レコードには、何が書いてあるの?
DMARCレコードは _dmarc.あなたのドメイン というTXTレコードとして1本公開します。よく使う形はこれだけです。
p= は不合格のときの扱い。rua= が無いと、状況が一切見えないタグの一覧 — 何を指定するもので、書かないとどうなるか
| タグ | 何を指定する | 書かないと |
|---|---|---|
v=DMARC1 | DMARCレコードだという宣言 | 必須。無いとレコードとして認識されない |
p= | 不合格のメールの扱い(none / quarantine / reject) | 必須。無いとレコード全体が無効 |
rua= | 集計レポートの送り先(mailto:) | レポートが届かない。状況が見えないまま運用することになる |
ruf= | 失敗レポート(個別のメールの詳細)の送り先 | 届かない。ただし送ってくる受信事業者はごく一部 |
fo= | 失敗レポートを出す条件(0/1/d/s) | 0扱い(SPFもDKIMも両方だめなときだけ) |
adkim= | DKIMの揃い方(r=緩やか / s=厳格) | r。サブドメインでも揃っているとみなす |
aspf= | SPFの揃い方(r / s) | r。同上 |
sp= | サブドメイン向けのポリシー | p= がそのまま継承される |
np= | 存在しないサブドメイン向けのポリシー | sp=、無ければ p= を継承 |
psd= | そのドメインがPublic Suffix Domainかどうかの表明(y / n / u) | u(不明)。通常の企業ドメインでは書きません。→RFC 9989で新設 |
t= | 試験扱い(t=y でポリシーを強制しない) | 本番扱い。→RFC 9989で新設 |
pct=(適用割合)、rf=(失敗レポートの形式)、ri=(集計レポートの間隔)です。とくに pct= は段階移行は「none → quarantine → reject をレポートで確認しながら進める」に一本化されています(→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は「存在しないサブドメイン」だけを狙い撃ちにします。使っていない名前を騙る攻撃を、本番の配信に影響を与えずに止められます
sp= は、レコードを置いていないサブドメインにだけ効きます。アライメントを厳格にすると、何が起きるの?
adkim=s / aspf=s と書くと、ドメインの完全一致を求めるようになります。既定の r では mail.yourdomain.com と yourdomain.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.受け取る側のドメイン)。解析サービスを使う場合は、サービス側の案内に従ってください。