SPF

読み:えすぴーえふ / 英語表記:Sender Policy Framework

送信元のドメインが、そのメールサーバからの送信を許可しているか調べる送信ドメイン認証方式である。受信側は接続元のIPアドレスを、DNSで公開された送信許可の情報と照合する。主にSMTPのMAIL FROMで示されるドメインを確認する。

イマシルちゃんの解説

メールには、画面に表示される差出人とは別に、SMTPのMAIL FROMで伝える配送用の差出人もあるんだ。
SPFは、この配送用の差出人のドメインを名乗ってよい送信元かを調べる認証方式だよ。
ドメインの管理者は、送信を許可するメールサーバの情報をDNSのTXTレコードとして公開しておくの。
受信側はその情報と、実際に接続してきたサーバのIPアドレスを照合するんだ。
これで許可されていない送信元を見つけられるけれど、画面に表示される差出人やメールの内容まで正しいと保証するわけではないよ。

より深い解説

定義

SPF(Sender Policy Framework)は、RFC 7208で定められた送信ドメイン認証の技術である。メールの送信元のドメインの管理者が、そのドメインのメールを送信する正規のメールサーバのIPアドレスを、DNSのTXTレコード(SPFレコード)に記述して公開する。受信側のメールサーバは、メールを送ってきたサーバのIPアドレスが、そのリストに含まれているかを確認する。

仕組み

  1. 送信側のドメインの管理者が、DNSにSPFレコードを登録する
  2. メールを受信したサーバは、SMTPのMAIL FROMコマンドで示された送信者(エンベロープの送信者)のドメインを取り出す
  3. そのドメインのSPFレコードを、DNSに問い合わせる
  4. メールを送ってきたサーバ(SMTPの接続元)のIPアドレスが、SPFレコードに含まれているかを照合する

MAIL FROMが[email protected]なら、確認するドメインはexample.netである。本文中のメールアドレスや、画面に表示するヘッダーのFromから選ぶわけではない。

配送エラー通知などで配送用の差出人が空になる場合は、HELOまたはEHLOで示されたドメインを使って評価する。接続時に名乗るこのドメインを、通常の配送用の差出人とは別に検証することもできる。

SPFレコードの例

example.jp.  IN TXT  "v=spf1 ip4:192.0.2.10 include:_spf.mail.example.net -all"
記述意味
v=spf1SPFのバージョン
ip4:192.0.2.10このIPアドレスからの送信を認める
include:…指定したドメインのSPFレコードの内容も含める(外部のメール配信サービスを使う場合など)
-allそれ以外からの送信は認めない(fail)
~allそれ以外は許可する根拠が弱いとするsoftfail。受信側が扱いを決める

認証の結果

結果意味
pass正規のサーバから送られた
fail正規のサーバではない(なりすましの可能性が高い)
softfail正規のサーバではないが、厳密には判断しない
noneSPFレコードがない

結果をどう扱うか(拒否、隔離、受信して印を付けるなど)は、受信側が決める。この扱いを送信側が指定できるようにしたのがDMARCである。

SPFの弱点

弱点内容
転送に弱いメールが転送されると、転送したサーバのIPアドレスから送られるため、認証に失敗する
ヘッダーの送信者は確認しないSPFが確認するのはエンベロープの送信者で、利用者が画面で見るヘッダーのFromは確認しない
改ざんは検出できない送信元のサーバを確認するだけで、メールの内容の改ざんは検出できない

これらを補うため、DKIM(電子署名による認証)やDMARC(ヘッダーのFromとの整合の確認)と組み合わせて使う。

送信ドメイン認証の比較

技術確認の方法確認するドメイン
SPF送信元サーバのIPアドレスエンベロープの送信者(MAIL FROM)、またはHELOの識別情報
DKIM電子署名署名に記載されたドメイン(d=)
DMARCSPFとDKIMの結果と、ヘッダーのFromとの一致ヘッダーのFrom

参考資料

実際の試験ではここに出る!全6問

ネットワークスペシャリスト

午前Ⅱ
午後Ⅱ
午後Ⅰ

この用語が出てくる記事

↑