SPF 這一個技術其實在防禦垃圾郵件(SPAM)已經行之有年了,但大部分系統管理者對於SPF運作原理似乎都不太熟悉,今天剛好有機會把這一個運作原理跟大家說明一下。
1. 基本運作原理
2. 設定SPF方式
3. 測試SPF運作
1. 基本運作原理
因為SMTP協定在寄件者欄位上是沒有規定不可以仿冒的,也就是說今天我寄信給你時,我可以造假任何網域(e.g [email protected]、[email protected]、[email protected]…etc),那當我今天以某間公司的域名來發送垃圾郵件時,收件人不就認為你這間公司怎麼都在濫發垃圾信件,自然會影響到公司商譽,造成很大的漏洞存在。
為了解決造假域名濫發信件的問題,我們可以透過SPF這個方式來保障網域持有者,避免被有心人士冒充發信的一種機制。
SPF 的全名是 Sender Policy Framework,這個機制的運作圖如下:
a. 在imprezagt1031.idv.tw DNS Server 上設定SPF TXT Record
“v=spf1 ip4:114.32.127.80/32 -all (限制只有114.32.127.80 才可以帶imprezagt1031.idv.tw 網域發信)
b. 寄信測試
[email protected] 透過Mail Server 114.32.127.80 寄信到[email protected]
[email protected] 透過Mail Server 143.25.99.63 寄信到[email protected]
c. Barracuda SPAM 收到來信後,開始查詢imprezagt1031.idv.tw DNS Server 上TXT Record,確認imprezagt1031.idv.tw 網域僅授權給IP:114.32.127.80發信,其餘發信IP皆為造假IP
2. 設定SPF方式
SPF 有幾種Action
Pass
|
寄送IP為SPF Record 所指定的IP
|
Fail
|
寄送IP不是為SPF Record 所指定的IP,並且不允許寄送
|
SoftFail
|
寄送IP不是為SPF Record 所指定的IP,但允許寄送
|
Neutral
|
寄送IP無論是否為SPF Record 所指定的IP,皆不影響寄送
|
None
|
此網域並未設定SPF Record
|
PermError
|
SPF Record上發生錯誤(可能是SPF Record 語法錯誤)
|
TempError
|
暫時無法查詢到SPF Record
|
DNS SPF 的Action 方式如下:
“-” Fail
all “~”SoftFail
“?”Neutral
V=spf1 使用SPF的版本
ip4 使用ipv4 來做SPF的設定
ip6 使用ipv6 來做SPF的設定
mx 使用mx紀錄來做SPF的設定
a 使用a紀錄來做SPF的設定
Windows Server 2008 R2 設定SPF Record 方式
執行伺服器管理員 → 腳色→ DNS 伺服器 → 正向對應區域 → 新增其他紀錄
選取 文字(TXT)
信件允許chmost.com 的MX Record發送信件
Bind 設定SPF Record 方式
信件允許chmost.com 的MX Record發送信件
#vim /var/named/chroor/var/named/db.chmost.com
3. 測試SPF運作
透過nslookup or dig 指令測試 SPF Record 是否生效
#nslookup
#dig @8.8.8.8 txt chmost.com
Barracuda SPAM 開啟SPF 檢查
BLOCK/ACCEPT → Sender Authentication
Sender Policy Framework (SPF) Yes
Tag On SPF Block
當設定Fail “-” 時,Barracuda SPAM 會自動封鎖信件
但實際使用此功能時,不少系統管理員都會忘記那些IP是公司會發送信件的IP,造成公司發送信件出去後被有開啟SPF的MTA給封鎖了,甚至還會被認為設備怎麼這麼容易誤判,真是辜負當初設計SPF的用意了,所以為了解決這一個問題,目前Barracuda SPAM有兩種方式
a. Sender Policy Framework (SPF) 使用Tag
b. SPF 仍然使用封鎖功能,使用SPF IP白名單
Refer:
http://www.openspf.org/SPF_Record_Syntax#include