Domain-Name-System

如何在 CloudFlare 下配置郵件伺服器 SPF 記錄?

  • August 6, 2017

一段時間以來,我一直在使用 Google Apps for Business 為我的域提供電子郵件服務。我正在設置新的儲存伺服器,並希望在本地伺服器上單獨處理通知類型的電子郵件。

我已將 postfix 設置為內部 smtp 伺服器,並且一切正常。但是,我在我的 dns 設置中使用 spf 記錄,以使收件人能夠驗證電子郵件是否來自我。因此,我還需要指定從特定域(在本例中為我的內部郵件伺服器的 fqdn)收到的所有郵件都是通過的。

問題是我看不到通過 CloudFlare 實現這一目標的明確方法,我看到了 2 個潛在途徑:

  1. 在 SPF 記錄中指定 FQDN - 這將不起作用,因為郵件將根據 CloudFlare 的 IP 地址進行檢查。
  2. 直接指定我的 IP 地址 - 這會起作用,但它會讓我的公共 IP 可供全世界訪問,以便在 DNS 記錄中看到。這否定了首先使用 CloudFlare 的好處?

是否有一個配置選項可以僅針對域驗證郵件,而無需擴展 IP 檢查?

如果您需要直接從伺服器發送電子郵件並且您正在使用 SPF(您應該這樣做),您需要在您的 SPF 中發布該 IP 以允許 SPF 檢查。它要麼直接存在(ip4/ip6機制),要麼通過其他機制間接存在,但它必須存在。這不是一個大問題,因為 IP 地址並不是您需要不惜一切代價保護的神奇東西。

如果您需要在 DNS 查找中隱藏您的公共 IP,則不能直接從該伺服器發送電子郵件,因為 SPF 將失敗。作為第二種選擇,您可以通過已在 SPF 記錄中的伺服器中繼所有郵件。

  1. 將原始伺服器列為mynetworks您的 CloudFlare 伺服器(或任何允許從中中繼的伺服器)。
  2. 將該 SMTP 伺服器添加到relayhost需要發送這些通知的伺服器上。

這樣,執行 SPF 檢查的伺服器將檢查 CloudFlare IP 的 SPF 並生成PASS. SPF 僅檢查試圖在MAIL FROMSMTP 命令中使用您的域連接到收件人 MTA 的伺服器;它不檢查From:或任何Received:標題。

引用自:https://serverfault.com/questions/867165