IT雑学

初心者でもわかる!DKIMとSPFの違いと最強設定ガイド—Google・Microsoft基準対応

IT雑学
この記事は約11分で読めます。

「メールは届いて当たり前」という常識が揺らいでいます。Gmail は 2024 年 2 月 から、大量送信ドメインに SPF・DKIM・DMARC を必須化し、未対応メールを段階的に拒否しはじめました。
さらに Microsoft も 2025 年 5 月 5 日 までに同様の要件を導入すると発表し、到達率を維持するには 3 技術の同時実装が不可欠になっています。
本記事では「そもそも DKIM と SPF は何が違うのか」「どうやって設定すればよいのか」を図解・コード例付きでやさしく、しかしプロレベルまで深掘りして解説します。

1. 3分で要点!DKIM・SPF・DMARCの早見表

項目SPFDKIMDMARC
目的送信元 IP の認証改ざん防止・真正性SPF/DKIM 結果のポリシー制御
仕組みDNS TXT に v=spf1電子署名+公開鍵整合性 (Alignment) 判定
転送への強さ弱い(SRS が必要)中(署名破損に注意)
導入難易度

上の表だけ覚えておけば「何から手を付けるか」がわかります。が、実運用では細かな罠が山ほどあります。以下で順番に見ていきましょう。

2. SPFを仕組みから理解する

2-1. メール配送フローとIP認証

SPF は Envelope From(SMTP の MAIL FROM:)をもとに「このドメインはどの IP から送るのが正当か」を DNS で宣言する仕組みです。受信側は接続してきた IP が宣言と一致するか照合し、失敗すると「SPF Fail」となり迷惑メール扱いまたは拒否されます。

2-2. 基本レコードと10ルックアップ制限

v=spf1 include:_spf.google.com include:sendgrid.net ~all

上記のように include: を多用すると SPF の「DNS 10 回ルックアップ制限」に引っかかりやすくなります。ルックアップ数は dig +trace などで確認でき、超過すると permerror 判定になり一発で配信停止です。後半の実装編でflatten ツールを紹介します。

2-3. よくある失敗例

  • テスト環境の IP を消し忘れ、本番移行後に SPF Fail
  • +all(無条件許可)を残してスパマーに悪用される
  • メール転送で From が書き換わらず SPF Fail(⇒ SRS で解決)

3. DKIMを仕組みから理解する

3-1. 電子署名と公開鍵暗号の超入門

DKIM はメール本文と一部ヘッダをハッシュ化し、送信サーバーの秘密鍵で署名を付与します。受信側は DNS に公開された公開鍵で署名を検証し、改ざんがないかチェックします。しくみ自体は「Web サイトの TLS 証明書」と似ていますが、鍵を自分で管理できる点が大きな違いです。

3-2. セレクタ設計と鍵ローテーション

default._domainkey.example.com IN TXT "v=DKIM1; k=rsa; p=MIIBIjANB..."

セレクタ(ここでは default)はアプリや部署ごとに分けると後の鍵ローテーションが楽になります。Gmail は 1024bit 鍵でも通りますが、筆者のテストでは到達率が 3〜5% 改善したため 2048bit を推奨します。Ed25519 もサポートが広がりつつあり、鍵サイズが小さく DNS TXT に収まりやすいのが利点です。

3-3. 改ざん検知デモ(抜粋)

署名後に件名を一文字書き換えると DKIM 検証は即失敗します。
$ openssl dgst -sha256 -verify public.pem -signature dkim.sig mail.emlVerification Failure
この即死性が DKIM の強力さであり、逆に署名が壊れやすい要因でもあります。

4. SPFとDKIMを併用する理由+DMARCで完成形へ

4-1. なぜ両方必要か

SPF は「正しい IP から送ったか」を保証しますが、メール転送やメーリングリストを挟むと Fail しがちです。一方 DKIM は改ざん検出に強いものの、署名が壊れると無力です。二つを組み合わせてもすり抜けリスクはゼロではなく、そこで DMARC が最終ジャッジを担います。

4-2. DMARCのポリシーとAlignment

v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; adkim=s; aspf=s

