SPF詳細介紹

什麼是SPF?html

這裏的SPF不是防曬指數,而是指Sender Policy Framework。翻譯過來就是發信者策略架構,比較拗口,一般都直接稱爲SPF。
SPF是跟DNS相關的一項技術,它的內容寫在DNS的txt類型的記錄裏面。mx記錄的做用是給寄信者指明某個域名的郵件服務器有哪些。SPF的做用跟mx相反,它向收信者代表,哪些郵件服務器是通過某個域名承認會發送郵件的。
由定義能夠看出,SPF的做用主要是反垃圾郵件,主要針對那些發信人僞造域名的垃圾郵件。
例如:當coremail郵件服務器收到自稱發件人是spam@gmail.com的郵件,那麼到底它是否是真的gmail.com的郵件服務器發過來的呢?那麼咱們能夠查詢gmail.com的SPF記錄。apache

關於SPF的一些知識服務器

當前市場上不少郵件系統和供應商都已經開始支持SPF,好比163.com,那麼該如何獲得163.com的SPF值呢?在CMD環境中,鍵入:
nslookup
set type=txt
163.com
就會獲得如下的結果:
163.com text ="v=spf1 include:spf.163.com -all"
其中:="v=spf1 include:spf.163.com -all" 就是163.com的SPF值。這個數據中說明了163.com有效合法服務器都有哪些!
那麼咱們該如何建立呢?
進入域名解析建立一條TXT記錄填寫正確的SPF數據就能夠生效了。
在MDaemon7.x中啓用SPF功能,並做適當調整就能夠了。
另外8.x版本新增長了一個DomainKey簽名,不過MDaemon已經自動幫你建立。架構

另外給你們一個網址,很實用
http://www.microsoft.com/mscorp/safety/content/technologies/senderid/wizard/
這個網址是一個建立SenderID的嚮導網站,他能幫你建立一個SenderID值。
SenderID (寄件人身份識別技術)。
SPF(SenderPolicyFramework,寄件人政策架構)。
SenderID技術與SPF同樣,都是一種以IP(互聯網協定)位址認證電子郵件寄件人身份的技術。框架

SPF 簡介dom

SPF 是發送方策略框架 (Sender Policy Framework) 的縮寫,但願能成爲一個防僞標準,來防止僞造郵件地址。這篇文章對 SPF 進行了簡單介紹,並介紹了它的一些優勢和不足。
SPF 誕生於2003年,它的締造者 Meng Weng Wong 結合了反向 MX 域名解析(Reverse MX) 和 DMP (Designated Mailer Protocol) 的優勢而付予了 SPF 生命。
SPF 使用電子郵件頭部信息中的 return-path (或 MAIL FROM) 字段,由於全部的 MTA 均可以處理包含這些字段的郵件。不過微軟也提出了一種叫作 PRA (Purported Responsible Address)的方法。PRA 對應於 MUA (好比 thunderbird) 使用的終端用戶的地址。
這樣,當咱們把 SPF 和 PRA 結合起來的時候,就能夠獲得所謂的「Sender ID」了。Sender ID 容許電子郵件的接收者經過檢查 MAIL FROM 和 PRA 來驗證郵件的合法性。有的說法認爲,MAIL FROM 檢查由 MTA 進行,而 PRA 檢查由 MUA 來完成。
事實上,SPF 須要 DNS 以某種特定的方式來工做。也就是必須提供所謂的「反向 MX 解析」記錄,這些記錄用來解析來自給定域名的郵件對應的發送主機。這和目前使用的 MX 記錄不通,後者是用來解析給定域名對應的接收郵件的主機的。post

SPF 有哪些需求?

要想用 SPF 來保護你的系統,你必須:測試

  1. 配置 DNS,添加 TXT 記錄,用於容納 SPF 問詢的信息。
  2. 配置你的電子郵件系統(qmail, sendmail)使用 SPF,也就是說對服務器上每封進入的郵件進行驗證。

上述第一步要在郵件服務器所屬的域名服務器上進行調整,下一節中,咱們將討論這個記錄的細節內容。你首先須要肯定的一點是你的域名服務器(bind,djbdns)所使用的語法。但別擔憂,SPF 的官方網站提供了一個很好用的嚮導來指導你如何添加記錄。網站

SPF 的 TXT 記錄this

SPF 記錄包含在一個 TXT 記錄之中,格式以下:

v=spf1 [[pre] type [ext] ] ... [mod]


每一個參數的含義以下表所示:

