解析時,SPF 記錄中間的“~all”是否表示記錄結束?
我公司的SPF記錄格式如下:
“v=spf1 包括:_spf.google.com ~all a mx ip4:XX0.0/23 包括:spf.example.com ?all”
所以我們的 SPF 記錄中間有一個“~all”。在openspf.com 網站上,他們對“全部”機制這樣說:
這種機制總是匹配的。它通常位於 SPF 記錄的末尾。
所以,他們並沒有說“所有”必須在 SPF 記錄的末尾,而是通常在末尾。
在我們公司,最近我們看到從我們的 SPF 記錄中列出的伺服器發送的電子郵件中出現了一些軟故障,但我們的 SPF 記錄通過了我迄今為止找到的所有驗證工具。
我想知道的是,在包含 Google Apps (_spf.google.com) 之後,這個“~all”是否會導致解析停止並且無法辨識 SPF 記錄的其餘部分?通過與軟失敗是否取決於誰在解析它以及他們如何處理 SPF 記錄的具體實現?是否有任何理由擁有不在 SPF 記錄末尾的“全部”機制?
是的,我知道我們可以改變我們的 SPF 記錄。這個問題更多地是關於澄清這一切是如何運作的,而不一定是關於解決我們的具體情況。
RFC 7208 § 5.1明確說明了這一點:在
all
出現之後,必須忽略它之後的所有內容。“所有”之後的機制永遠不會被測試。必須忽略“all”之後列出的機制。當記錄中存在“全部”機制時,必須忽略任何“重定向”修飾符(第 6.1 節),無論術語的相對順序如何。
它廢棄的RFC RFC 4408說了很多同樣的話。較新版本的 RFC 只是闡明了意圖。
“所有”之後的機制永遠不會被測試。當存在“全部”機制時,任何“重定向”修飾符(第 6.1 節)都無效。
因此,符合 SPF 的實現將完全忽略第一個
~all
. 然而,這並不意味著每個實現都符合規範。特別是,這可能被認為值得澄清,因為一個或多個實現不符合。完全不清楚為什麼線上驗證工具不會捕捉到這種錯誤配置,但如果您打算在第一次
all
使用之後進行任何操作,您應該更正記錄,因為正確的實現會忽略它。