DNS中的SPF記錄的做用

SPF是爲了防範垃圾郵件而提出來的一種DNS記錄類型,它是一種TXT類型的記錄,它用於登記某個域名擁有的用來外發郵件的全部IP地址。例如:
html

 
 
  1. dig TXT 21cn.com 服務器

  2.   21cn.com. 27970 IN TXT "v=spf1ip4: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" dom

按照SPF的格式在DNS記錄中增長一條TXT類型的記錄,將提升該域名的信譽度,同時能夠防止垃圾郵件僞造該域的發件人發送垃圾郵件。
SPF是跟DNS相關的一項技術,它的內容寫在DNS的txt類型的記錄裏面。mx記錄的做用是給寄信者指明某個域名的郵件服務器有哪些。SPF的做用跟mx相反,它向收信者代表,哪些郵件服務器是通過某個域名承認會發送郵件的。
由定義能夠看出,SPF的做用主要是反垃圾郵件,主要針對那些發信人僞造域名的垃圾郵件。
ide

  添加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」
spa


(3)-all 定義匹配時的返回值,可有以下選擇:
  1) + 缺省值。在測試完成的時候表示經過。
  2) – 表示測試失敗。這個值一般是 -all,表示沒有其餘任何匹配發生。
  3) ~ 表示軟失敗,一般表示測試沒有完成。
  4) ? 表示不置能否。這個值也一般在測試沒有完成的時候使用。
因此「v=spf1 ip4:67.202.107.106 -all」的意思是這個域只有67.202.107.106這個IP能夠發郵件出來,其餘IP的都是非法的。
orm


如何在 DNS Server 設定 SPF

SPF 說明:
SPF 的全寫是 Sender Policy Framework,它是一個能夠保障域名持有人,免被 spammers 冒充發信的一種機制。作法是在域名的 DNS 內加入 SPF record,說明這個域名只會透過那些主機發送郵件,而 SPF record 的格式以下為:
       v=spf1 [[pre] type [ext] ] … [mod]
若是不熟悉 SPF record 也沒關係,我覺得反正不是經常要用到,在 SPF 的官方網站提供了一個很方便的 SPF WIZARD,它會根據你的設定給出一個 SPF record 的字串,直接加入 DNS 及從新啟動便可。
http://old.openspf.org/wizard.html?mydomain=&x=35&y=6 (The SPF Setup Wizard)

補充說明:
SPF 是 Sender Policy Framework 的簡寫, 它是用識別寄件者的來源 IP 位址是否偽造的技術, 這是放在 DNS Server 上的一種技術, 向人說明 cpc.com.tw 寄出的郵件, 其來源 IP 位址都會 203.69.155.3。假設, xxx@cpc.com.tw 寄給 yahoo 時, 他會去看 cpc.com.tw 的 DNS Server 所宣稱的來源 IP 位址與目前的來源 IP 位址是否一致, 是的話, 這應該就是可信的寄件者。        



若是在 DNS Server 中加入一筆 SPF record:
1. Linux Bind
       假設我們的域名為 hgiga.com, 其出去的 IP 位址有210.241.239.221, 203.69.97.156, 210.241.239.253
       設在 /var/named/hgiga.com.hosts 中, 加入內容以下:

               hgiga.com.                500     IN      TXT     "v=spf1 ip4:210.241.239.221 ip4:203.69.97.156 ip4:210.241.239.253
- all"

       誠如您所看到的, 它是一筆 TXT 記錄。 500 是設定 TTL (Time To Live) 的秒數。500秒意指這個設定 500 秒內都不需重讀。

2. Solaris        
       假設個人域名為 cpc.com.tw, 出去的 IP 位址有 203.69.155.3
       設在 /var/named/named.data 中, 加入內容以下:
               cpc.com.tw.     500     IN      TXT     "v=spf1 ip4:203.69.155.3 mx a:ap1.cpc.com.tw a:ap2.cpc.com.tw a:ap3.cpc.com.tw
- all"
       然後再 kill -1 named.pid 使設定生效



測試 SPF 記錄是否有成功:
1. http://www.seoconsultants.com/tools/spf/
       輸入 Domain, 如 hgiga.com; 然後再輸入來源 IP 位址, 如 210.241.239.221, 獲得 Result 為 Pass, 表示為可信任的來源
2. http://www.dnsreport.com/
       輸入 Domain, 如 hgiga.com, 在 Mail 那塊的檢測的最後一部份, 會說您有 SPF record.
3. 利用 dig 指令
       # dig txt hgiga.com
       ;; ANSWER SECTION:
       hgiga.com.              500     IN      TXT     "v=spf1 ip4:210.241.239.221 ip4:203.69.97.156 ip4:210.241.239.253 -all"



附註:
1. Perl CPAN Library: Mail::SPF:uery (此 Library 可用來查詢 SPF record, 藉此驗來寄件者的來源 IP 是否可信)        
2. SPF 官方網站: http://www.openspf.org/
相關文章
相關標籤/搜索