包含機制讓 SPF 策略依賴另一個網域的授權決策。當發送服務維護不斷變化的基礎設施時,它非常有用。您無需將地址清單複製到您的記錄中,而是在達到該包含範圍時評估提供者的目前策略。
這種便利也是一種依賴。包含可以隨著其目標變更而變更權限、消耗SPF查找預算或傳播目標錯誤。其行為在中指定 RFC 7208第 5.2 節.
讀取包含作為通過測試
一個正常的 include:service.example.net 僅當遞歸評估的服務策略傳回連接 IP 的通過時才符合。外部機制的預設+限定符然後產生通過。
如果服務返回失敗、 softfail或中性,則包含不匹配,並且評估將在外部策略中繼續。如果服務返回 temperror 或者 permerror,該錯誤會傳播。一個目標沒有 SPF記錄 產生包含permerror ,而不是無害地忽略。
限定符也可以位於包含之前。例如,當子級傳回 pass 時,-include 會產生失敗。這是有效的語法,但通常不是授權提供者的預期方式。檢查限定符,而不是假設單字 include 總是授予存取權限。
工作範例:保留您自己的政策結局
假設語法有效,每個名稱都有一個選定的SPF記錄,並且DNS檢索成功,該合成裝置使用 v=spf1 ip4:192.0.2.10 include:service.example.net -all 在example.com 。該服務發布 v=spf1 ip4:198.51.100.9 -all.
來自192.0.2.10的連線透過本地機制傳遞。來自198.51.100.9的連接到達包含並通過,因為子級通過了。來自203.0.113.20的連線到達子級,接收子級失敗,恢復外部策略並從其最終-all接收失敗。
將外部結尾更改為~all ,最後一個位址將收到softfail 。提供者仍然決定包含是否匹配,但您的策略在不匹配時確定普通結果。這種區別就是為什麼複製子級的整個文本並不等同於使用 include。
驗證包含內容是否屬於您的服務
從目前的第一方產品說明中獲取準確的目標。供應商的行銷平台、交易平台和員工郵件服務可能有不同的發送路徑。不要從第三方文章中選擇看似合理的主機名稱。
也確定產品使用的域 郵件來自。在example.com上發佈包含內容無助於針對供應商擁有的信封網域執行SPF檢查。如果您需要自訂信封,請透過產品配置功能並在收到的郵件中進行驗證。
維護每個包含的所有者、目的和退休條件。已取消的服務不應無限期地保留權限,而應僅在檢查預定作業、不頻繁的活動和委派團隊後才將其刪除。
遞歸依賴的預算
在下面 RFC 7208 §4.1 和 RFC 7208 §4.6.4,包含是SPF的十個術語評估限制涵蓋的引起 DNS 查詢的術語之一。評估時其嵌套術語也很重要。因此,即使可見記錄看起來很短,幾個頂級包含也可能超出限制。
對合法發送 IP 和遍歷更多策略的未授權 IP 使用特定於輸入的追蹤。記錄目標答案和評估時間。今天的成功測試並不能證明提供者永遠不會改變其依賴關係樹。
將包含內容替換為複製的 IP 範圍會將維護責任轉移給您。不要將其描述為免費簡化。您需要經過驗證的更新流程、 IPv6覆蓋範圍以及快取DNS答案時發生的變更的計劃。
實用的外賣
包括導入透過決策和操作依賴性,而不是關於可見作者或訊息安全的承諾。保持目標經過驗證、許可有意且遞歸路徑在限制範圍內。
保持決策的可重複性
將子成績和外成績記錄在不同的欄位:透過→配對→外資格賽;失敗/ softfail /中性→不符→繼續; temperror / permerror →同樣的錯誤;無→ permerror 。對於-include,子通過意味著外部失敗。保留任何支援請求的確切目標、限定符、 DNS觀察和輸入 IP。這是 RFC 映射,而不是即時提供者證據。