2026年8月15日
2026年8月15日
DMARCとDKIMを併用する設定|アラインメントの仕組み・adkimの選び方・WordPressの差出人の合わせ方
DMARCとDKIMを併用するときに押さえるべき点は、「DKIMが pass していても、署名ドメイン(d=)が差出人アドレスのドメインと一致していなければ、DMARCでは合格にならない」という一点です。この一致をアラインメントと呼びます。この記事では、DMARCがDKIMの結果をどう使うのかを整理し、DMARCレコードの adkim の選び方、送信サービスで自社ドメインの署名にする方法、WordPressの差出人アドレスの合わせ方、ヘッダーとレポートでの確認方法を説明します。ポリシーを reject まで段階的に強める手順は別の記事の範囲とし、ここでは「DKIMをDMARCに正しく効かせる設定」に絞ります。
DMARCはDKIMの結果をどう使うか
DMARCの判定は、次の2つの条件を両方満たしたときに合格になります。
- SPFかDKIMの少なくとも一方が pass している。
- pass した側のドメインが、差出人(Fromヘッダー)のドメインとアラインしている。
DKIMで比べるのは、署名の d= タグのドメインです。たとえば差出人が info@example.com のメールに、d=example.com の署名が付いて pass していれば、DKIMの側でDMARCに合格します。SPFが通らなくても構いません。
逆に、配信サービスの初期設定のまま送ると、d= がサービスのドメイン(例: d=sender-service.example)になっていることがよくあります。この場合、DKIMの検証は pass でも、差出人ドメインと一致しないのでDMARCの判定には使われません。「DKIMを設定したのにDMARCが fail する」という相談の多くは、これが原因です。
adkim:relaxed と strict の違い
DMARCレコードの adkim タグで、DKIMのアラインメントをどこまで厳密に見るかを指定します。
_dmarc.example.com. TXT "v=DMARC1; p=none; adkim=r; aspf=r; rua=mailto:dmarc-reports@example.com"
- **
adkim=r(relaxed、既定値)**:組織ドメインが同じなら一致とみなします。差出人がinfo@example.comでd=mail.example.comの署名でも合格します。 - **
adkim=s(strict)**:ドメインが文字どおり同じ場合だけ合格です。上の例は不一致になります。
多くの場合は既定の relaxed で十分です。送信サービスによっては、自社ドメインのサブドメイン(em.example.com など)で署名する設定になっており、strict にするとそれらが不合格になります。strict を選ぶのは、サブドメインを第三者に任せていて、そこからの署名を親ドメインの合格として扱いたくない、といった明確な理由がある場合です。aspf は同じことをSPFについて指定するタグです。
送信サービスで自社ドメインの署名にする
アラインした署名にするには、送信元ごとに「自社ドメインで署名する」設定を行います。
- メール配信サービス・SMTP送信サービス:「ドメイン認証」「独自ドメインのDKIM」などの名前で設定項目があり、指示されたCNAMEまたはTXTレコードをDNSに追加します。CNAME方式では、
s1._domainkey.example.comをサービス側のホスト名に向ける形が多く、鍵の入れ替えをサービス側で行えるのが利点です。項目名や手順はサービスごとに違うため、各サービスのドキュメントを確認してください。 - Google Workspace や Microsoft 365:管理画面でDKIMを有効にし、表示されたレコードを追加します。有効にするまでは、サービスの既定ドメインで署名されている場合があります。
- 自社運用のメールサーバー:OpenDKIMなどで
d=に自社ドメインを指定して署名します。
1つのメールに複数の署名が付くことは珍しくありません。サービスのドメインと自社ドメインの両方で署名されていれば、自社ドメインの署名がアラインした pass になり、DMARCは合格します。
WordPressの差出人アドレスを合わせる
WordPressから送るメール(フォームの通知、パスワードの再設定、注文確認など)は、差出人のドメインと署名ドメインがずれやすい送信元です。WordPress本体はDKIM署名を行わないため、SMTPプラグイン(WP Mail SMTP、FluentSMTP など)で外部の送信サービスにつなぎ、送信サービス側で自社ドメインのDKIMを設定するのが基本の形です。
そのうえで、差出人アドレスを署名ドメインに合わせます。SMTPプラグインに差出人アドレスを固定する設定があれば、まずそれを使います(項目名はプラグインやバージョンによって異なります)。プラグインを使わずに差出人だけを変えたい場合は、WordPressの wp_mail_from と wp_mail_from_name フィルターを使えます。テーマの更新で消えないよう、mu-plugin として置くのがおすすめです。
<?php
// wp-content/mu-plugins/mail-from.php
add_filter( 'wp_mail_from', function ( $from ) {
return 'noreply@example.com';
} );
add_filter( 'wp_mail_from_name', function ( $name ) {
return 'Example Site';
} );
ここで指定するアドレスは、送信サービスで認証済みのドメインのものにします。差出人だけを書き換えても、実際に送っているサーバーが自社ドメインで署名していなければ、DMARCには合格しません。SMTPプラグインの「差出人を強制する」設定が有効だと、このフィルターより優先されることがあるので、どちらで管理するかを決めて一本化します。本番サイトで試す前に、ステージング環境でテスト送信して確認してください。
フォームの送信者のアドレス(問い合わせをした人のアドレス)を差出人にする設定は避けます。他人のドメインを差出人にしたメールは、そのドメインのDMARCで不合格になり、相手のポリシーが reject なら届きません。返信先として使いたい場合は、差出人ではなく Reply-To に入れます。
ヘッダーで確認する
設定したら、Gmailなどの受信箱にテストメールを送り、元のメッセージ(ヘッダー)を表示して Authentication-Results を確認します。
Authentication-Results: mx.example.net;
dkim=pass header.i=@example.com header.s=s1;
spf=pass smtp.mailfrom=bounce.sender-service.example;
dmarc=pass header.from=example.com
見るべき点は次のとおりです。
dkim=passの行のheader.i(またはheader.d)が、header.fromと同じドメイン(relaxed なら同じ組織ドメイン)になっているか。dmarc=passになっているか。- 署名が複数ある場合、自社ドメインのものが pass しているか。
この例では、SPFはサービスのドメインで pass していて差出人とは一致しませんが、DKIMがアラインしているのでDMARCは合格しています。DKIMの公開鍵は dig s1._domainkey.example.com TXT +short のように、セレクター名を付けて確認できます。
集計レポートで全体を確認する
テスト送信で確認できるのは、自分で送ったメールだけです。実際に送られているメール全体の状態は、DMARCの集計レポート(rua)で確認します。レポートの policy_evaluated にある dkim が pass なら、アラインしたDKIMで合格しています。auth_results の dkim が pass なのに policy_evaluated が fail なら、署名ドメインが一致していない送信元です。
レポートの宛先に別ドメインのアドレスを指定する場合は、受け取る側のドメインで受け入れを示すレコードが必要です。たとえば example.com のレポートを reports.example.net で受け取るなら、example.com._report._dmarc.reports.example.net に v=DMARC1 のTXTレコードを置きます。外部のレポート集計サービスを使う場合は、多くはサービス側で用意されていますが、案内を確認してください。
つまずきやすい点
- 鍵の公開漏れ:送信サービスで署名を有効にしても、DNSにレコードを追加し忘れると検証に失敗します。CNAMEの値の末尾に余分な文字が入っていないかも確認します。
- 転送やメーリングリスト:本文やヘッダーを書き換える経路を通ると署名が壊れます。DKIMだけでは防げないため、レポートで影響の大きさを見て判断します。
- 大量送信者向けの要件:Gmailなどは一定量以上を送る送信者に、SPF・DKIM・DMARCの設定と、差出人ドメインとのアラインメントを求めています(2026年10月現在)。条件や対象は変わることがあるので、各社の案内を確認してください。
まとめ
- DMARCは、SPFかDKIMのどちらかが pass し、そのドメインが差出人と一致したときに合格する。DKIMでは署名の
d=を比べる。 adkim=r(既定)は組織ドメインの一致で合格、adkim=sは同じドメインのみ。理由が無ければ relaxed でよい。- 送信元ごとに自社ドメインで署名させる。配信サービスは「ドメイン認証」などの設定とDNSレコードの追加で行う。
- WordPressはSMTPプラグインで送信サービスにつなぎ、差出人を署名ドメインのアドレスに合わせる。フォーム入力者のアドレスは Reply-To に。
- テスト送信のヘッダーと集計レポートの
policy_evaluatedで、アラインした pass になっているかを確認する。