2026年5月19日

2026年5月19日

SPF・DKIM・DMARCの設定を確認する方法|digでのDNS確認と受信メールのヘッダーでの検証

SPF・DKIM・DMARC は、メールの送信元のドメインがなりすまされていないかを、受信したサーバーが確かめるための仕組みです。設定がないか間違っていると、自分のドメインから送ったメールが迷惑メールに分類されたり、受け取りを拒否されたりします。

この記事では、3つの設定を DNS とメールのヘッダーで確認する方法を説明します。記録の書き方の基準は RFC 7208(SPF)、RFC 6376(DKIM)、RFC 7489(DMARC)、Gmail の送信者の要件は Google の「メール送信者のガイドライン」の2026年10月時点の内容です。example.com は自分のドメインに置き換えてください。

3つの仕組みの違い

仕組み 確かめること DNS の場所 対象のドメイン
SPF 送ってきたサーバーの IP アドレスが、そのドメインから送ってよいサーバーか ドメイン自体の TXT(example.com) エンベロープの差出人(Return-Path のドメイン)
DKIM メールに付いた電子署名が正しいか(途中で書き換えられていないか) セレクター._domainkey.example.com の TXT 署名の d= のドメイン
DMARC SPF か DKIM の結果が、From: のドメインと一致した形で合格しているか。不合格のときの扱い _dmarc.example.com の TXT From: ヘッダーのドメイン

SPF と DKIM はそれぞれ別のドメインを確かめるので、どちらかに合格しても、受信者が目にする From: のドメインが正しいとは限りません。DMARC は、SPF か DKIM で合格したドメインが From: のドメインと一致すること(アラインメント)を求めることで、この穴をふさぎます。

確認を始める前に

メールを送っているサービスをすべて洗い出しておきます。たとえば、自社のメールサーバー、Google Workspace や Microsoft 365、メルマガの配信サービス、問い合わせフォームのメールを送る Web サーバー(WordPress など)です。SPF にはこれらすべてを含める必要があり、DKIM はサービスごとに署名の設定があります。

DNS を調べるには dig を使います。Debian / Ubuntu では bind9-dnsutils(または dnsutils)、RHEL 系では bind-utils パッケージに含まれます。Windows では nslookup -type=TXT ドメイン名 で同じ内容を確認できます。

SPF を確認する

dig +short TXT example.com

ドメインの TXT レコードがすべて表示されます。その中の v=spf1 で始まるものが SPF です。

"v=spf1 ip4:203.0.113.10 include:_spf.google.com -all"
書き方 意味
ip4:203.0.113.10 / ip6:... この IP アドレス(範囲)から送ってよい
a / mx このドメインの A レコード / MX レコードのサーバーから送ってよい
include:_spf.google.com 指定したドメインの SPF に書かれたサーバーも許可する(外部のサービスを使うとき)
-all 上に当てはまらないサーバーは不合格(fail)
~all 上に当てはまらないサーバーは「おそらく不正」(softfail)
?all 判定しない(neutral)

include: の先の内容も、同じように dig +short TXT _spf.google.com で確認できます。

SPF のよくある間違い

  • v=spf1 のレコードが2つ以上ある。 SPF は1つのドメインに1つだけです。複数あると結果がエラー(permerror)になります。サービスを追加するときは、新しいレコードを作らず、既存のレコードに include: を足します。
  • DNS の参照が10回を超える。 include・a・mx・ptr・exists・redirect は DNS の参照を伴い、include の先で使われている分も含めて合計10回を超えるとエラーになります。不要になったサービスの include: を消して減らします。
  • 送信に使っているサーバーが含まれていない。 Web サーバーからフォームのメールを送っている場合などに起こります。そのサーバーの IP アドレスを ip4: で追加するか、送信を許可済みのメールサーバー経由に変えます。
  • 確認するドメインが違う。 SPF が確かめるのは From: ではなく、エンベロープの差出人(受信したメールの Return-Path: ヘッダー)のドメインです。配信サービスによっては Return-Path がサービス側のドメインになっています。

DKIM を確認する

DKIM の公開鍵は セレクター._domainkey.ドメイン の TXT レコードに置かれます。セレクターは送信するサービスごとに決まっている名前で、ドメインだけでは調べられません。

セレクターを見つける

自分のドメインから送ったメールを受信し、ヘッダーの DKIM-Signature: を見ます。

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com; s=default; ...

d= が署名したドメイン、s= がセレクターです。この例では default._domainkey.example.com に公開鍵があります。DKIM-Signature: がない場合は、そのメールは DKIM で署名されていません。送信サービス側で署名の設定を有効にします。

公開鍵のレコードを確認する

dig +short TXT default._domainkey.example.com
"v=DKIM1; k=rsa; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..."
  • p= の後ろが公開鍵です。長い鍵は "..." "..." のように複数の文字列に分かれて表示されますが、受信側では1つにつなげて読まれるので問題ありません。
  • p= の後ろが空(p=; または p= で終わる)の場合、その鍵は無効にされています。
  • 何も表示されない場合は、セレクターかドメインが違うか、レコードがまだ登録されていません。
  • Microsoft 365 などでは、selector1._domainkey が CNAME でサービス側のレコードを指す形になっています。dig はその CNAME をたどって TXT を表示します。

Google は、DKIM の鍵の長さを 1024 ビット以上とし、2048 ビットを推奨しています。

自分のサーバーで OpenDKIM を使っている場合

