什么是SPF
就是Sender Policy Framework。SPF可以防止別人偽造你來發(fā)郵件,是一個(gè)反偽造性郵件的解決方案。
當(dāng)你定義了你的domain name的SPF記錄之后,接收郵件方會(huì)根據(jù)你的SPF記錄來確定連接過來的IP
地址是否被包含在SPF記錄里面,如果在,則認(rèn)為是一封正確的郵件,否則則認(rèn)為是一封偽造的郵件。
關(guān)于更詳細(xì)的信息請參考RFC4408(http://www.ietf.org/rfc/rfc4408.txt)
如何增加SPF記錄
非常簡單,在DNS里面添加TXT記錄即可。登陸http://www.openspf.org/在里面輸入你的域名,點(diǎn)擊
Begin,然后會(huì)自動(dòng)得到你域名的一些相關(guān)信息。
a 你域名的A記錄,一般選擇yes,因?yàn)樗锌赡馨l(fā)出郵件。
mx 一般也是yes,MX服務(wù)器會(huì)有退信等。
ptr 選擇no,官方建議的。
a: 有沒有其他的二級(jí)域名?比如:mail.abc.com和www不在一臺(tái)server上,則填入mail.abc.com。
否則清空。
mx: 一般不會(huì)再有其他的mx記錄了。
ip4: 你還有沒有其他的ip發(fā)信?可能你的smtp服務(wù)器是獨(dú)立出來的,那么就填入你的IP地址
或者網(wǎng)段。
include: 如果有可能通過一個(gè)isp來發(fā)信,這個(gè)有自己的SPF記錄,則填入這個(gè)isp的域名,比如:
hichina.com~all: 意思是除了上面的,其他的都不認(rèn)可。當(dāng)然是yes了。
好了,點(diǎn)擊Continue…..
自動(dòng)生成了一條SPF記錄,比如abc.com的是
v=spf1 a mx ~all
并且在下面告訴你如何在你的bind里面添加一條
abc.com. IN TXT “v=spf1 a mx ~all”
加入你的bind,然后ndc reload即可。
檢查一下:
dig -t txt extmail.org
如果您的域名是由萬網(wǎng)的dns服務(wù)器進(jìn)行解析的,萬網(wǎng)的網(wǎng)頁上沒有設(shè)置TXT記錄的地方,但是如果
你的DNS主server是在Hichina的,可以在diy.hichina.com上設(shè)置。設(shè)置完畢后您即可以通過使用spf策
略進(jìn)行垃圾郵件驗(yàn)證了。
SPF 的 TXT 記錄
SPF 記錄包含在一個(gè) TXT 記錄之中,格式如下:
v=spf1 [[pre] type [ext] ] ... [mod]
每個(gè)參數(shù)的含義如下表所示:
參數(shù) |
描述 |
v=spf1 |
SPF 的版本。如果使用 Sender ID 的話,這個(gè)字段就應(yīng)該是 v=spf2 |
pre |
定義匹配時(shí)的返回值。
可能的返回值包括:
返回值 |
描述 |
+ |
缺省值。在測試完成的時(shí)候表示通過。 |
- |
表示測試失敗。這個(gè)值通常是 -all,表示沒有其他任何匹配發(fā)生。 |
~ |
表示軟失敗,通常表示測試沒有完成。 |
? |
表示不置可否。這個(gè)值也通常在測試沒有完成的時(shí)候使用。 |
|
type |
定義使用的確認(rèn)測試的類型。
可能的值包括:
候選值 |
描述 |
include |
包含一個(gè)給定的域名的測試 以 include:domain 的形式書寫。
|
all |
終止測試序列。 比如,如果選項(xiàng)是 -all,那么到達(dá)這條記錄也就意味著測試失敗了。但是如果無法確定,可以使用"?all"來表示,這樣,測試將被接受。
|
ip4 |
使用 IPv4 進(jìn)行驗(yàn)證。 這個(gè)可以以 ip4:ipv4 或 ip4:ipv4/cidr 的形式使用。建議使用這個(gè)參數(shù),以減少域名服務(wù)器的負(fù)荷。
|
ip6 |
使用 IPv6 進(jìn)行驗(yàn)證。
|
a |
使用一個(gè)域名進(jìn)行驗(yàn)證。 這將引起對(duì)域名服務(wù)器進(jìn)行一次 A RR 查詢。 可以按照 a:domain, a:domain/cidr 或 a/cidr 的形式來使用。
|
mx |
使用 DNS MX RR 進(jìn)行驗(yàn)證。 MX RR 定義了收信的 MTA,這可能和發(fā)信的 MTA 是不同的,這種情況基于 mx 的測試將會(huì)失敗。 可以用 mx:domain, mx:domain/cidr 或 mx/cidr 這些形式進(jìn)行 mx 驗(yàn)證。
|
ptr |
使用域名服務(wù)器的 PTR RR 進(jìn)行驗(yàn)證。 這時(shí),SPF 使用 PTR RR 和反向圖進(jìn)行查詢。如果返回的主機(jī)名位于同一個(gè)域名之內(nèi),就驗(yàn)證通過了。 這個(gè)參數(shù)的寫法是 ptr:domain
|
exist |
驗(yàn)證域名的存在性。 可以寫成 exist:domain 的形式。
|
|
ext |
定義對(duì) type 的可選擴(kuò)展。如果沒有這個(gè)字段,那么僅使用單個(gè)記錄進(jìn)行問詢。 |
mod |
這是最后的類型指示,作為記錄的一個(gè)修正值。
修正值 |
描述 |
redirect |
重定向查詢,使用給出的域名的 SPF 記錄。 以 redirect=domain 的方式使用。
|
exp |
這條記錄必須是最后一條,允許給出一條定制的失敗消息。
IN TXT "v=spf1 mx -all exp=getlost.example.com"
getlost IN TXT "You are not authorized to send mail for the domain"
|
|
參考文獻(xiàn)
SPF 官方網(wǎng)站。
SPF 官方 FAQ。
SPF 官方向?qū)А?/FONT>
openspf.org 對(duì)于 SenderID 的立場
一篇關(guān)于 Sender ID 和 SPF 的不錯(cuò)的文章。
轉(zhuǎn)向 SASL 時(shí)對(duì)用戶提出警示
HOWTO - 定義 SPF 記錄
該文章在 2013/9/27 23:48:05 編輯過