參數 描述
v=spf1 SPF 的版本。若是使用 Sender ID 的話,這個字段就應該是 v=spf2
pre 定義匹配時的返回值。

可能的返回值包括:
返回值 描述
+ 缺省值。在測試完成的時候表示經過。
- 表示測試失敗。這個值一般是 -all,表示沒有其餘任何匹配發生。
~ 表示軟失敗,一般表示測試沒有完成。
? 表示不置能否。這個值也一般在測試沒有完成的時候使用。
type 定義使用的確認測試的類型。

可能的值包括:
候選值 描述
include 包含一個給定的域名的測試
以 include:domain 的形式書寫。
all 終止測試序列。
好比,若是選項是 -all,那麼到達這條記錄也就意味着測試失敗了。可是若是沒法肯定,可使用"?all"來表示,這樣,測試將被接受。
ip4 使用 IPv4 進行驗證。
這個能夠以 ip4:ipv4 或 ip4:ipv4/cidr 的形式使用。建議使用這個參數,以減小域名服務器的負荷。
ip6 使用 IPv6 進行驗證。
a 使用一個域名進行驗證。
這將引發對域名服務器進行一次 A RR 查詢。
能夠按照 a:domain, a:domain/cidr 或 a/cidr 的形式來使用。
mx 使用 DNS MX RR 進行驗證。
MX RR 定義了收信的 MTA,這可能和發信的 MTA 是不一樣的,這種狀況基於 mx 的測試將會失敗。
能夠用 mx:domain, mx:domain/cidr 或 mx/cidr 這些形式進行 mx 驗證。
ptr 使用域名服務器的 PTR RR 進行驗證。
這時,SPF 使用 PTR RR 和反向圖進行查詢。若是返回的主機名位於同一個域名以內,就驗證經過了。
這個參數的寫法是 ptr:domain
exist 驗證域名的存在性。
能夠寫成 exist:domain 的形式。
ext 定義對 type 的可選擴展。若是沒有這個字段,那麼僅使用單個記錄進行問詢。
mod 這是最後的類型指示,做爲記錄的一個修正值。

修正值 描述
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"

嘿!我是 ISP

ISP 實施 SPF 可能對於他們處於漫遊狀態(roaming)的用戶帶來一些麻煩,當這些用戶習慣使用 POP-before-Relay 這樣的方式處理郵件,而不是 SASL SMTP 的時候問題就會出現。

嗯,若是你是一個被垃圾郵件、地址欺騙所困擾的 ISP 的話,你就必須考慮你的郵件策略、開始使用 SPF 了。

這裏是你能夠考慮的幾個步驟。

  1. 首先設置你的 MTA 使用 SASL,好比,你能夠在端口 25 和 587 使用它。
  2. 告訴你的用戶你已經使用了這個策略(spf.pobox.com 給出了一個通知的例子,參見參考文獻)。
  3. 給你的用戶一個寬限期,也就是說,把你的 SPF 記錄加入到域名服務器之中,但使用「軟失敗」(~all)而不是「失敗」(-all)。

這樣,你就保護了你的服務器、你的客戶和整個世界免受垃圾郵件之類的困擾了。

SPF 的官方站點上有不少信息,還等什麼呢?

有什麼須要擔憂的?

SPF 是一個對於欺騙的完美保護。但它有一個侷限:傳統的郵件轉發方式再也不有效了。你不能僅僅從你的 MTA 接受郵件並簡單地從新發送它了。你必須重寫發送地址。常見的 MTA 的補丁能夠在 SPF 的網站找到。換句話說,若是你把 SPF 記錄加入到了域名服務器,你就必須更新你的 MTA 來進行發送地址改寫,即便你尚未對 SPF 記錄進行檢查。

結論

你可能以爲 SPF 的實施有點難以理解。不過這確實不算複雜,並且還有一個不錯的嚮導來幫你完成這個轉換(參見參考文獻)。

若是你被垃圾郵件所困擾的話,SPF 將能夠幫助你,保護你的域名免受僞造郵件地址的影響,你所要作的僅僅是在域名服務器上添加一行文本並配置你的電子郵件服務器而已。

SPF 的優勢有不少。不過,像我對一些人所說的,這不是一晚上之間就能夠達到的,SPF 的好處將經過日積月累來表現出來,當其餘人都使用它的時候就能明顯地看到了。

我也提到了 Sender ID,這和 SPF 有關,但我沒有去解釋它。可能你已經知道緣由了,微軟的策略一貫如此---軟件專利。在參考文獻中,你能夠看到 openspf.org 對於 Sender ID 的立場聲明。

