如何為多個子域配置 DNS SPF 記錄
我有一個域名,例如 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。