ブログ · SEO

SPF・DKIM・DMARC:なりすましメールを段階的に防ぐ方法

SPF・DKIM・DMARCがなければ、誰でもあなたのドメインから送信されたように見せかけたメールを送れてしまい、自社の正規メールも迷惑メールに振り分けられやすくなります。3つのレコードの連携、GmailとYahooの要件、無料のSPF・DMARCチェッカーがドメインをどう読み取るか、各結果の対処法を解説します。

Searvia · 2026/10/24 · 読了目安:3分

総務担当者が封をした封筒を木製の仕分け棚に振り分け、1通の封筒の封印を点検している様子

要点: SPFはドメインとして送信を許可するサーバーを一覧にし、DKIMは各メッセージに署名し、DMARCは表示されるFromアドレスのドメインについてどちらかが合格しているかを確認したうえで、失敗したメールをどう扱うかを受信側に伝えます。2024年2月以降、GmailとYahooはすべての送信者にSPFまたはDKIMを、大量送信者にはSPF・DKIM・DMARCのすべてを求めており、Gmailは2025年11月から執行をさらに強化しています。SPFレコードは1つだけ公開し、送信を行う各サービスでDKIMを有効にし、DMARCはレポート付きの p=none から始め、正規のメールが合格するようになったら p=quarantine または p=reject に移行しましょう。

メールは、誰が送信したかを証明する仕組みなしに設計されました。誰でもFromに billing@yourcompany.com と書けますし、認証レコードがなければ、受信サーバーはそれが偽物だと判断できません。これが、自社名を騙った請求書詐欺やフィッシングの仕組みであり、本物のメールがGmailに怪しいと見なされる理由でもあります。

SPF・DKIM・DMARCは、3つのDNSレコードでこの問題を解決します。このガイドでは、3つの連携の仕方、主要メールプロバイダーが求める要件、無料のSPF・DMARCチェッカーがドメインをどう読み取るか、そして自社のメールを壊さずにレコードなしの状態からポリシーの強制までたどり着く方法を説明します。

SPF・DKIM・DMARCの連携の仕組み

SPFDKIMDMARC
証明すること送信サーバーがそのドメインとして送信を許可されていることメッセージがドメインによって署名され、改ざんされていないこと人が目にするFromのドメインについてSPFまたはDKIMが合格したこと
確認するドメインエンベロープ送信者(MAIL FROM)またはHELO。表示されるFromではない署名の d= ドメイン表示されるFromドメイン
設定場所ドメインのTXTレコードselector._domainkey.domain のTXTレコード_dmarc.domain のTXTレコード
失敗時の動作受信側が判断受信側が判断自社のポリシー:none、quarantine、reject
レポートなしなしあり。rua アドレス宛ての集計レポート

SPFとDKIMだけの弱点は「確認するドメイン」の行にあります。RFC 7208によれば、SPFはMAIL FROMとHELOのIDを確認しますが、受信者がそれらを目にすることはありません。なりすまし犯は、自分のドメインでSPFに合格しながら、Fromには自社のドメインを表示できてしまいます。DMARCはアラインメントでこの隙間を塞ぎます。SPFまたはDKIMがFromドメインと一致するドメインで合格した場合にのみ、DMARCに合格します(緩やかなアラインメントでは、同じ組織のサブドメインも許容されます)。

1つのレコードで見るSPF

example.com.  TXT  "v=spf1 include:_spf.google.com include:sendgrid.net -all"

各 include はプロバイダーのサーバーを許可し、末尾の -all はそれ以外をすべて失敗とします。RFC 7208は修飾子を定義しています。- はfail、~ はsoftfail(「おそらく許可されていない」)、? はneutral、+ はpassです。+all はインターネット全体を許可してしまい、意味がなくなります。

1つのレコードで見るDKIM

メールプロバイダーは秘密鍵で送信メッセージに署名し、セレクターの下に公開するための公開鍵を提供します。例:google._domainkey.example.com。送信サービスごとに独自のセレクターを使うため、複数のDKIM鍵を同時に持てます(RFC 6376)。

1つのレコードで見るDMARC

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

p はドメインのポリシー、sp はサブドメインのポリシーで、rua は受信側から届く日次の集計レポートの宛先です。レポートには、どのサーバーがあなたのドメインとしてメールを送信し、それが合格したかどうかが記載されています。

DMARC標準は2026年に更新されました