下一篇文章中,咱們將討論 MTA 的設置,咱們到時再見。

我僅僅但願給你一個 SPF 的簡短說明。若是你對此感興趣,想要了解更多信息的話,你能夠看看參考文獻,本文的內容就來自於此。

解決MT發送郵件通知給GMail遇到的SPF校驗問題

blog系統有一個頗有用的功能就是郵件發送留言通知:可是發送到GMail郵箱的通知信十有八九都會被標記爲垃圾郵件。緣由就是SPF:Sender Policy Framework (SPF) 要作發送人校驗,而MT設置的發信人是留言者的郵件地址,而退信地址是MT系統所在服務器的郵箱。
Received-SPF: neutral (google.com: 60.195.249.163 is neither permitted nor denied by domain of apache@localhost.localdomain)
個人WEB服務器上沒有任何郵件系統。因此沒法經過SPF校驗,有嚴格的SPF校驗這也是GMail相對Spam比較少的緣由。

如何解決呢:
1 增長郵件系統,設置MX記錄等,須要學很多東西;
2 簡單的就是先發到不支持SPF校驗的郵件系統上,而後再轉發給GMail,這時候的退信地址已經轉發郵箱了:
Received-SPF: pass (google.com: domain of #####@yeah.net designates 60.12.227.137 as permitted sender)

什麼是SPF
SPF 是發送方策略框架 (Sender Policy Framework) 的縮寫,正在逐步成爲一個防僞標準,來防止僞造郵件地址。
您的域管理員或託管公司僅需在域名系統 (DNS) 中發佈 SPF 記錄。這些簡單的文本記錄標識了通過受權的電子郵件發送服務器(經過列出這些服務器的 IP 地址)。電子郵件接收系統會檢查郵件是否來自通過正確受權的電子郵件發送服務器。檢查步驟以下,發送人向接收方發送一封電子郵件後,郵件接收服務器接收電子郵件並執行以下操做:
• 檢查哪個域聲稱發送了該郵件並檢查該域的 SPF 記錄的 DNS。
• 肯定發送服務器的 IP 地址是否與 SPF 記錄中的某個已發佈 IP 地址相匹配。
• 對電子郵件進行打分:若是 IP 地址匹配,則郵件經過身份驗證並得到一個正分。若是 IP 地址不匹配,則郵件沒法經過身份驗證並得到一個負分。而後,對現有的防垃圾郵件篩選策略和啓發式篩選應用這些結果。


如何給郵件服務器增長SPF設置,請參考chicheng的文章:爲你的mail server增長SPF記錄

什麼是SPF
就是Sender Policy Framework。SPF能夠防止別人僞造你來發郵件,是一個反僞造性郵件的解決方案。當你定義了你的domain name的SPF記錄以後,接收郵件方會根據你的SPF記錄來肯定鏈接過來的IP地址是否被包含在SPF記錄裏面,若是在,則認爲是一封正確的郵件,不然則認爲是一封僞造的郵件。關於更詳細的信息請參考RFC4408(http://www.ietf.org/rfc/rfc4408.txt

如何增長SPF記錄
很是簡單,在DNS裏面添加TXT記錄便可。登錄 http://www.openspf.org/wizard.html 在裏面輸入你的域名,點擊Begin,而後會自動獲得你域名的一些相關信息。 a 你域名的A記錄,通常選擇yes,由於他有可能發出郵件。 mx 通常也是yes,MX服務器會有退信等。 ptr 選擇no,官方建議的。 a: 有沒有其餘的二級域名?好比:bbs.extmail.org和www不在一臺server上,則填入bbs.extmail.org。不然清空。 mx: 通常不會再有其餘的mx記錄了。 ip4: 你還有沒有其餘的ip發信?可能你的smtp服務器是獨立出來的,那麼就填入你的IP地址或者網段。 include: 若是有可能經過一個isp來發信,這個有本身的SPF記錄,則填入這個isp的域名,好比:sina.com ~all: 意思是除了上面的,其餘的都不承認。固然是yes了。 好了,點擊Continue..... 自動生成了一條SPF記錄,好比extmail.org的是 v=spf1 a mx ~all 而且在下面告訴你如何在你的bind裏面添加一條 extmail.org. IN TXT "v=spf1 a mx ~all" 加入你的bind,而後ndc reload便可。 檢查一下: dig -t txt extmail.org
相關文章
相關標籤/搜索