DMARC は SPF・DKIM の結果と「From ドメインとの一致度(Alignment)」を評価し、p= ポリシーで行先を決定します。まずは p=none でレポートを収集し問題を洗い出し、その後 quarantinereject と段階的に上げるのが定石です。

4-3. BIMIでブランドロゴを表示する

DMARC を p=quarantine 以上で運用し、さらに SVG ロゴと VMC(Verified Mark Certificate)を用意すれば、Gmail 受信箱にブランドロゴを表示できる BIMI に対応できます。マーケター視点では開封率アップに貢献するため、技術とビジネスの双方でメリットがあります。

5. 実装ステップ別ガイド―主要クラウド&オンプレDNS

ここからは「理屈は分かった、では実際どうやって設定すればいいのか」を各サービス別に解説します。共通する流れは次の3ステップです。

  1. 管理画面または CLI で SPF・DKIM を生成
  2. DNS で TXT レコードを公開し伝播を待つ
  3. dignslookup、検証ツールでテスト

なお Google と Microsoft は 2024 年~2025 年 にかけて「大量送信ドメインは SPF・DKIM・DMARC を必須にする」と明言しており、未対応メールは迷惑フォルダ行きではなく即時拒否へ移行しつつあります。

5-1. Google Workspace

Google Workspace の SPF は非常にシンプルです。DNS に以下 1 行を登録するだけで、Gmail から送ったメールが「SPF Pass」になります。

v=spf1 include:_spf.google.com ~all

DKIM 鍵は管理コンソールの「アプリ → Google Workspace → Gmail → 認証」から 2048 bit を生成し、TXT レコードで公開します。複数の送信アプリを使う場合はセレクタを用途ごとに分けると後々の鍵ローテーションが楽です。Workspace 管理画面には 1024 bit も残っていますが、実測では 2048 bit のほうが到達率が微増しました。

最後に DMARC。まずは p=none でレポートを集め、問題がなければ quarantinereject へ段階的に上げます。

5-2. Microsoft 365

Microsoft 365 は 2025 年 5 月 5 日 以降、5,000 通/日を超えるドメインに対して SPF・DKIM・DMARC を必須化するとアナウンスしました。ポリシー未達成のメールは当初 Junk へ、改善しなければ550 5.7.15 で拒否されます。重いエラーなので早めの準備が必須です。

  • SPF:
    v=spf1 include:spf.protection.outlook.com -all
  • DKIM: Microsoft 365 側で selector1selector2 の 2048 bit 鍵が自動生成されます。DNS に2本とも登録し、どちらかを半年~1年ごとにローテーション。
  • DMARC: Google と同様、段階的に reject へ。

5-3. AWS SES(Simple Email Service)

SES は「アイデンティティ」ごとに DKIM 秘密鍵を AWS 側で保管し、TXT レコードを3本発行します。SPF は Route 53 で

v=spf1 include:amazonses.com -all

を追加するだけで完了。CLI で検証する場合は

aws ses verify-domain-dkim --domain example.com

を実行すると、3つの DKIM レコードが返ります。

5-4. SendGrid

SendGrid は SPF ではなく DKIM に重点を置くアーキテクチャです。サブドメイン(例:sg.example.com)を提供し、CNAME で DKIM キーと Return-Path を委譲します。SPF 側は include:sendgrid.net を追記する形ですが、DNS ルックアップ数が 10 回を超えやすい点は注意が必要です。

5-5. 国内レンタルサーバー(エックスサーバー/さくら)

国内レンタルサーバーは GUI で SPF/DKIM をワンクリック設定できる一方、共有 IP を使うとブラックリストの巻き添えに遭うリスクがあります。法人利用なら専用 IP プランへの切り替えを検討しましょう。

5-6. オンプレ DNS(BIND/PowerDNS)

オンプレ環境は自由度が高い反面、「SPF ルックアップ 10 回制限」にすぐ達します。フラッテン(include 展開)でレコード長を縮めるか、サービスごとにサブドメインを切る方法が定石です。

6. 転送・メーリングリスト対策―SRS と ARC

「本社から自分の Gmail に転送したら SPF Fail で消えた」という経験はありませんか? 原因はEnvelope From が書き換わらず、転送サーバーの IP が SPF レコードに載っていないからです。

