SPF是為了防范垃圾郵件而提出來的一種DNS記錄類型,它是一種TXT類型的記錄,它用於登記某個域名擁有的用來外發郵件的所有IP地址。例如:
dig TXT 21cn.com 21cn.com. 27970 IN TXT "v=spf1 ip4:202.105.45.0/24 ip4:61.140.60.0/24 ip4:202.123.79.206 ip4:220.232.167.218 ip4:221.192.129.0/24 ip4:59.36.102.0/24 -all" 按照SPF的格式在DNS記錄中增加一條TXT類型的記錄,將提高該域名的信譽度,同時可以防止垃圾郵件偽造該域的發件人發送垃圾郵件。
SPF是跟DNS相關的一項技術,它的內容寫在DNS的txt類型的記錄裡面。mx記錄的作用是給寄信者指明某個域名的郵件服務器有哪些。SPF的作用跟mx相反,它向收信者表明,哪些郵件服務器是經過某個域名認可會發送郵件的。
由定義可以看出,SPF的作用主要是反垃圾郵件,主要針對那些發信人偽造域名的垃圾郵件。
添加SPF記錄的方法:
這方法很簡單,只要我們的DNS供應商提供的管理界面中可以添加SPF記錄就可以設置了(不是所有的供應商會提供這設置,我的域名是在godaddy.com上注冊的,可以設置SPF記錄)。設置時,添加一個SPF記錄,然後輸入域名,如果是本域,可用@來表示。然後在VALUE中輸入如“v=spf1 ip4:67.202.107.106 -all”的值。 這值分三部分:
(1)v=spf1 說明是一個SPF的v1記錄
(2)ip4:67.202.107.106 說明郵件會從此聲明IPv4地址發出。它可以是一個IP,或一個IP段。如果有多個IP或多個IP段的話,可以聲明多個ip4記錄(如“ip4:1.0.1.0/24 ip4:1.0.2.0/24″),每個ip4記錄間用空格分隔。另外,除了用IPv4外,還可以有如下選擇:
1) ip6: 使用IPv6 進行驗證。
2) a: 使用一個域名進行驗證。這將引起對域名服務器進行一次A RR 查詢。可以按照a:domain, a:domain/cidr 或a/cidr 的形式來使用。
3) mx: 使用DNS MX RR 進行驗證。MX RR 定義了收信的MTA,這可能和發信的MTA 是不同的,這種情況基於mx 的測試將會失敗。 可以用mx:domain, mx:domain/cidr 或mx/cidr 這些形式進行mx 驗證。
4) ptr: 使用域名服務器的PTR RR 進行驗證。這時,SPF 使用PTR RR 和反向圖進行查詢。如果返回的主機名位於同一個域名之內,就驗證通過了。這個參數的寫法是ptr:domain
5) exist: 驗證域名的存在性。可以寫成exist:domain 的形式。
6) ext: 定義對type 的可選擴展。如果沒有這個字段,那麼僅使用單個記錄進行問詢。
7) 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”
(3)-all 定義匹配時的返回值,可有如下選擇:
1) + 缺省值。在測試完成的時候表示通過。
2) – 表示測試失敗。這個值通常是-all,表示沒有其他任何匹配發生。
3) ~ 表示軟失敗,通常表示測試沒有完成。
4) ? 表示不置可否。這個值也通常在測試沒有完成的時候使用。
所以“v=spf1 ip4:67.202.107.106 -all”的意思是這個域只有67.202.107.106這個IP可以發郵件出來,其他IP的都是非法的。
本文出自 “redhat” 博客