株式会社ジオデータ開発 ロゴ
株式会社ジオデータ開発GEO DATA DEVELOPMENT Inc.
EMAIL AUTHENTICATIONDMARCSPFDKIMSMTP

送信ドメイン認証を体系的に理解するSPF・DKIM・DMARCは何が違う?

Gmailなどで使われる送信ドメイン認証の仕組みを、メール配送、DNS、SPF、DKIM、DMARC、From整合性、迷惑メール対策、DNS TXTレコードの実例から解説。判定を体験できる操作ラボ付き。

まず全体像

メールの「差出人」は書き換えられる。そこで、IP・電子署名・ドメインの一致を確かめる。

SPFは送信サーバーのIPアドレス、DKIMはメールへの電子署名、DMARCは見える差出人ドメインとの整合性を確認し、失敗時の扱いを伝える仕組みです。3つは競合する技術ではなく、それぞれ別の役割を担います。

SPF

このIPから送ってよい?

DKIM

署名と内容は正しい?

DMARC

Fromと整合し、失敗時どうする?

1. Gmailに届くメールは、どこから来る?

例えば、取引先から「請求書を送ります」と届いたメール。画面には「経理部 <billing@example.com>」と見えていても、誰がその文字列を書いたのかは、それだけでは分かりません。メールは手紙の封筒と便箋のように、配送に使う情報と画面で見える情報が別々だからです。

メール配送とDNS照会の全体像
送信者・送信SMTPサーバー
→
受信SMTPサーバー
↔
DNSサーバー
  1. 1. 利用者やアプリが送信サーバーへメールを提出(SMTP Submission、通常は認証あり)
  2. 2. 送信サーバーが宛先ドメインのMXレコードを調べ、受信サーバーへSMTPで配送
  3. 3. 受信側が送信IPをSPFで検査し、DKIM署名をDNS公開鍵で検証
  4. 4. DMARCを評価し、迷惑メール判定や受信ポリシーと合わせて処理

DNSは公開情報の参照先です。受信サーバーが毎回同じ1台のDNSサーバーに直接問い合わせる、という意味ではありません。

身近な例:Gmail・Outlookで受け取る

企業名に似せたFrom表示だけでは正当性を判断できません。受信側は送信元IPや署名などを照合し、迷惑メール対策にも利用します。

身近な例:独自ドメインでメールを送る

自社ドメインをGoogle WorkspaceやMicrosoft 365から送るときは、DNSのSPF・DKIM・DMARCを正しく構成する必要があります。配信サービスを追加した場合の設定も重要です。

SMTPは Simple Mail Transfer Protocol の略で、メールをリレーして配送するプロトコルです。受信メールをユーザーの端末へ取得するIMAPやPOP3とは役割が異なります。MX(Mail Exchanger)は配送先メールサーバーを示すDNSレコード、TXTはSPFやDMARC等のポリシー文字列を公開するためのレコードです。

2. なぜ差出人を偽装できるのか:FromとMAIL FROM

メールには、画面に表示される From: ヘッダーと、配送エラーの返送先などに使うSMTPの MAIL FROM(Envelope From)が存在します。後者は Return-Path として配送結果に残ることがあります。これらは同じとは限りません。

MAIL FROM:<bounce@mailer.example.net>     # SMTPの封筒側
RCPT TO:<staff@recipient.test>          # 配送先
DATA
From: "経理部" <billing@example.com>     # 画面で見える差出人
To: staff@recipient.test
Subject: 請求書のご連絡

3. SPF:どのメールサーバーから送信してよいか

SPFは Sender Policy Framework の略。受信サーバーが接続元IPと、SMTPのMAIL FROM(空の場合はHELO/EHLO側)に結び付くドメインのDNS設定を照合します。送信者が許可したサーバーから来たかどうかを判定します。

SPF:送信元IPと許可リストの照合
送信サーバー 203.0.113.10
→
受信サーバー
↔
example.com のDNS
  1. 1. 送信サーバーがSMTPで接続。受信側は接続元IP 203.0.113.10を知る
  2. 2. 受信側がMAIL FROMのドメインに対するSPF TXTを照会
  3. 3. DNSに許可IPがあればSPF PASS。許可外なら設定に応じFAIL等

