SPF

2022-09-18 (日) 15:02:22

SPFとは

名称

  • Sender Policy Framework

概要

  • メール差出人のメールアドレスがなりすましのドメインかを検知する仕組み。
    • 受信したメールのエンベロープ(SMTPプロトコルのMAIL FROM で指定された送信元)のメールアドレスのドメインの正当性を検証する。
    • メールの差出人(メールヘッダFrom)は偽装できるので、送信元のメールサーバのIPアドレスを使って偽装されたメールかを検証する。
    • 送信元のメールサーバのIPアドレスと、DNSサーバのSPFレコードに登録されているIPアドレスを突合して正しいか判断する。
    • SMTPサーバ上で検知する。
  • 経路途中のSPFに対応しているSMTPサーバがMAIL FROM で指定された送信元のドメイン名を変えずにメールをそのまま転送すると、認証に失敗する

セキュリティ上の効果

SPFの技術仕様

  • 受信側のメールサーバで以下の確認を行う
    • 受信したメールの送信元のメールサーバのIPアドレスが、受信したメールのメールヘッダのFromに指定されているメールアドレスのドメインの情報をDNSサーバに照会して取得したSPFレコードに登録されているIPアドレスに存在していることを確認する。
  • 受信したメールのメールヘッダFromに指定されているメールアドレスのドメインと、DNSサーバに登録されているSPFレコードに設定されているIPアドレスが一致していることを、受信側のメールサーバが確認する。

メールヘッダ

  • From: に設定されているメールアドレスを使ってSPFの検証を行う。
  • SPFの検証結果
    • Received-SPF:
    • Authentication-Results:

DNSサーバ

  • SPFレコード
    • DNSサーバに正当なメールアドレスのドメインとメールサーバのIPアドレスを登録する。
    • 送信元のメールサーバのIPアドレスを、TXTレコード形式で登録する。
    • 以前は、SPFレコードとTXTレコードの2つのリソースレコードを設定することが推奨されていたが、TXTレコードのみを設定すればよくなった。
    • https://tools.ietf.org/html/rfc7208#section-3.1
v=spf1 include:<domain-name> -all
v=spf1 a:<domain-name> include:<domain-name> -all
v=spf1 mx:<domain-name> include:<domain-name> -all
v=spf1 ip4:<ipv4-address> include:<domain-name> -all
v=spf1 ip4:<ipv4-address> -all
v=spf1 ip4:<ipv4-address1> ip4:<ipv4-address2> -all

メールサーバー

  • 基本的に、受信側のメールサーバーで検証を行う。
  • 受信側のメールサーバは、SPFに対応している必要がある。

メーラー

  • メーラーごとの設定は不要

ヘッダー情報

  • SPFの認証が成功した場合に出力されるヘッダー情報
    Authentication-Results: spf=pass (sender IP is xxx.xxx.xxx.xxx)

関連サイト

関連用語