転送
- SPF192.0.2.80はexample.comのSPFにない
- DKIM署名は無傷
レポートの表示spf=fail dkim=pass → pass
すべてをDKIM署名する:DKIMは転送に耐えます。ARC(RFC 8617)は転送側が正当性を保証するのに役立ちます。
テーマ
ドメインのDMARCレコードを、受信メールサーバーと同じ読み方で確認します:ポリシーはどこにあるか、認証に失敗したメールはどう扱われるか、レポートは誰かに届いているか、ポリシーを強制する前にSPFとDKIMに何が必要か。
上の欄にドメインを入力してください:チェッカーはDNSに、_dmarc.にドメインを付けた名前のTXTレコードを問い合わせ、なければ組織ドメインまでさかのぼり(RFC 9989 §4.10)、認証に失敗したメールを受信サーバーがどう扱うかを表示します。
手作業で確認するなら、同じ名前を問い合わせます:dig +short TXT _dmarc.paypal.com、Windowsならnslookup -type=TXT _dmarc.paypal.com。v=DMARC1で始まる応答が1件ならそれがレコードで、2件あると受信サーバーはどちらも使いません(RFC 9989 §4.10)。
digはそこまでです。サブドメインから親へさかのぼらず、レポートの宛先がレポートを受け付けるかも確認せず、受信サーバーがどのRFCに従うかも分かりません。それを補うのがこのチェッカーです。
dig +short TXT _dmarc.example.comこの名前のすべての応答を表示します。v=DMARC1で始まる1件がレコードです。
digで分かること、分からないこと
$ dig +short TXT _dmarc.paypal.com 1
"v=DMARC12; p=reject; rua=mailto:d@rua.agari.com,mailto:dmarc_agg@vali.email; ruf=mailto:d@ruf.agari.com,mailto:MTc4Mzcw@ruf.vali.email3"
$ dig TXT _dmarc.mail.google.com | grep status 4
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN
最初に1文で答えが表示されます。その下に根拠が続きます:受信サーバーが解釈したとおりのレコード(各タグを実際の文字位置で色分け)、そして紺色の背景には、このドメインについて受信サーバーがたどる経路と、失敗したメールの最終的な扱いが表示されます。
点数はありません:noneのポリシーは失敗ではなく一つの段階であり、経路の下の段階表が次のステップに必要なことを示します。