203.0.113.0/24は説明用に予約されたIPv4アドレスです。From表示欄そのものの正しさは、SPFだけでは保証しません。

example.com. IN TXT "v=spf1 ip4:203.0.113.10 include:_spf.mail-provider.example -all"

v=spf1                 SPFレコードであることを示す
ip4:203.0.113.10       この送信元IPv4を許可
include:...            外部配信サービスのSPFも参照
-all                   どれにも一致しなければFail

正規のメールでも転送によって送信元IPが転送サーバーへ変わるため、SPFが失敗することがあります。~all はSoftfail、-all はFailという判定です。単純に「受信側が必ず拒否する命令」ではありません。

4. DKIM:メールに署名して検証する

DKIMは DomainKeys Identified Mail の略。送信側がヘッダーや本文から署名を生成し、受信側がDNSに公開された公開鍵で署名を検証します。改ざんの検知と、署名ドメインが管理する秘密鍵で署名されたことの確認に役立ちます。

DKIM:秘密鍵による署名とDNS公開鍵の検証
署名する送信サーバー
→
受信サーバー
↔
DNS公開鍵(selector._domainkey)
  1. 1. 送信側が秘密鍵でメールの所定のヘッダー・本文に対応する署名を計算
  2. 2. DKIM-Signatureヘッダー(d=署名ドメイン、s=セレクター等)を添付
  3. 3. 受信側がsとdからDNS公開鍵を取得し、受信データの署名を検証

本文が転送中に改変されるとDKIM検証が失敗することがあります。DKIMのPASSだけで、From欄のドメインまで同じとは限りません。

DKIM-Signature: v=1; a=rsa-sha256; d=example.com;
 s=mail2026; h=from:to:subject:date; bh=...; b=...

mail2026._domainkey.example.com. IN TXT
 "v=DKIM1; k=rsa; p=MIIBIjANBgkq..."

身近な例:メール配信サービス

ニュースレターや注文通知を外部サービスから送る場合、サービスが管理する秘密鍵で署名し、公開鍵を自社DNSに設定する運用があります。

電子署名とメールのDKIMの違い

PDFの個人署名とは異なり、DKIMは通常ドメインによるメッセージの署名です。「メールを書いた人の本人確認」まで保証するわけではありません。

5. DMARC:失敗したメールをどう扱ってほしいか

DMARCは Domain-based Message Authentication, Reporting and Conformance の略。SPFかDKIMの少なくとも一方が成功し、さらにその認証ドメインが表示Fromドメインと整合すればDMARCは成功します。両方の認証が単にPASSというだけでは不足する場合があります。

p=none

監視やレポート収集を重視し、DMARC失敗を理由とする特定の処理を要求しません。

p=quarantine

不審なメールとして隔離などの取り扱いを要求します。

p=reject

DMARCに失敗したメールを拒否するよう要求します。
_dmarc.example.com. IN TXT
 "v=DMARC1; p=reject; rua=mailto:dmarc-report@example.com; pct=100"

v=DMARC1           DMARCレコード
p=reject           認証不整合メールの拒否を要求
rua=mailto:...     集約レポートの送信先
pct=100            対象とする割合(RFC 7489)

Alignment(整合性)は重要なキーワードです。SPFの認証対象ドメイン(MAIL FROM)またはDKIMの署名ドメイン(d=)と、画面上のFromのドメインが整合しているかを見ます。実際のDMARCでは親子関係を認める緩和整合と完全一致を要求する厳格整合があり、設定次第です。

6. 操作して確認:SPFもDKIMもPASSなのにDMARCはFAIL?

攻撃者が attacker.net の正規メールサーバーを使い、そのドメインでDKIM署名を付けたメールの表示Fromだけ billing@example.com に偽装した場面を考えます。SPFとDKIMは「attacker.netとして」成功しても、example.comの正当性は証明されません。

INTERACTIVE LAB

メール認証の判定シミュレーター