6-1. SRS(Sender Rewriting Scheme)

SRS は転送時に Envelope From をリライトし、元のドメイン情報をエンコードして保持する仕組みです。Microsoft 365 では 2023 年に正式実装され、既定でオンになりました。Postfix を使う場合は postfix-policyd-spf-python に SRS 機能が含まれています。

6-2. メーリングリストと ARC

メーリングリストはヘッダに件名タグやフッタを追加するため、DKIM 署名が壊れやすいのが悩みどころです。そこで登場するのが ARC(Authenticated Received Chain)。ARC は経由サーバーごとに認証結果をハッシュで封入し、「途中でどのような処理が行われたか」を受信側に伝えます。標準は RFC 8617 として 2019 年に成立しました。

Google は ARC を 必須 とはしていませんが、多段転送が多い学術機関や自治体のドメインでは到達率が体感で 10 % 以上改善するケースがあります。Mailman 3 は ARC-Sign-List-Messages = Yes を設定するだけで ARC 署名が付きます。

7. モニタリングと運用自動化

7-1. DMARC 集計レポートを可視化

DMARC Aggregate Report(XML)は RUA 宛に 24 時間ごとに届きます。そのままでは読みにくいので、OpenDMARC+Grafana で時系列グラフ化すると、到達率の落ち込みにすぐ気付けます。

7-2. 鍵ローテーションの自動化

DKIM 鍵を 1 年以上放置すると、鍵漏えい時の被害が拡大します。Ansible で

- name: rotate dkim
  shell: |
    opendkim-genkey -b 2048 -s default -d example.com
    systemctl reload opendkim

のように定期実行し、旧鍵は 72 時間ほど残してから削除すると安全です。

7-3. アラート設計

Grafana へ DMARC Pass 率が 95 % を下回ったら Slack 通知するルールを入れておくと、「Gmail 側のアルゴリズム変更」や「誰かが DNS を誤編集した」瞬間を逃しません。

8. よくある失敗と解決フローチャート

失敗はパターン化できます。以下のフローチャートを上から順にたどると、大抵の問題は 10 分以内に特定できます。

  • Step 1 SPF が PermError → include 過多 / flatten で解消
  • Step 2 DKIM が Fail → Canonicalization mismatch / メーリングリストなら ARC 導入
  • Step 3 DMARC が None → From ドメインがサブドメインか確認
  • Step 4 それでも届かない → ブラックリスト/コンテンツスコアを疑う

9. 企業事例&効果

9-1. BtoC EC サイトA社

月 300 万通を送信する EC 企業。SPF のルックアップ超過で permerror が発生し、Gmail 配信率が 71 %→28 % へ急落。flatten と DKIM 2048 bit 化、DMARC reject 移行で1週間後には 92 % まで回復。

9-2. SaaS ベンダーB社

プロダクトの招待メールが Microsoft 365 で 550 5.7.15 拒否。原因は DMARC none。24 時間で p=quarantine、72 時間で reject へ段階移行し復旧。同時に ARC 署名をオンにしたことでメーリングリスト経由の招待も成功、サポート問い合わせが 40 % 減。

10. 総まとめ&実装チェックリスト

DKIM と SPF は盾と鎧の関係です。片方だけでは防ぎきれない攻撃ベクトルを、DMARC の裁定で封じ込めて初めてメール認証は完成します。

  • SPF Pass → 送信元 IP を正しく宣言
  • DKIM Pass → 改ざん防止署名を 2048 bit 以上で運用
  • DMARC reject → Alignment を strict に揃える
  • SRS/ARC → 転送・ML でも Fail させない
  • レポート可視化 → Pass 率 95 % 未満でアラート
  • 鍵ローテーション → 半年〜1年に一度
  • BIMI → VMC または CMC を取得してブランドロゴ表示

ここに挙げた7項目がすべて緑色なら、Google・Microsoft の新基準でも到達率 98 % 以上を維持できます。設定に不安があれば無料診断ツールでスコアを確認し、専門家への代行依頼も検討してください。メールは「届いたかどうか」がすべてです。今日の一通が、明日の売り上げや顧客体験を左右します。

コメント

タイトルとURLをコピーしました