2026年5月、IETFはRFC 9989を公開しました。これは当初のDMARC仕様であるRFC 7489を廃止し、DMARCをStandards Trackに移行するものです。既存のレコードはそのまま動作し、バージョンタグも引き続き v=DMARC1 です。知っておきたい変更点は次のとおりです。

受信側が新ルールに移行する速度はまちまちで、Google自身の設定ガイドも導入期間中は引き続き pct を推奨しています。pct を使っても問題は起きませんが、正確な割合として頼らないようにしましょう。

GmailとYahooの要件

両プロバイダーとも、2024年2月から送信者要件の執行を開始しました。

要件すべての送信者大量送信者(Gmail:Gmailアカウント宛てに1日5,000通以上)
認証SPFまたはDKIMSPFおよびDKIM
DMARC不要必須。ポリシーは p=none でも可
アラインメントFromドメインがSPFまたはDKIMとアラインしていること
スパム率0.3%未満0.3%未満
配信停止マーケティングメールにはワンクリック配信停止。Yahoo:2日以内に対応
その他有効な正引き・逆引きDNS、RFC 5322形式。Gmail:TLS同左

出典:Googleの送信者ガイドラインとYahooの送信者ベストプラクティス。Googleは、認証されていないメッセージは「迷惑メールとしてマークされたり、5.7.26エラーで拒否されたりする可能性がある」と警告しており、そのFAQでは「2025年11月から、Gmailは要件を満たさないトラフィックに対する執行を強化している」とし、一時的および恒久的な拒否が行われるとしています。同じFAQは、DMARCをSPFとDKIMの両方でアラインさせることを推奨し、このアラインメントは将来的に要件になる可能性が高いとしています。

1日の送信数が5,000通よりはるかに少なくても、これらのレコードは、請求書やパスワードリセット、返信が受信トレイに届くかどうか、そして他人があなたの名前で説得力のあるメールを送れるかどうかを左右します。

Searvia SPF・DMARCチェッカーの仕組み

無料のSPF・DMARCチェッカーはウェブサイトSEOチェッカーの一部で、メール認証のチェックを最初に表示します。ドメインを入力すると(先頭の www. は取り除かれます)、次の処理を行います。

結果条件メッセージ
合格有効なSPFレコードが1つで、DMARCポリシーが quarantine または reject「SPF and an enforced DMARC policy are set.」(DMARCに rua アドレスがない場合は注記付き)
警告SPFレコードが複数「The domain has N SPF records; with more than one, SPF fails.」
警告SPFルックアップが10回超「SPF needs at least N DNS lookups; above 10, SPF fails.」
警告DMARCが p=none「DMARC is set to "none", so spoofed email still reaches inboxes.」
警告SPFあり、DMARCなし「DMARC is missing.」
警告DMARCあり、SPFなし「SPF is missing.」
不合格どちらのレコードもなし「Neither SPF nor DMARC is set, so anyone can send email in your name.」

監査全体では、このチェックの優先度は中です。DMARCに関する判定が厳しい点に注意してください。p=none はGmailの最低要件は満たしますが、なりすましを止められないため警告が表示されます。

無料チェックが対象としない項目:

結果の読み方

対処法をステップごとに解説

ステップ1:自社ドメインとしてメールを送信するものをすべて洗い出す

メールボックスプロバイダー(Google Workspace、Microsoft 365)、メルマガツール、CRM、ヘルプデスク、請求ソフト、ECプラットフォーム、ウェブサイトの問い合わせフォーム、通知を送信するサーバーなどです。ここで1つでも漏らすと、後でDMARCを強制したときにうまくいかなくなる最大の原因になります。

ステップ2:SPFレコードを1つだけ公開する

プロバイダーが独自のエンベロープドメインで送信する場合(メルマガツールでよくあります)、そのプロバイダーをSPFに含める必要はまったくありません。DMARCに合格するには、自社ドメインでのDKIMが必要です。

ステップ3:すべての送信元でDKIMを有効にする

各サービスでドメイン認証またはDKIMの設定を見つけ、案内されたレコード(セレクター配下のTXTまたはCNAME)を公開して、署名を有効にします。Googleは、SPFとDKIMを設定してからDMARCを追加するまで48時間待つことを推奨しています。その後、Gmailアドレスにテストメールを送り、「Show original」(原文を表示)を確認します。SPF: PASS、DKIM: PASS、DMARC: PASS が表示されれば成功です。

