寄件者政策架構 SPF 語法說明

詳細說明請見:http://www.openspf.org/SPF_Record_Syntax

以下幾個關鍵字,用來敘述一個domain用來外寄郵件的主機,基本有以下幾種類型(Mechanism):
all | ip4 | ip6 | a | mx | ptr | exists | include

而domain也可以定義一些modifiers如下。其中modifier僅能出現一次
redirect | exp

Mechanism會有以下四種前綴,當有符合mechanism的結果時,就會採取前綴所代表的動作,先說明這些前綴代表的意義(沒有寫前綴時,預設是+):

"+" Pass 
"-" Fail 
"~" SoftFail 
"?" Neutral

語法範例如下:

"v=spf1 -all"          =>全部Fail
"v=spf1 a -all"        =>僅 a 紀錄的主機 Pass
"v=spf1 a mx  -all"    =>僅 a 及mx紀錄的主機Pass
"v=spf1 +a +mx -all"   =>同上

結果說明預期採取動作
PassSPF紀錄中指定允許傳送的主機accept
FailSPF紀錄中指定不該被傳送的主機reject
SoftFailSPF紀錄中指定不該被傳送的主機,但標示目前為過渡期accept but mark
NeutralSPF紀錄中沒有指定accept
None這個Domain沒有任何SPF紀錄accept
PermError永久性錯誤(可能是spf格式有誤)unspecified
TempError一次性的錯誤accept or reject

Mechanism說明:

all :所有的主機

ip4:指定的IPv4 的主機
範例:"v=spf1 ip4:123.123.123.123 -all"     =>僅123.123.123.123這台主機可以
      "v=spf1 ip4:192.168.0.1/16 -all"      =>192.168.0.1到192.168.255.255之間的主機

ip6:指定的IPv6 的主機
範例:"v=spf1 ip6:1080::8:800:200C:417A/96 -all"     =>僅123.123.123.123這台主機可以
      "v=spf1 ip6:1080::8:800:68.0.3.1/96 -all"      =>1080::8:800:0000:0000 到 1080::8:800:FFFF:FFFF之間的主機

a:A紀錄的主機
範例:"v=spf1 a -all"                             =>目前mail server所在的主機
     "v=spf1 a:example.com -all"                 =>僅確認mail server是否為example.com所在的主機
     "v=spf1 a:mailers.example.com -all"         =>僅指定的mailers.example.com主機     

mx:mx紀錄指定的主機,若沒指定domain,則採用目前的domain
範例:"v=spf1 mx mx:deff.domain.com -all"    =>目前domain所在主機及deff.domain.com     

ptr:不太會翻譯...請自己看

exists:不太會翻譯...自己看

include:看不太懂,感覺是這樣,先檢查include所指定的domain有沒有設定SPF紀錄,如果沒有的話,傳回永久性錯誤,如果有的話,則交給這個SPF紀錄來做判斷,但若沒有任何的match到,則交給後面的語法去判斷...自己看

講這麼多,最後附上微軟提供的SPF紀錄精靈