判定失敗したメールを受信サーバーがどう扱うかを1文で示し、ポリシー、SPF、DKIMをひと目で確認できます。レコード各タグを文字位置ごとに色分け:カーソルを合わせるかタップすると役割が分かります。その下に既定値を表示します。受信サーバーの視点ドメインについて受信サーバーが行うすべてのDNS問い合わせを、順番に応答とともに表示します。DMARCに失敗したメールドメイン自身、存在するサブドメイン、存在しない名前での受信サーバーの扱いです。強制の段階表ドメインがnoneからrejectまでのどこにいるか、次のステップに何が必要かを示します。DMARCは、From:行にあなたのドメインを使いながら、あなたから届いたことを証明できないメールを、受信メールサーバーがどう扱うかを指示し、そのメールに関するレポートの送り先も伝えます(RFC 9989 §4.7)。
証明に使うのは、From:のドメインとアラインしたSPFまたはDKIMです:同じ組織内のバウンスドメインに対するSPFの合格、またはd=があなたのドメインのDKIM署名。アラインした合格が1つあれば十分です(RFC 9989 §5.3.5)。それ以外はDMARCに失敗し、レコードのポリシーに従って、配信、迷惑メールフォルダー行き、拒否のいずれかになります。
レポートはもう半分の役割です。ruaに対応する受信サーバーは、あなたのドメインを名乗って送信したすべてのサーバーの集計を毎日送ってきます。ポリシーを強制する前に、忘れていた正規の送信元を見つけられます。
2通のメール、同じFrom:行
メールサービス経由で送られた本物の請求書カスタムDKIMを設定したサービス経由なので、d=example.comで署名
203.0.113.9から送られた偽の請求書example.comが許可していないサーバー
550 5.7.1 Email rejected per DMARC policy for example.com
明日の集計レポートがdmarc@example.com宛てに届きます:203.0.113.9からのメール1通、SPF fail、DKIMなし、処理はreject。
p=noneは、失敗したメールを通常どおり配信してレポートだけ送るよう求め、quarantineは不審なメールとして扱う(通常は迷惑メールフォルダー行き)よう求め、rejectはSMTPのやり取りの中で受け付けを拒否するよう求めます。
noneは失敗ではなく一つの段階です:RFC 9989 §7.4は、レポートを受け取りながらnoneで少なくとも1か月、さらにrejectの前にquarantineでも同じ期間を過ごすことを勧めています。メーリングリストに投稿する人がいるドメインは、quarantineでとどめてください。
大手のメールボックスプロバイダーでも分かれています:gmail.comとoutlook.comはドメイン自身にp=none、サブドメインにsp=quarantineを公開し、google.com、yahoo.com、microsoft.comはrejectを公開しています。
偽装メールの行き先
配信p=none
apache.orggmail.comsamsung.com
192件中23件
迷惑メールフォルダーp=quarantine
github.comapple.comamazon.com
192件中30件
拒否p=reject
google.compaypal.commicrosoft.com
192件中139件
はい。Gmail、Yahoo、Outlook.com宛てに大量送信するなら必要です:3社ともDMARCレコードを求めており、p=noneで要件を満たせます。 強制(quarantineまたはreject)は、他人があなたのドメインを名乗って送るのを防ぎ、BIMIのロゴにも必要です。
Gmailは2024年2月1日から、Gmailアカウント宛てに1日5,000通を超えて送信する送信者に求めています。Yahooは2024年2月から、送信量は示さずに求めています。Outlook.comは2025年5月5日から、1日5,000通を超える送信者に求めています。レコードがないと、Gmailは4.7.31(From:がアラインしていない場合は4.7.32)を返し、Outlook.comは550 5.7.515で拒否します。
メールを送らないドメインでは、DMARCは最も手軽な保護策です:example.comが公開しているように、p=reject、Null MX、v=spf1 -allを設定します(M3AAWG)。
各メールボックスプロバイダーが一括送信者に求めること
4.7.31 · 4.7.32DMARCに合格すること550 5.7.515✓必須:レコード、p=none以上i保護:quarantineまたはreject
集計レポートから失敗している送信元を見つけ、送信側で直します:自社ドメインでDKIM署名するか、組織内のバウンスドメインに移します。 失敗の大半は3つの原因で説明できます。
転送ではDKIM署名は残りますがSPFが壊れるため、DKIMが合格を支えます。メールを書き換えるメーリングリストは両方を壊します。そして、自社のドメインで署名するメールサービスは、あなたではなくサービス自身のDKIMに合格しているだけです:そのサービスのカスタムDKIM(通常はs1._domainkeyのようなCNAME)と独自のリターンパスを有効にしてください。
3つの失敗、レポートに表示される内容、直し方
レポートの表示spf=fail dkim=pass → pass
すべてをDKIM署名する:DKIMは転送に耐えます。ARC(RFC 8617)は転送側が正当性を保証するのに役立ちます。
レポートの表示spf=fail dkim=fail → fail
From:を書き換えるリストで解決できます。メーリングリストに投稿する人がいるドメインはquarantineにとどめます(RFC 9989 §7.4)。
レポートの表示dkim=pass(esp.example) → fail
ベンダーのカスタムDKIMを有効にする:paypal.comのs1とs2はSendGridへのCNAMEで、SendGridがpaypal.comとして署名します。
独自のレコードがないサブドメインには、組織ドメインのポリシーが適用されます:存在するサブドメインにはsp、存在しない名前にはnpで、どちらもなければpになります(RFC 9989 §4.7)。
独自のレコードを公開しているサブドメインは、それを自分用に使います。ただし、ある名前とその組織ドメインの間にあるレコードは、その名前には使われません:berkeley.eduのツリーがその例で、eecs.berkeley.eduのsp=noneはwww.eecs.berkeley.eduには届きません(RFC 9989 §4.10.1)。
npは手軽な対策です:存在しない名前から正規のメールが送られることはないため、pがまだnoneでもnp=rejectでそこからの偽装を防げます。RFC 7489の受信サーバーはnpを知らず、spを使います。
受信サーバーが読むberkeley.eduのツリー
eecs.berkeley.eduのsp=noneは適用されません:ある名前とその組織ドメインの間にあるレコードは、その名前には使われません(RFC 9989 §4.10.1)。チェッカーは、これを使われないレコードとして示します。
集計レポートは、各受信サーバーから毎日届くXMLファイルで、あなたのドメインを名乗ってメールを送ったすべてのサーバー、その通数、SPF、DKIM、DMARCの合否が載っています(RFC 9990)。
送信元ごとに読みます:自社のサーバーやサービスはアラインした合格になるはずです。既知のサービスが失敗していればカスタムDKIMが必要で、p=rejectで失敗している不明なアドレスは、阻止されたなりすましです。レポートサービス(dmarcian、Valimail、EasyDMARC、Postmarkなど)は、何千ものファイルをこの一覧にまとめてくれます。
別のドメインのアドレス宛てのレポートは、そのドメインが同意している場合にだけ届きます:そのドメインがv=DMARC1を値とするyourdomain._report._dmarc.its-hostを公開します(RFC 9990 §4)。チェッカーが代わりに確認し、ない場合は正確なレコードを示します。
1通のレポートを1行ずつ読む
<org_name>google.com</org_name>1
<date_range>10/23 0:00 UTC~10/24 0:00 UTC</date_range>
<policy_published>example.com · p=reject</policy_published>2
<source_ip>198.51.100.24</source_ip> <count>412</count> dkim=pass spf=fail → none3
<source_ip>203.0.113.9</source_ip> <count>37</count> dkim=fail spf=fail → reject4
paypal.com._report._dmarc.rua.agari.com TXT "v=DMARC1;"✓ 承認済み:レポートが届きますチェッカーが認識するレポートサービスdmarcianValimailEasyDMARCPostmarkCloudflareMimecastProofpointAgariRed SiftPowerDMARCほか6件