SPF (Sender Policy Framework) と DKIM (DomainKeys Identified Mail) は、メールの送信元ドメインが正当であることを検証するための認証技術です。両者とも DNS レコードを使って設定し、なりすましメール (スプーフィング) の防止に役立ちます。
SPF は「このドメインからメールを送信できるサーバーの IP アドレスはこれだけです」と DNS の TXT レコードに宣言する仕組みです。受信サーバーは送信元 IP アドレスが SPF レコードに含まれているかを照合しますが、結果は合否の 2 値ではなく、RFC 7208 では pass・fail・softfail・neutral・none・temperror・permerror の 7 種類が定義されています。fail は「そのホストにこのドメインを使う権限はない」というドメイン保有者側の明示的な表明であり、そのメールを拒否するかどうかは受信側のポリシーに委ねられています。逆に pass も、そのホストがドメインを使う権限を持っていたことしか示さず、メールの内容が安全であることの証明にはなりません。
DKIM はメールに電子署名を付与する仕組みです。送信サーバーは本文と、署名対象に選んだヘッダーフィールドのそれぞれについてハッシュ値を計算し、秘密鍵で署名します。公開鍵は「セレクタ._domainkey.ドメイン名」という形の名前で TXT レコードとして DNS に公開され、受信サーバーはそれを取得して署名を検証します。検証が通って言えるのは、署名された範囲の内容が署名後に変わっていないこと、そして署名ドメインがそのメールについて一定の責任を引き受けたことです。RFC 6376 は、それ以上のことはメールについて何も主張しないと明記しています。
短縮 URL を含むメールマーケティングでは、SPF と DKIM の設定が特に重要です。短縮 URL は行き先のドメイン名が隠れるため、受信者はリンクの文字列だけでメールの正当性を判断できません。送信ドメインの認証を整えることは、その足りない分を送信側で補う手立てになります。ただし境目は明確にしておく必要があります。SPF と DKIM が検証するのは送信ドメインであって、本文に書かれた短縮 URL の行き先ではありません。認証を通ったメールに危険なリンクが含まれていることもあるため、受信者側にはリンク先を事前に確かめる習慣が別途必要です。到達率については Google が、2024 年 2 月 1 日以降は Gmail アカウント宛に送るすべての送信者に SPF または DKIM の設定を求め、要件を満たさないメールは期待どおりに配信されない場合やスパムとして扱われる場合があると案内しています。
SPF と DKIM に加えて、DMARC (Domain-based Message Authentication, Reporting and Conformance) を設定すると、認証に失敗したメールの取り扱いを受信側に要請できます。ポリシーの値は none (特別な処理を求めない)、quarantine (疑わしいものとして扱う)、reject (拒否する) の 3 種類で、いずれも要請であり、RFC 7489 は最終的な処置が常に受信側のローカルポリシー次第であると述べています。DMARC でつまずきやすいのは識別子の整合 (alignment) です。SPF または DKIM が pass しても、その認証済みドメインが受信者に見える From ヘッダーのドメインと揃っていなければ DMARC は通りません。配信サービスの既定ドメインのまま送っていると、SPF と DKIM は成功しているのに DMARC だけ失敗する状態になりがちです。個人の Gmail アカウント宛に 1 日 5,000 通を超えて送る送信者に対しては、Google が SPF と DKIM の両方に加えて DMARC レコードの設定 (ポリシーは none でも可) を求めています。