用語辞典・メール

SPF

SPFとは

SPFは、そのドメインからメール送信を許可するサーバーをDNSで宣言する送信ドメイン認証方式です。正式名称はSender Policy Framework(センダー・ポリシー・フレームワーク)で、一般に「エスピーエフ」と読みます。

受信サーバーはSMTPで直接接続してきた送信元IPアドレスと、エンベロープFromのドメインを取り出し、そのドメインのDNS TXTレコードにあるSPF規則へ照合します。MAIL FROMが空の場合などはHELOドメインを使います。

SPFが認証するのは「この接続元が、このSMTPドメインを使うことを許可されているか」です。画面に見えるFrom、個人、本文の安全性を直接認証しません。

受信側が接続元サーバーを観測し、MAIL FROMのドメインがDNSで公開する許可集合と照合するメッセージ内に自由に書ける表示用Fromではなく、SMTP接続の事実を使う
受信サーバーが接続元の識別トークンを観測し、DNSの許可一覧にある送信サーバートークンと一致するかを比較するSPFのピクトグラム図解
図1封筒内の表示名や本文はSPFの比較対象ではありません。DMARCはSPFで認証したドメインとヘッダーFromの整合も確認します。

受信サーバーがSPF結果を出すまでを順に追う

SMTPセッションから検査対象を取り出し、DNS規則を上から評価して結果名へ変える接続境界で得たIPアドレスと正しいドメインを組み合わせる
  1. IP
    接続元IPを記録する

    最後に直接接続してきたSMTPクライアントのIPv4またはIPv6を使う

  2. Identity
    検査ドメインを選ぶ

    MAIL FROMのドメインを基本にし、空の逆方向経路ではHELOを評価する

  3. DNS
    TXTのSPFレコードを取得する

    対象名にある単一のv=spf1レコードを読み、構文とDNS制限を確認する

  4. Match
    機構を順に評価する

    接続元が最初に一致した機構の修飾子で結果を決める

  5. Result
    結果を認証情報として残す

    受信ポリシーやDMARCへ渡し、単独で本文の安全判定にはしない

図2過去のReceivedヘッダーに書かれたIPを無条件に使うのではなく、自分が信頼する受信境界で観測した接続元を使います。

SPFレコードはDNS TXTへ一つだけ公開する

SPFレコードは対象ドメインのTXTレコードに、バージョン識別子v=spf1から始まる文字列として置きます。専用のSPF型は廃止され、TXTだけを使います。同じ名前に複数のSPFレコードを置くと恒久エラーになります。

TXTレコードは他用途にも使うため、v=spf1で始まるものだけを選びます。DNS上では複数の文字列片に分割して格納できても、SPF処理では連結した一つのレコードとして読みます。

機構は「どの送信元を許可するか」を組み立てる

代表的な機構にはip4、ip6、a、mx、含む、exists、すべてがあります。ip4・ip6は直接アドレス範囲を示し、a・mxはDNS解決結果、含むは別ドメインのSPF評価結果を利用します。

各機構には+、-、~、?の修飾子があり、既定は+です。末尾の-すべては一致しなかった接続元を失敗、~すべてはsoftfailとします。含むは単なる文字列挿入ではなく、参照先評価が通過かを見る点に注意します。

結果は通過と失敗だけではない

SPFは通過、失敗、softfail、neutral、なし、temperror、permerrorを返します。なしは対象レコードがないなど主張なし、temperrorは一時的DNS障害、permerrorは構文や制限違反など恒久的な評価不能です。

受信側は結果を迷惑メール判定の一材料にします。SPF仕様はすべての結果に一律の配送処理を強制しません。通過でも悪意ある送信者が自分のドメインで正しく認証している場合があります。

DNS参照には処理上限がある

含む、a、mx、exists、リダイレクトなど、評価中にDNS参照を起こす用語には合計10回の上限があります。上限を超える構成はpermerrorになり、正当なメールの認証を壊せます。

送信サービスを増やすたび含むを重ねず、不要な参照を削り、IPv4・IPv6両方の送信元を台帳で管理します。DNS応答サイズ、循環参照、一時障害も監視します。

単純転送では、接続元と元のドメインの関係が切れる

転送サービスが元のエンベロープFromを保ったまま別の受信先へ再送すると、最終受信者から見た接続元IPは転送サーバーです。元ドメインのSPFがその転送サーバーを許可していなければ失敗になります。

SRSなどで逆方向経路を書き換える方法や、DKIMを併用してDMARCを通す方法があります。世界中の転送サーバーを元ドメインのSPFへ追加する解決はできません。

SPF通過とヘッダーFromの一致はDMARCが確認する

SPFだけなら、攻撃者が自分のドメインをMAIL FROMへ使って通過させながら、ヘッダーFromへ別組織のアドレスを表示できます。利用者が見るFromとSPF認証ドメインは別です。

DMARCは、SPF通過に使ったMAIL FROMドメインがヘッダーFromのAuthor Domainと整合しているかを評価します。DKIMでも同様に署名ドメインとの整合を確認できます。

公開前に全送信経路を列挙する

自社MTA、クラウドメール、フォーム、請求、採用、監視、マーケティング、委託先を洗い出します。見落とした正規送信元はSPF失敗となり、強いDMARCポリシー下で配送へ影響します。

送信サービス、接続元IP・含む、使用するMAIL FROM、IPv4・IPv6、廃止日を台帳化し、DNS検索数と実メールのAuthentication-Resultsを継続確認することが重要です。

方式と評価の確認資料:RFC 7208「Sender Policy Framework」RFC 8601「Authentication-Results」

関連用語