ステップ4:レポート付きのp=noneでDMARCを公開する

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

Googleは、p=none から始め、必ず rua を含めることを推奨しています。集計レポートはXMLファイルで、DMARCレポートサービスやパーサーを使うと読みやすくなります。レポートの宛先が別ドメインにある場合は、そのドメイン側でDNSレコードによる許可が必要です。

ステップ5:レポートを読んで失敗を修正する

2〜4週間かけて、SPFまたはDKIMのアラインメントに失敗している正規のサービスを探します。それぞれに、自社ドメインでのDKIM署名かSPFのincludeが必要です。転送されたメールやメーリングリストは、正当な理由で失敗することがあります。RFC 9989は、ユーザーがメーリングリストに投稿するドメインは、p=reject にする前に、p=none で少なくとも1か月、p=quarantine で同程度の期間を過ごすことを提案しています。

ステップ6:quarantine、そしてrejectへ移行する

_dmarc.example.com.  TXT  "v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@example.com"
_dmarc.example.com.  TXT  "v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com"

一度に1段階ずつ変更し、レポートを見続けましょう。p=quarantine に到達すると、当チェッカーでは合格になります。目標は p=reject で、失敗したメールを受信側が拒否します。

ステップ7:メールを送信しないドメインを保護する

パークドメインやリダイレクト専用ドメインは、誰も監視していないため、なりすまし犯に狙われやすくなります。英国政府のガイダンスは次のように推奨しています。

example.net.               TXT  "v=spf1 -all"
_dmarc.example.net.        TXT  "v=DMARC1; p=reject; sp=reject; adkim=s; aspf=s"
*._domainkey.example.net.  TXT  "v=DKIM1; p="
example.net.               MX   0 .

レコードを自分で確認する

チェッカーが読み取るのはSPFとDMARCですが、標準的なDNSツールを使えば3つすべてのレコードを確認できます。macOSまたはLinuxの場合:

dig +short TXT example.com
dig +short TXT _dmarc.example.com
dig +short TXT google._domainkey.example.com

Windowsでは、nslookup -type=TXT _dmarc.example.com で同じことができます。DKIMにはセレクターが必要です。プロバイダーのDKIM設定画面に表示されるほか、送信したメッセージの DKIM-Signature ヘッダーに s= として含まれています。Google Workspaceの既定値は google です。プロバイダーによっては、鍵を自社のDNSを指すCNAMEとして公開していますが、それで問題ありません。

最も確実なエンドツーエンドのテストは、実際にメッセージを送ることです。各サービスからGmailアドレスにメールを送り、「Show original」を開いてください。SPF、DKIM、DMARCの結果と、それぞれが合格したドメインが表示されます。DKIMが自社ではなくプロバイダーのドメインで合格している場合、DMARCのアラインメントはまだ失敗しているので、結果に自社ドメインがあるか確認しましょう。

よくある間違い

間違い影響対処法
SPFレコードが2つある(プロバイダーごとに1つずつ作ってしまうことが多い)permerror:どこでもSPFが失敗1つのレコードにまとめる
ルックアップが10回超permerror古いincludeを削除し、不要な ptr や mx は避ける
+all または ?allSPFが全員を許可する、または何も言わない-all または ~all で終える
DMARCを _dmarc ではなくルートに設定DMARCが見つからない_dmarc.example.com で公開する
ずっと p=none のままレポートは届くが保護はなしquarantineとrejectへの移行を計画する
DKIMのない送信元がある強制時にDMARCに失敗そのサービスで自社ドメインのDKIMを有効にする
サブドメインの見落としmail.example.com 経由のなりすましsp= を設定し、送信を行うサブドメインを確認する

具体例(仮想)

以下は仮想の例であり、実際のデータではありません。架空のクリニック「Pinecrest Dental」は、患者から、クリニックを名乗る偽の支払い請求メールを受け取ったと知らされます。SPF・DMARCチェッカーの結果は次のとおりです。

