SPF/DKIM/DMARCとは?
SPF・DKIM・DMARCは、メールのなりすまし(フィッシング)を防止するための3つの送信ドメイン認証技術です。2024年2月からGoogleがGmailの送信者ガイドラインを強化したことで、これらの設定は現在すべてのメール送信者にとって必須となっています。
SPF(Sender Policy Framework)
SPFは、ドメイン所有者がDNSのTXTレコードに「どのメールサーバーがそのドメインからメールを送信してよいか」を宣言する仕組みです。受信サーバーは送信元IPアドレスをSPFレコードと照合し、許可されていないサーバーからのメールを検出できます。
include: 他ドメインのSPFレコードも参照
ip4 / ip6: 特定のIPアドレスを許可
a / mx: ドメインのA/MXレコードのIPを許可
-all: 上記以外はすべて拒否(推奨)
重要:
SPFのDNSルックアップは最大10回までに制限されています。include・a・mx・ptr・exists・redirect
がそれぞれ1回としてカウントされ、超過するとPermErrorが発生しメール認証に失敗します。
DKIM(DomainKeys Identified Mail)
DKIMは公開鍵暗号方式を使用してメールにデジタル署名を付与する技術です。送信サーバーが秘密鍵でメールヘッダーと本文に署名し、受信サーバーがDNS上の公開鍵で検証します。これにより、送信途中でメールが改ざんされていないことを証明できます。
- セレクタ: 公開鍵を識別するための名前(例:
google, selector1)
- 鍵長: 2048bit以上を推奨。1024bitは脆弱性のリスクあり
- 鍵タイプ: RSA(一般的)またはEd25519(最新)
DMARC(Domain-based Message Authentication, Reporting & Conformance)
DMARCはSPFとDKIMの認証結果に基づいて、認証に失敗したメールをどう扱うかのポリシーを定義する仕組みです。
p=none: 監視のみ(何もしない)— 導入初期向け
p=quarantine: 迷惑メールフォルダへ
p=reject: 配信を拒否(最も安全)— 最終目標
ruaタグで集約レポートの送信先メールアドレスを指定すると、認証結果のレポートが定期的に届き、不正なメール送信の検知や設定改善に役立ちます。
Gmailの送信者ガイドラインとは?
Googleは2024年2月から、Gmailへのメール送信に関する新しいガイドラインを施行しました。すべての送信者に対してSPFまたはDKIMの設定を求めており、1日5,000通以上送信する大量送信者にはより厳しい要件が適用されます。
すべての送信者の要件
- 送信ドメインにSPFまたはDKIM(できれば両方)を設定
- 送信ドメインまたはIPに有効なDNS逆引き(PTR)レコードを設定
- TLS接続でメールを送信
大量送信者(5,000通/日以上)の追加要件
- SPF と DKIMの両方を設定
- DMARCレコードを設定(最低でも
p=none)
- FromヘッダーのドメインがSPFまたはDKIMのドメインとアライメント
- ワンクリックでの配信停止をサポート
- 迷惑メール率を0.3%未満に維持
このツールでSPF・DKIM・DMARCの3つすべてが✅(合格)であれば、Gmailガイドラインの認証要件を満たしています。
主要メールサービスのDKIMセレクタ
DKIMセレクタはメールサービスによって異なります。セレクタが分からない場合は、以下の一覧を参考にしてください。本ツールでは空欄時に主要セレクタを自動検索します。
| メールサービス |
デフォルトセレクタ |
| Google Workspace(Gmail) |
google |
| Microsoft 365(Outlook) |
selector1, selector2 |
| Amazon SES |
カスタム(CNAMEベース) |
| SendGrid |
s1, s2 |
| Mailgun |
k1 |
| ProtonMail |
protonmail, protonmail2, protonmail3 |
| Zoho Mail |
default |
| 一般的なデフォルト |
default, dkim, mail |
メールヘッダーの DKIM-Signature フィールドにある s= タグからセレクタを確認することもできます。
DMARCの段階的強化手順
DMARCは最初からp=rejectにするのではなく、段階的にポリシーを強化することを推奨します。
ステップ1: 監視フェーズ(p=none)
v=DMARC1; p=none; rua=mailto:dmarc@example.jp
まずはp=noneでレポートを収集し、自社ドメインから送信されているメールの全体像を把握します。正規のメール送信元がすべてSPF/DKIMに対応しているか確認しましょう。
ステップ2: 隔離フェーズ(p=quarantine)
v=DMARC1; p=quarantine; pct=25; rua=mailto:dmarc@example.jp
pctタグを使って段階的に適用率を上げていきます(25% → 50% → 100%)。この段階では認証に失敗したメールは迷惑メールフォルダに振り分けられます。
ステップ3: 拒否フェーズ(p=reject)
v=DMARC1; p=reject; rua=mailto:dmarc@example.jp
最終的にp=rejectに設定することで、なりすましメールの配信を完全にブロックできます。この状態がメール認証の最高レベルです。
よくある質問
SPFレコードのinclude上限は?
SPFレコードのDNSルックアップは最大10回までです。include、a、mx、ptr、exists、redirectがそれぞれ1回としてカウントされます。超過するとPermErrorが発生し、メール認証に失敗します。ip4やip6はカウントされません。
DKIMセレクタとは?
DKIMセレクタは、DNS上のどの公開鍵を使ってメール署名を検証するかを特定するための名前です。メールサービスごとに異なり、セレクタ名._domainkey.ドメイン名というDNSレコードとして公開されます。
DMARC p=noneのままではダメ?
p=noneは監視モードであり、認証に失敗したメールに対して何のアクションも取りません。最初の導入時には適していますが、最終的にはp=quarantine(隔離)→p=reject(拒否)へ段階的に強化することが推奨されます。
DKIM鍵長は何bitがよい?
2048bit以上を推奨します。1024bitは数学的には安全ですが、計算能力の向上により将来的なリスクがあります。Google Workspaceでは2048bitの鍵がデフォルトで使用されます。
このツールは安全ですか?
はい。このツールはDNSの公開情報を照会するのみで、メールの内容やパスワードにアクセスすることはありません。入力されたドメイン名は保存・記録されません。
SPFレコードが複数あるとどうなる?
RFC 7208により、1つのドメインにSPFレコードは1つだけ許可されています。複数存在するとPermErrorとなり、認証が失敗します。すべてのメカニズムを1つのレコードに統合してください。
DMARCレポート(rua)はどこに送る?
ドメイン管理者のメールアドレスを指定します(例:
rua=mailto:dmarc-reports@example.jp)。外部ドメインのアドレスを指定する場合、そのドメイン側に外部DMARC承認レコードの設定が必要です。
nslookupやdigとの結果の違いは?
本ツールはサーバー側のDNSリゾルバを使用するため、ローカルのnslookupやdigコマンドと結果が異なる場合があります。DNSキャッシュやTTL値による一時的な差異が原因です。