SPF : Sender Policy Framework

目次

SPFとは

SPFで記述するホスト情報は、限定子(qualifier)と機構(mechanism)

限定子(qualifier)
qualifier解説
+Pass認証成功
-Fail認証失敗。この定義にマッチするホストからはメールが送信されることはない
~SoftFail?認証情報を公開しているが、場合によっては認証できないメールも存在する
?Neutral認証情報を公開しない
機構(mechanism)
mechanism記述文法解説
allallすべてのホストにマッチする。All以降に記述されたほかのメカニズムやredirectモディファイヤは無視される。
SPFレコードの末尾に置かれ、else的な役割を持つ
includeinclude:ドメインスペックドメインスペックに指定されたドメインのSPFレコードを読み出しチェックを実施する
aa:ドメインスペックドメインスペックに指定されたホスト名のAレコードにマッチする
mxmx:ドメインスペック指定されたドメインスペックのMXレコードにリストされているホストのAレコードと比較する
ptrPTR:ドメインスペック該当接続の接続元IPアドレスをリバースルックアップして得たホスト名が
ドメインスペックに指定されたドメインに属しているかチェックする
ipv4ip4:ネットワークアドレス
またはIPアドレス
接続元のIPアドレスが指定されたネットワークに含まれているか、またはIPアドレスにマッチするかチェックする。
ネットワークの指定にはCIDR表記が可能
ipv6ip6:ネットワークアドレス
またはIPアドレス
接続元のIPアドレスが指定されたネットワークに含まれているか、またはIPアドレスにマッチするかチェック。
ただしIPv6のアドレス
existsexists:ドメインスペックドメイン名またはホスト名に指定された表記でAレコードルックアップを実施し、該当のAレコードが存在すればマッチする
修飾子(modifier)
modifier記述文法解説
redirectredirect=ドメインスペックドメインスペックに指定されたドメインでのチェックへ転送する。
include:と比較すると、同じ管理化にあるドメインへ定義を集約する場合に使う
expexp=ドメインスペックドメインスペックに指定されたドメインのTXTレコードに、認証できなかった場合の理由の
説明として扱われる文字列が含まれている

送信側の設定

SPFを利用するためには送信側でも設定を行わなければならない。送信側ではDNSとしてSPFレコードを追加する必要がある。SPFの説明で記述したコードに従い記述していく。 記述内容は簡単で、単にDNSのテキストレコードに記述するだけでよい。 BINDであれば記述するのは簡単なのだが、DJBDNSで記述しようとするとコロン(:)をそのまま記述できないためかなり悩みました。 とりあえず、例として「example.jp」というドメインで、メールサーバのIPアドレスが「192.168.0.254」というシステムにおけるのSPFレコードを記述してみることとします。 BIND

example.jp. IN TXT "v=spf1 mx:192.168.0.254 ~all"

DJBDNS

'example.jp:v=spf1 mx mx\072192.168.0.254:3600

DJBDNSの場合にはエスケープシーケンスを記述しなければコロンを記述できません。エスケープシーケンスは「\072」です。この後にIPであったり、ホスト名を記述すれば問題ありません。

受信側の設定

Postfixを用いたSPFの設定 CPAN

# perl -MCPAN -e shell
cpan> install Mail::SPF::Query
cpan> quit

参考ページ

SPF Project

CPAN Mail-SPF-Query


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-01-01 (日) 21:03:54 (2673d)