送信元が正当か、ドメインは一致するか、失敗時はどう処理するかを1段階ずつ確認します。すべて架空のテストデータです。

送信サーバー198.51.100.40
受信サーバーSPF / DKIM / DMARC
DNSTXT / 公開鍵
From: user@example.com
MAIL FROM: bounce@attacker.net
DKIM-Signature: d=attacker.net; s=mail; ...
Connecting IP: 198.51.100.40

工程 1 / 4:SMTPの接続元IPと送信者アドレスを確認

「偽装メール」では攻撃者側ドメインのSPFとDKIMが両方PASSでも、表示Fromがexample.comなのでDMARCはFAILします。「転送されたメール」はSPFが転送者としてPASSでもFrom整合せず、DKIMが残ればDMARCはPASSする例です。

7. SMTP-AUTH・SPF・DKIM・DMARCを混同しない

技術役割主な確認主体身近な場面
SMTP-AUTH送信メールサーバーへの利用者認証投稿を受ける送信サーバーメールアプリから送信する際のアカウント認証
SPF送信元IPの許可確認受信サーバーDNSにGoogle Workspace等の送信経路を登録
DKIMドメイン署名と改ざんの検証受信サーバー外部サービスのメール署名を自社DNS公開鍵で検証可能にする
DMARCFrom整合性と失敗時ポリシー受信サーバーなりすまし対策でnone→quarantine→rejectを検討

SMTP-AUTHで正規ユーザーとしてログインしたからといって、受信先でSPF・DKIM・DMARCが必ずPASSするわけではありません。また、メールの暗号化を行うTLSやS/MIMEも送信ドメイン認証とは別の技術です。

8. メールの安全を支える関連技術

DNS・MX・TXT

MXはメール配送先、TXTはSPFやDMARC、DKIM公開鍵などを載せる場所。DNSキャッシュやTTLも設定反映のタイミングに影響します。

TLS・STARTTLS

メールサーバー間などの通信経路の暗号化です。経路上での盗み見対策ですが、差出人ドメインを認証するDMARCとは別目的です。

S/MIME・PGP

メール本文の暗号化や送信者の電子署名に利用します。メールの配送ドメインを評価するSPF/DKIM/DMARCとは区別します。

ARC(Authenticated Received Chain)

転送・メーリングリストなどで認証結果が変化した場合に、途中の認証情報を連鎖的に残す仕組みです。受信側がそれをどう信頼するかは別問題です。

また、DMARCは詐称Fromへの対策であり、正規ドメインを装う似た綴りのドメイン、乗っ取られた正規アカウント、悪意ある本文や添付ファイルを自動的に無害化するものではありません。認証の成功とメール本文の安全性は別です。

9. 実務でDNSを設定するときの進め方

自社ドメインでメールを運用するなら、最初に送信経路を棚卸しします。社員のメール、問い合わせフォーム、請求書発行システム、メールマガジン、CRMなど、どこから自社ドメインを名乗るかを把握します。

  1. 送信サービスと利用ドメインを一覧化し、SPFの許可元とDKIM署名設定を確認する。
  2. DMARCはまず集約レポートを分析できる構成から始め、正規メールが認証を通るか検証する。
  3. 転送、配信代行、複数のサブドメインによる不整合を修正する。
  4. 正規送信に問題がないことを確かめ、隔離・拒否などの厳格な方針を検討する。
  5. 新しい外部サービスを追加した際も、送信経路の変更を継続して確認する。

10. 覚えておきたい判断のポイント

「差出人IPをDNSで照合」ならSPF

接続してきたサーバーのIPが許可されているかを評価します。

「電子署名をDNS公開鍵で検証」ならDKIM

メールの所定部分への署名を検証します。

「送信側が認証失敗時の方針を指定」ならDMARC

From整合性を確認し、none・quarantine・reject等のポリシーを参照します。

「メール送信時に利用者が認証」ならSMTP-AUTH

送信先メールサーバーへの投稿を制限する認証です。

仕様・公式資料

詳細な定義はIETFの RFC 7208(SPF)、RFC 6376(DKIM)、RFC 7489(DMARC) を参照してください。