The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

Postfix啟用SPF檢查後記得將所有郵件伺服器IP加入白名單

我們公司有兩台 SMTP 伺服器,都是用 Linux 與 Postfix 架設的,也分別就是我們公司郵件域名 MX 紀錄中的那兩台,一般來說郵件都會直接寄進公司那台主要 SMTP 伺服器,但前幾天公司的 Postfix 郵件主機出狀況,導致信件全部都發到另一台備援用的 SMTP 伺服器了,修復之後郵件的確都已經轉發到主要 SMTP 伺服器上,大家也都正確收到斷線那段時間來的郵件,不過確有一封重要的客戶郵件被退信了,幾經研究後才發現原來是 SPF 紀錄搞的鬼,最後終於把問題搞定!

首先,我請客把退信內容寄到我 Gmail 信箱,研究過標題後看到一段重要的資訊:

Recipient address rejected: Message rejected due to: SPF fail - not authorized.

剛開始看到這錯誤,一時沒有反應過來,還以為是客戶的 SPF 沒有正確設定,導致被我們的郵件伺服器檔下,但仔細一看,這個錯誤訊息後面還有接上一段參考網址,如下:

Please see http://www.openspf.net/Why?s=mfrom;id=fromemail@example1.com;ip=10.2.3.3;r=myemail@example2.com> #SMTP#

這才發現,該退信訊息摘要上出現了一個 IP 是我們公司另一台備援 SMTP 伺服器的 IP 地址,這下才驚覺:原來這封信是從我們備援 SMTP 伺服器寄送到主要 SMTP 伺服器的過程,因為客戶網域設定了 SPF 紀錄而且允許發送郵件的來源 IP 不在 SPF 允許清單上的關係,導致信件被直接退回!

最後,我登入主要 SMTP 伺服器上,修改 /etc/postfix-policyd-spf-python/policyd-spf.conf 這個檔案的 skip_addresses 設定,這才解決無法從備援郵件伺服器送達主要郵件伺服器的問題!以下是設定檔範例:

skip_addresses = 127.0.0.0/8,::ffff:127.0.0.0//104,::1//128,10.2.3.3/32

 

相關連結