SPF・DKIMは合格なのにDMARCが不合格? — 原因は「アライメント」です
最終更新: 2026-08-07
「SPFもDKIMもpassしているのに、DMARCだけfailになる」——これは世界中のメール担当者が突き当たる、いちばん有名な壁です。原因はほぼ一つに絞られます。アライメント(ドメインの一致)です。
DMARCのアライメントとは、SPFまたはDKIMで認証に合格したドメインが、受信者に見える差出人欄(ヘッダーFrom)のドメインと一致していることを求めるルールです。 認証に「合格したこと」だけでは足りず、「あなたのドメインで合格したこと」が必要——ここがDMARCの核心です。
メールには「差出人」が3つある
この問題を理解する鍵は、1通のメールに差出人情報が3種類あると知ることです。
| 差出人 | 見える場所 | 認証との関係 |
|---|---|---|
| ヘッダーFrom | 受信者のメール画面の差出人欄 | DMARCが守る対象 |
| エンベロープFrom(Return-Path) | ヘッダー内部(配送・エラー返送用) | SPFが認証する対象 |
| DKIM署名ドメイン(d=) | ヘッダー内部(署名の名義) | DKIMが認証する対象 |
DMARCの合格条件は、次のいずれかです。
- SPFが合格し、かつ Return-PathのドメインがヘッダーFromと一致(SPFアライメント)
- DKIMが合格し、かつ 署名の
d=ドメインがヘッダーFromと一致(DKIMアライメント)
なぜ配信サービス利用時に起きるのか
メール配信サービスの初期設定では、多くの場合こうなっています。
- Return-Path:配信会社のドメイン(バウンス処理のため)
- DKIM署名:配信会社のドメインの署名
この状態でも、SPFとDKIM単体は堂々とpassします。ただし合格しているのは配信会社のドメインです。あなたの差出人欄がinfo@example.comなら、それは言わば他人の合格証——DMARCには数えられません。設定ミスではなく、「初期設定のまま」だと構造的にこうなる、というのがポイントです。
直し方 — 2つの設定で「自分の合格証」に変える
1. カスタムDKIM(独自ドメインDKIM)を有効にする【必須】
配信サービスの管理画面で「独自ドメイン認証」「カスタムDKIM」などの機能を探し、案内されたDNSレコード(CNAMEまたはTXT)を追加します。これで署名のd=があなたのドメインになり、DKIMアライメントが成立します。転送にも強いため、DMARC合格の主軸はこちらに置くのが定石です(→DKIMとは)。
2. 独自Return-Path(カスタムバウンスドメイン)も設定する【推奨】
対応しているサービスなら、bounce.example.comのようなサブドメインをReturn-Pathに使う設定を追加します。これでSPFアライメントも成立し、DKIMが万一壊れた場合(転送・改変時)の保険になります。
なお、一致判定は初期設定(relaxed)では「組織ドメインの一致」で判定されます。bounce.example.comとexample.comは一致扱いになるので、サブドメインを使っても問題ありません。
確認方法 — 2分でできる
- 自分宛て(Gmailなど)にテスト送信する
- メールを開き「︙」→「メッセージのソースを表示」
Authentication-Resultsの行で、dkim=pass header.d=あなたのドメインとdmarc=passを確認する
header.d=が配信会社のドメインのままなら、カスタムDKIMが未設定または未反映です。ヘッダーの読み方の詳細はAuthentication-Resultsの見方へ。ヘッダーを貼り付けるだけで判定できる完全判定ツールも使えます。
よくある質問
Q. 「認証済み」と管理画面に出ているのに、DMARCがfailします。
A. その「認証済み」は配信会社ドメインでの認証を指していることがあります。確認すべきは、DKIM署名のd=が自社ドメインになっているかどうかです。
Q. SPFとDKIM、両方のアライメントが必要ですか?
A. どちらか一方で合格します。ただし転送でSPFは壊れやすいため、DKIMアライメントを軸に、可能ならSPFも揃える「二段構え」が安全です。
Q. FromアドレスのサブドメインとDKIMのd=が違います。大丈夫ですか?
A. 初期設定(relaxed)なら、同じ組織ドメインに属していれば一致と判定されます。mail.example.comとexample.comはOKです。
Q. 直したのにfailのままです。
A. DNS反映に最大72時間かかります。また、複数の送信経路がある場合、直したのは1経路だけかもしれません。DMARCレポートで経路ごとの結果を確認してください。