OpenDKIM の opendkim-testkey(Debian / Ubuntu では opendkim-tools パッケージ)で、DNS の公開鍵とサーバーの秘密鍵が対応しているかを確認できます。

sudo opendkim-testkey -d example.com -s default -k /etc/opendkim/keys/example.com/default.private -vvv

key OK と表示されれば一致しています。key not secure は DNSSEC で保護されていないという意味で、署名の検証には影響しません。秘密鍵の場所はサーバーの OpenDKIM の設定に合わせてください。

DMARC を確認する

dig +short TXT _dmarc.example.com
"v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com"

何も表示されない場合は DMARC が設定されていません。主なタグは次のとおりです。

タグ 意味
p= 不合格のメールの扱い。none(何もしない、監視だけ)、quarantine(迷惑メールとして扱う)、reject(受け取りを拒否する)
sp= サブドメインに対する扱い。省略すると p= と同じ
rua= 集計レポートの送り先。受信したサーバーから、合否の集計が XML で届く
ruf= 失敗したメールごとの詳細レポートの送り先(送ってこない受信サーバーも多い)
pct= ポリシーを適用する割合(%)。省略すると 100
adkim= / aspf= アラインメントの判定。r(緩やか、初期値)または s(厳密)

サブドメイン(news.example.com など)に _dmarc のレコードがない場合は、組織のドメイン(example.com)の DMARC が使われ、sp= が適用されます。

アラインメントとは

DMARC に合格するには、次のどちらかが必要です。

  • SPF に合格し、その SPF のドメイン(Return-Path のドメイン)が From: のドメインと一致している
  • DKIM に合格し、その署名の d= のドメインが From: のドメインと一致している

r(緩やか)では、mail.example.com と example.com のように組織のドメインが同じなら一致とみなされます。s(厳密)ではドメインが文字どおり同じである必要があります。

外部の配信サービスを使っている場合、SPF は Return-Path がサービスのドメインになるため一致しないことがよくあります。その場合でも、サービスで自分のドメインの DKIM 署名(d=example.com)を設定すれば DMARC に合格します。

ポリシーを強める順番

いきなり p=reject にすると、洗い出し漏れのサービスから送ったメールが届かなくなります。まず p=none と rua= で集計レポートを受け取り、正規の送信元がすべて合格していることを確かめてから、p=quarantine、p=reject の順に強めます。

受信したメールで認証結果を確かめる

DNS のレコードが正しくても、実際に送ったメールで合格しているとは限りません。自分のドメインから Gmail のアドレスにメールを送り、受信した側で結果を確認します。

Gmail では、メールを開いて右上の「その他」(縦の3点)から「メッセージのソースを表示」を選ぶと、先頭に SPF・DKIM・DMARC の結果が PASS / FAIL などで表示されます。

ヘッダーの Authentication-Results: には、次のように詳しい結果が記録されます。

Authentication-Results: mx.google.com;
       dkim=pass header.i=@example.com header.s=default header.b=AbCdEfGh;
       spf=pass (google.com: domain of info@example.com designates 203.0.113.10 as permitted sender) smtp.mailfrom=info@example.com;
       dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=example.com
項目 見るところ
spf= pass か。smtp.mailfrom= が SPF で確かめたドメイン
dkim= pass か。header.i= / header.s= が署名のドメインとセレクター
dmarc= pass か。header.from= が From: のドメイン。p= は適用されたポリシー

spf=softfail や spf=fail なら送信サーバーが SPF に含まれていない、dkim=fail なら公開鍵の不一致や本文の書き換え、dkim=none なら署名がない、dmarc=fail なら SPF・DKIM のどちらも From: のドメインと一致した形で合格していない、と見当を付けられます。

Gmail の送信者の要件

Google は2024年2月から、Gmail の個人アカウントあてに送るすべての送信者に、SPF か DKIM の設定を求めています。1日に5,000通を超えて送る送信者には、SPF・DKIM・DMARC のすべてと、From: のドメインが SPF か DKIM のドメインと一致していること(アラインメント)を求めています。この場合の DMARC のポリシーは p=none でもよいとされています。すべての送信者には、ほかに正引き・逆引きの DNS、TLS での送信、迷惑メールの報告率を 0.3% 未満に保つことなども求められ、大量に送る送信者には、マーケティングメールをワンクリックで配信停止できるようにすることも求められています。

WordPress から送るメールの確認

WordPress の問い合わせフォームや通知のメールは、初期状態では Web サーバーから直接送られます。このとき From: は自分のドメインでも、送信元の IP アドレスが SPF に含まれていない、DKIM の署名がない、Return-Path がサーバーのホスト名になっている、といった理由で DMARC に不合格になることがあります。

自分あてにフォームのメールを送り、上の方法で Authentication-Results: を確認してください。不合格の場合は、SMTP プラグインで認証済みのメールサーバー(DKIM 署名と SPF の設定があるもの)から送るように変えるのが一般的な対処です。

まとめ

  • SPF は dig +short TXT example.com、DKIM は dig +short TXT セレクター._domainkey.example.com、DMARC は dig +short TXT _dmarc.example.com で確認する
  • DKIM のセレクターは、受信したメールの DKIM-Signature: の s= で調べる
  • SPF は1ドメインに1レコード、DNS の参照は10回まで
  • DMARC の合格には、SPF か DKIM のドメインが From: と一致していることが必要。外部サービスでは DKIM の独自ドメイン署名が鍵になる
  • 最終的な確認は、実際に送ったメールの Authentication-Results: で行う
  • DMARC は p=none で様子を見てから強める

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ
▲