SPFレコード -- メール送信者認証

SPF(Sender Policy Framework)TXTレコードを作成して、ドメインのメール送信者を認証する方法を解説します。メカニズム、修飾子、ルックアップ制限を理解しましょう。

TXTSecurity

Zone File Entry

example.com.    IN    TXT    "v=spf1 include:_spf.google.com include:spf.protection.outlook.com ip4:203.0.113.0/24 -all"

詳細な説明

SPFレコードとは?

SPF(Sender Policy Framework)は、DNS TXTレコードとして公開されるメール認証メカニズムです。ドメインに代わってメールを送信することが許可されているメールサーバーを指定し、受信サーバーが偽造された送信者アドレスを検出できるようにします。

BINDゾーンファイルの構文

; Google Workspace用の基本的なSPF
example.com.    3600    IN    TXT    "v=spf1 include:_spf.google.com ~all"

; Microsoft 365用のSPF
example.com.    3600    IN    TXT    "v=spf1 include:spf.protection.outlook.com -all"

; 複数の送信者を含む複合SPF
example.com.    3600    IN    TXT    "v=spf1 include:_spf.google.com include:sendgrid.net ip4:203.0.113.50 -all"

SPFメカニズム

SPFレコードは、許可された送信者を定義する一連のメカニズムを使用します:

メカニズム 説明
ip4:x.x.x.x 特定のIPv4アドレスまたは範囲を許可
ip6:xxxx::xxxx 特定のIPv6アドレスまたは範囲を許可
include:domain 別ドメインのSPFレコードを含める
a ドメイン自身のAレコードのIPを許可
mx ドメインのMXレコードのIPを許可
all すべてにマッチ(最終的なキャッチオールとして使用)

修飾子

各メカニズムには修飾子を前置できます:

  • +(Pass、デフォルト)-- 送信者を許可
  • -(Fail)-- 未許可の送信者を拒否(ハードフェイル)
  • ~(SoftFail)-- 受け入れるが疑わしいとマーク
  • ?(Neutral)-- ポリシー表明なし

末尾の-allは「明示的に許可されていないものはすべて拒否」を意味し、最も厳格で安全な設定です。

10ルックアップ制限

SPFには重要な制限があります:評価時に最大10回のDNSルックアップしかできません。各include:amxredirectメカニズムは1回のルックアップとしてカウントされます。含まれるドメイン内のネストされたincludeもこの制限にカウントされます。

制限を超えるとPermErrorが発生し、一部の受信者はこれを失敗として扱います。制限内に収めるには:

  • 可能な場合はamxの代わりにip4:ip6:を使用
  • 送信者を統合し、未使用のinclude:エントリを削除
  • サードパーティの送信者が多い場合はSPFフラット化ツールを使用

ベストプラクティス

  • まず**~all**(SoftFail)で開始して監視し、すべての正当な送信者がリストされていることを確認してから-allに切り替える
  • ドメインごとにSPFレコードは1つだけ -- 複数のSPFレコードは評価エラーの原因になる
  • すべてのメカニズムを単一のTXTレコードにまとめる
  • どのサービスがドメインに代わってメールを送信しているか定期的に監査する

ユースケース

SPFレコードを追加して、メール送信サービス(Google Workspace、Microsoft 365、トランザクションメールプロバイダー)を認証し、未許可の送信者によるドメインのなりすましを防止します。

試してみる — DNS Record Generator

フルツールを開く