一、前言:
SPF功能在於讓收件者端郵件伺服器根據寄件者網域,查找寄件者DNS Server TXT所定義之來源IP,與信件真實來源IP比對是否吻合,
決定是否接收或拒絕,避免駭客偽造寄件人網域寄信。
1.事先準備工作,請確認貴公司郵件主機對外IP有哪些。
2.對外發佈DNS主機新增TXT紀錄。
二、SPF格式 & 設定方式:
可以透過 SPF 產生工具,產生 SPF 格式,或是依照下方說明自行填寫 SPF 格式;
範例:
v=spf1 ip4:203.69.82.115 ip4:203.69.82.114 ip4:203.69.82.112 -all v=spf1 a mx -all v=spf1 redirect=_spf.google.com v=spf1 include:_netblocks.google.com include:_netblocks2.google.com ~all v=spf1 ip4:216.239.32.0/19 ip4:64.233.160.0/19 ~all
解說 :
v=spf1 ip4:203.69.82.115 ip4:203.69.82.114 ip4:203.69.82.112 -all 表示只允許這三個IP(對外IP)可以用這個網域來送出信件 v=spf1 a mx -all v=spf1 redirect=_spf.google.com v=spf1 include:_netblocks.google.com include:_netblocks2.google.com ~all v=spf1 ip4:216.239.32.0/19 ip4:64.233.160.0/19 ~all
SPF 記錄中的參數請參照下面的解說:
' v=spf1 ':目前所使用版本,請使用spf1即可。 ' a ' :比對 dns 中的 a 紀錄,若沒有指定哪個網域名,則以目前的的網域為主。 ' mx ' :比對 dns 中的 mx 紀錄,若沒有指定哪個網域名,則以目前的網域為主。 ' ptr ' :比對 dns 中的 ptr 紀錄,若沒有指定哪個網域名,則以目前的網域為主。 ' redirect ' :轉導向該指定hostname txt紀錄。 ' include ' :匯入(涵蓋)該指定hostname txt紀錄。 ' -all ':若比對失敗,拒絕該信件。(fail,建議使用) ' ~all ':若比對失敗,選擇是否接收。(soft fail)
建議盡量一行寫完 txt record,避免對方SPAM相容性無法找到多行,且一行中可不同參數混合使用,舉例:( @aol.com )
"v=spf1 ip4:204.29.186.0/23 include:spf.constantcontact.com include:aspmx.sailthru.com include:mail.zendesk.com include:_ipspf.yahoo.com ~all"
三、DNS Server設定方式:
1.以Windows Server中的 DNS Server 設定範例:
1)在網域名稱處按右鍵,選擇「新增其他記錄」
2)資源記錄類型選擇「文字(TXT)」
3)文字欄位填入參數設定(請依貴公司需求自行設計)若有多筆IP等需填入,請勿斷行,空格隔開接續填入。
四、檢視設定是否正確:
方法1.
http://www.kitterman.com/spf/validate.html
輸入貴公司網域:
點選”Get SPF Record(if any)”
測試結果:
方法二:
Console端 確認是否已可查找到TXT記錄:
$ dig m2ktrial.openfind.com.tw txt ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> m2ktrial.openfind.com.tw txt ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6026 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;m2ktrial.openfind.com.tw. IN TXT ;; ANSWER SECTION: m2ktrial.openfind.com.tw. 3600 IN TXT "v=spf1 ip4:211.20.183.163 ip4:211.20.183.164 ip4:211.20.183.161 ip6:2001:b034:0001:1600:0501:2576:ffff:ff00 ip6:2001:b034:0001:1600:0501:2576:ffff:ff01 ip6:2001:b034:0001:1600:0501:2576:ffff:ff02 -all" ;; Query time: 4 msec ;; SERVER: 168.95.1.1#53(168.95.1.1) ;; WHEN: Fri Sep 22 18:02:03 2017 ;; MSG SIZE rcvd: 255
方法三:
MG console端檢測對方來信來源IP是否可通過SPF驗證:(工具維修中,暫停使用!! )
底層測試工具(請使用webmail權限執行):
/mailgates/mg/util/mg_spf_test usage: mg_spf_test email [-q] [-c conf_path] -i ip -d domain - check email SPF -q: quiet mode -c: specify the spf configure file path(default: /mailgates/mg/etc/spf.conf mg_spf_test set [-s tag=value] [-c conf_path]- set SPF -s: set the conf's value by (tag=value;tag2=value2) -c: specify the spf configure file path(default: /mailgates/mg/etc/spf.conf ex. mg_spf_test set -s 'spf_check=xxxxxx;' valid tags: spf_check, log_path, log_level
測試驗證:待續.....
五、MG啟用方式:
MG啟用SPF驗證,若信件IP來自非對方DNS TXT宣告之IP,判斷為SPAM or REJECT,對方TXT若無設定,此項驗證則PASS:
六、技術小學堂:
1.MG底層conf:
/mailgates/mg/etc/spf.conf spf_check=PASS REJECT PASS enabled=0 mg=1
spf_check=
這行設定了三個 hit action,
第一個表示 當 SPF check 回傳值是 Pass 時, 所執行的動作;
第二個表示 當 SPF check 回傳值是 Fail 時, 所埶行的動作;
第三個表示 當 SPF check 回傳值為其他(none, softfail, error, neutral, unknown)時, 所執行的動作
2. SPF 2.0:
https://zh.wikipedia.org/wiki/Sender_ID
http://www.openspf.org/SPF_vs_Sender_ID