Linux

如何為多個子域配置 DNS SPF 記錄

  • October 4, 2021

我有一個域名,例如 example.com,以及許多伺服器(可能有數百個),每個伺服器都有一個公共 IP 和一個子域(sub1.example.com、sub2.example.com 等)。每台伺服器都承載一個 Postfix 安裝。這裡的目標是能夠從任何伺服器發送電子郵件(而不是接收電子郵件)。但是,主域本身沒有附加電子郵件伺服器(example.com)

現在我正在嘗試在 DNS 中設置 SPF 條目,但我有點卡住了。我嘗試了很多組合,但在嘗試向 gmail 發送電子郵件時,它們總是以 SPF SOFTFAIL 告終。此外,我還不清楚如何解決具有這麼多伺服器/IP 的 SPF 記錄長度的限制。

添加更多上下文(即使我已經接受了 Bob 的回答)。

這個想法是有一個非常冗餘的架構,任何伺服器都可能出現故障,而整個系統將繼續工作(至少對於電子郵件發送而言)。我無法控制 IP 地址的範圍:伺服器將在多個國家和多個提供商處提供。我試過只為主域名定義一個 SPF 條目。

                    600 IN TXT    "v=spf1 mx ~all"

發送到 Gmail 時,我收到一個用於 SPF 驗證的 SOFTFAIL 錯誤,電子郵件是從子域(如 sub1.domain.com)發送的

然後我嘗試在記錄中添加發件人 IP 地址:

                     600 IN TXT    "v=spf1 mx ip4:server_ip ~all"

但我最終得到了同樣的 SOFTFAIL 錯誤。還嘗試為子域添加另一個 SPF 條目,但據我了解,應該只創建一個 SPF 條目:-/ 我還嘗試包括:域名,結果相同。

任何幫助或指導將不勝感激:-)

您對案例的描述不夠完整。*@example.com但是,如果您的目標是從這些伺服器中的任何一個發送電子郵件,那麼 SPFptr機制就是專門為這個案例設計的。

您將為每個子域伺服器設置正確的反向 DNS 1.2.3.4 → sub1.example.com → 1.2.3.4。

然後,您將在主域 example.com 上安裝以下 SPF 記錄:

v=spf1 ptr -all

就這些。

與其他方法相比,它的優點是易於設置,不會遇到查找限制,並且可以擴展到任意數量的子域主機。

缺點是它與 SPF RFC 的規定有些不一致:RFC 7208 不鼓勵使用該ptr機制。但是,可以提出一個論點,即那裡的措辭過於嚴厲,並且考慮到您的案例使用 ofptr是可以接受的。另請參閱我的問題1063826

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