未修改的 SPF 記錄,但驗證結果有所不同

未修改的 SPF 記錄,但驗證結果有所不同

我管理一個小型 Web 伺服器,但在為網域正確設定 SPF/DMARC 時遇到了一些問題。我試圖找出為什麼 SPF 驗證有時會通過有時會失敗。當使用相同的驗證器並且未對記錄進行任何更改時,就會發生這種情況。這幾乎就像是在某些嘗試中從不同來源讀取不同的記錄。

在本範例中,我使用 dmarcian.com 作為 SPF 驗證器。

如果我訪問該網站並使用“工具”-->“網域檢查器”,有時它會顯示“您的網域具有有效的 SPF 記錄,並且策略足夠嚴格”。如果我多次按一下「檢查網域」(不會出現拼字錯誤),有時會顯示「您的網域沒有 SPF 記錄」。為什麼在沒有任何變化的情況下,同一張支票會得到兩個不同的結果?

提供者是 Arvixe(即將更改)。 Web 伺服器是 Windows VPS,且 Web 伺服器不是電子郵件伺服器。儘管我們發送的郵件量並不多,但我們還是支付了單獨的大量電子郵件服務費用。

我正在使用 WebsitePanel 編輯 DNS 記錄。不支援 SPF 記錄,因此我使用 TXT 記錄。它看起來像這樣:

名稱:_spf 類型:TXT 資料:v=spf1 +a +mx +ip4:207.210.200.162 +ip4:143.95.68.96 ~all

網域:theiaicertification.org IP:108.167.130.38 / 108.167.130.39 郵件伺服器:207.210.200.162 / 143.95.68.96

答案1

您的 DNS 區域託管在兩台 DNS 伺服器上,託管您的網域的 DNS 伺服器數量並不是不合理。兩台 DNS 伺服器都缺乏 IPv6,這可能會成為未來的問題。

當請求網域的 TXT 記錄時,兩個權威 DNS 伺服器都會提供相同的回應,因此這也不是問題。我看到的確切回覆是這樣的:

theiaicertification.org. 86400  IN      TXT     "v=spf1 +a +mx +ip4:207.210.200.162 +ip4:143.95.68.96  ~all"

這裡我想指出幾點。

對於純 IPv4 郵件伺服器來說,使用a和/或可能會出現問題。mx這是因為您無法控制需要根據 SPF 記錄驗證哪些 IP 位址,因此您的 SPF 記錄必須符合 IPv4 和 IPv6 位址驗證的標準。在驗證 SPF 記錄期間,允許進行無回應的 DNS 查找的次數是有限制的。然而,就你而言,你勉強避開了這個陷阱。

為每個條目添加前綴+並不是 SPF 記錄的常見書寫方式,但它似乎有效。

我測試了可以使用 spf 驗證的 Python 實作根據 SPF 記錄驗證 IP 位址:

>>> import spf
>>> spf.query('192.0.2.1', '[email protected]', '').check()
('softfail', 250, 'domain owner discourages use of this host')
>>> spf.query('2001:db8::1', '[email protected]', '').check()
('softfail', 250, 'domain owner discourages use of this host')
>>> 

但這些都不能解釋為什麼你會看到不同的結果。不同結果的可能解釋是快取。 TXT 記錄上的 TTL 為 86400 秒,即 24 小時。如果您最近更改了它並且 TTL 也是 24 小時前,則您的更改可能需要 24 小時才能在所有地方生效。

我猜您用來驗證 SPF 記錄的服務有多個遞歸解析器,並且至少其中一個已快取了舊版本的 TXT 記錄。

相關內容