ステップ1で、3つの送信元が見つかります。Google Workspace、リマインダーをメールで送る予約システム、メルマガツールです。予約システムにはSPFのincludeが必要です。メルマガツールは独自のエンベロープドメインを使うため、代わりにクリニックのドメインでのDKIMを設定します。クリニックはレポート宛先付きの p=none でDMARCを公開します。2週間分のレポートから、予約システムはSPFに、メルマガはDKIMに合格していることがわかり、加えて、海外の未知のサーバーから届く数百通のメッセージが両方に失敗していました。これがなりすましです。クリニックは p=quarantine に移行し、チェッカーで合格となり、1か月後に p=reject へ進みます。これで、クリニックを騙る偽メッセージは、DMARCを適用する受信側で拒否されるようになります。

今週中に終えられるチェックリスト

Searviaによるメール認証の監視

無料のSPF・DMARCチェッカーは、サインアップ不要で数秒のうちにレコードを読み取ります。これは、サイトの検索表示、速度、セキュリティも対象とする38項目の監査の一部です。

Searviaの無料アカウントでは、毎週のセキュリティスキャンが加わり、メールについてさらに踏み込んだチェックを行います。SPFレコードの欠落や緩すぎる設定(+all、?all、または all がまったくない)、DMARCポリシーの欠落や p=none のままの状態、CAAレコードの欠落を検出し、それぞれの検出結果の根拠となるDNSルックアップと、コピーして使えるレコードを提示します。スキャンは毎週木曜日に繰り返されるため、DNSの変更でレコードが壊れても、1週間以内に表面化します。ウェブサイト側のセキュリティについては、セキュリティヘッダーガイドをご覧ください。

よくあるご質問

SPF、DKIM、DMARCの違いは何ですか?
SPFは、ドメインとして送信を許可するサーバーを一覧にします。DKIMは各メッセージに暗号署名を付け、受信側はDNS上の公開鍵と照合して確認します。DMARCは、これらを人が目にするFrom行のアドレスに結び付けます。From ドメインとアラインするドメインでSPFまたはDKIMが合格すればDMARCに合格し、DMARCポリシーは、失敗したメッセージの扱いとレポートの送り先を受信側に伝えます。
SPFとDKIMがあればDMARCは不要ですか?
いいえ、必要です。SPFとDKIMだけでは、人が目にするFromアドレスは保護されず、チェックに失敗したときの扱いも受信側に伝わりません。DMARCがその結び付けとポリシーを加えます。GmailとYahooは、大量送信者にSPFとDKIMに加えてDMARCレコード(最低でも p=none)を求めており、Gmailは、Gmailアカウント宛てに1日5,000通以上送信する人を大量送信者とみなします。
どのDMARCポリシーを使うべきですか?
まず p=none とレポート収集用の rua アドレスから始めます。これにより、配信に影響を与えずに、自社ドメインとして送信しているすべてのサービスが分かります。正規のメールがすべてアラインメント付きでSPFまたはDKIMに合格するようになったら、p=quarantine、続いて p=reject に移行します。なりすましメールを実際に止められるのは quarantine または reject だけで、p=none は監視のみです。
SPFレコードがpermerrorで失敗するのはなぜですか?
最も多い原因は2つあります。1つは、ドメインにSPFレコードが複数あることで、RFC 7208はこれがpermerrorになるとしています。もう1つは、include、a、mx、ptr、exists、redirect による DNSルックアップが上限の10回を超えることです。すべてを1つの v=spf1 レコードにまとめ、使っていないサービスのincludeを削除してください。
メールを送信しないドメインを保護するにはどうすればよいですか?
どのサーバーもそのドメインとして送信できないことを示す v=spf1 -all のSPFレコードと、p=reject のDMARCレコードを公開します。英国政府のこうしたドメイン向けガイダンスでは、サブドメイン向けの sp=reject、空のDKIMレコード、ヌルMXレコードも追加します。これにより、パークドメインやリダイレクト専用ドメインがフィッシングに悪用されるのを防げます。

ソース

  1. Email sender guidelines – Google Workspace Admin Help
  2. Email sender guidelines FAQ – Google Workspace Admin Help
  3. Set up DMARC – Google Workspace Admin Help
  4. Sender Best Practices – Yahoo Sender Hub
  5. RFC 7208: Sender Policy Framework (SPF) – IETF
  6. RFC 6376: DomainKeys Identified Mail (DKIM) Signatures – IETF
  7. RFC 9989: Domain-Based Message Authentication, Reporting, and Conformance (DMARC) – IETF
  8. RFC 7489: Domain-based Message Authentication, Reporting, and Conformance (DMARC) – IETF
  9. Protect domains that do not send email – GOV.UK

続きを読む