將之前處理過關於SPF比較有代表性的問題分享給大家。

環境描述如下:

  公司AD域名為contoso.com,公網SMTP域名也為contoso.com。使用的郵件伺服器為Exchange 2013 CU10,並使用Exchange Edge邊緣伺服器來實現垃圾郵件過濾。為了防止其他郵件系統仿冒域名contoso.com給其他域名傳送郵件。在公網DNS解析區域contoso.com中新增了SPF記錄,記錄內容為: v=spf1 MX A ip4:1.1.1.1 include:spf.contoso.com ~all。

問題現象:

  2016年某天,IT人員收到一封發件人為test@contoso.com的垃圾郵件,Exchange管理員查詢本地組織中不存在test@contoso.com這個郵件地址,很顯然這個地址test@contoso.com是仿冒地址。通過檢視郵件頭發現傳送仿冒郵件的公網IP為2.2.2.2,這個IP不是本組織的公網IP。為什麼新增了SPF和啟用了Exchange Send ID後仍然能夠收到仿冒郵件?(關於SPF和Send ID可以參考我的前次部落格內容:

http://jialt.blog.51cto.com/4660749/1769978 )

問題分析過程:

  在我之前寫的部落格中已經對SPF做過講解,如果要阻止仿冒郵件可以使用SPF記錄來實現,但是必須具備一定的條件。於是乎我進行了如下的檢查。

1、驗證域名contoso.com的SPF記錄新增是否存在問題,並且通過第三方網站去模擬仿冒郵件的過程,均是正常的。

2、檢查當前Exchange組織的Send ID功能是否啟用,經過檢查已經啟用。

3、檢查Exchange邊緣伺服器的Send ID功能是否正常工作,通過命令Test-SenderId -IPAddress 3.3.3.3 -PurportedResponsibleDomain 163.com ,返回的結果是正常。當我使用Test-SenderId -IPAddress 1.1.1.1 -PurportedResponsibleDomain contoso.com 返回的結果是找不到SPF記錄。

4、於是我懷疑是Exchange邊緣伺服器的DNS解析問題,檢查邊緣伺服器的DNS發現,邊緣伺服器使用的DNS為內部AD的IP,而內部contoso.com解析區域中沒有新增SPF記錄。所以會出現當邊緣伺服器接收到郵件後,通過DNS去查詢contoso.com的SPF列表時無法找到,從而不能阻止仿冒域名contoso.com的郵件。

   那麼問題原因找到,我們有兩種解決方法:1)、將邊緣伺服器的DNS更改為公網DNS。2)、在內部DNS解析區域contoso.com新增和公網一致的SPF記錄。