Defaults.Exposed

Defaults.Exposed修復Guides

"SPF 記錄未找到"——但你明明有一條?真正的五個原因(2026)

發布於 2026-07-08

資料截至 2026-06-29 · 方法論 v7。 基於 261 百萬個已評分網域的彙總普查資料。參見我們如何評分

如果檢測工具說“SPF 記錄未找到”,但你確定自己發布過一條,這條記錄通常不是缺失,而是變得不可見了:根據 Defaults.Exposed 對 261 百萬個網域的普查,有 1,013,416 個網域——大約每 138 個嘗試設定 SPF 的網域裡就有 1 個——發布了兩條或以上的 SPF 記錄,這是一種 PermError(RFC 7208 §3.2),很多檢測工具會把它報告成“未找到”。

真正的原因有五個,都能在一次坐下的時間裡修好:主機名錯誤、記錄重復、DNS 類型錯誤或引號被弄乱、網域伺服器不一致,或者是長度/CNAME 冲突。以下內容:每個原因對應的 60 秒測試方法,按檢查順序排列,然後是修復步驟。

你確定這條記錄真的存在嗎?

先從最不體面的可能性說起,因為它是目前為止最常見的一種:在 Defaults.Exposed 普查評分的 261,086,232 個網域中,有 121,145,609 個——占 46.4%——根本沒有 SPF 記錄。很多“但我明明配過”的情况,最後發現是記錄加在了一個測試區域,或者加在了一個已經不再是權威伺服器的舊 DNS 服務商那裡。檢查一下你的網域伺服器實際指向的那個 DNS 服務商(往往不是你的註冊商),看看有沒有一條以 v=spf1 開头的 TXT 記錄。如果確實沒有,就別再當偵探了,直接去看修復你的 SPF 記錄

怎麼正確檢查一條 SPF 記錄?

網頁版檢測工具是通過自己的快取解析器查詢 DNS 的。要看到真相,得直接問你網域的權威網域伺服器

# 找出權威網域伺服器
dig NS yourdomain.com +short

# 直接向其中一台查詢 TXT 記錄
dig TXT yourdomain.com @ns1.yourdnshost.com +short

Windows 上:nslookup -type=TXT yourdomain.com ns1.yourdnshost.com

有兩條解讀規則。第一,數一數有多少行以 v=spf1 開头——數量和內容一樣重要。第二,檢查你查詢的是不是正確的名字:接收方是對照 **Return-Path(RFC5321.MailFrom,也就是“信封發信人”)**裡的網域來評估 SPF 的——不是收件人看到的 From 位址。如果你的通讯工具是經由 bounce.yourdomain.com 退信的,那麼根網域上一條完美的記錄,並不是接收方真正會查詢的那一條。

真正的五個原因是什麼?

#原因60 秒測試方法修法
1記錄放在了錯誤的主機名上(子網域 vs 根網域)對你 Return-Path 裡那個確切網域跑 dig TXT發布在真正用來發信的那個名字上
2兩條或以上的 v=spf1 記錄 = PermErrordig TXT 返回 2 條或以上的 v=spf1合併成恰好一條記錄
3發布成了記錄類型 99,或者引號被弄乱了檢查記錄的類型和多余的引號重新發布為一條干淨的 TXT 記錄
4快取到期未刷新 / 網域伺服器不一致直接查詢每台網域伺服器,比對答案修好落後的網域伺服器,等舊 TTL 到期
5超過 255 字元的拆分問題,或 CNAME 冲突查看有沒有被截斷的字串片段,或同名下有沒有 CNAME讓服務商正確拆分字串;把記錄移出被 CNAME 占用的名字

資料截至 2026-06-29。

1. 記錄是不是放錯了主機名?

經典情况:SPF 加在了 mail.yourdomain.com 上,而郵件却自稱來自 yourdomain.com,或者反過來。SPF 不會向下繼承——根網域上的記錄對子網域沒有任何意義,反過來也一樣。要發布在你 Return-Path 裡那個確切的名字上。一個用自己退信子網域發信的服務商,需要在那個子網域上有一條記錄——通常是服務商提供的一條 CNAME 或 TXT(GoDaddy SPF 設定指南 展示了這些字段在哪裡)。

2. 你是不是有兩條 SPF 記錄?

這是头號原因,也是郵件驗證領域裡最容易誤導人的錯誤提示。RFC 7208 §3.2 說得很直白:一個網域必須恰好有一條 SPF 記錄。兩條或以上就是 PermError——接收方會把你的 SPF 當作作廢處理。有些檢測工具會如實報告這種狀態(“發現多條記錄”);另一些則報告最終效果:未找到有效的 SPF 記錄。你在面板裡明明看得到一條記錄,於是斷定是檢測工具壞了。其實不是——是你多了一條記錄。

普查發現有 1,013,416 個網域攜帶著兩條或以上的 SPF 記錄——大約每 138 個嘗試設定 SPF 的網域裡就有 1 個,每一個的 SPF 實際上都已經被關掉了。這通常發生在更換服務商的過程中:新服務商的設定向導新增了一條全新的記錄,而不是編輯舊的那條。修法是合併,絕不能是加第二條記錄:把所有內容合併成一行 v=spf1 … ~all,刪掉其余的。我們的資料報告兩條 SPF 記錄等於零 拆解了上百萬個網域是怎麼走到這一步的;如果這是在一次遷移之後開始出現的,見換服務商之後 SPF 就壞了。合併的時候,不要盲目地把每一個 include: 都拼接進去——每一個都要消耗 DNS 查詢次數,逼近 SPF 硬性上限 10,那樣就是把“未找到”換成了PermError:DNS 查詢次數過多

3. 你是不是發布了錯誤的記錄類型——或者是界面把它弄乱了?

早期的 SPF 有自己專屬的 DNS 記錄類型(類型 99,字面意思就叫“SPF”)。它已經被棄用了:RFC 7208 要求必須用 TXT,接收方不會查詢類型 99。一些 DNS 面板的記錄類型下拉菜單裡仍然提供“SPF”這個選項;選了它,你的記錄就是真實存在、格式正確,却對誰都不可見。檢查一下類型這一列,重新發布為 TXT。

更隱蔽的一個近親是引號問題。把一個已經帶引號的值粘贴進一個自己也會加引號的字段,會產生 ""v=spf1 …""——這已經不是以 v=spf1 開头了,所以對驗證方來說它根本不存在。你的 dig 輸出會顯示真相;DNS 面板往往在外觀上把它遮住了。

4. 真的還“在傳播”嗎?

“再等 24–48 小時讓它傳播一下”是 DNS 領域裡被開得最濫的處方。所谓傳播,其實就是快取到期:一旦記錄的 TTL 到期(通常 1 小時,很少超過 24 小時),每個解析器都能看到新答案。24 小時之後還是找不到?那就不是傳播的問題。

兩個真正的元凶:負快取——一個解析器在你新增記錄之前就查詢過你,把“沒有這條記錄”的答案快取了下來,直到負快取的 TTL 到期為止——以及遷移之後的網域伺服器不一致,網域同時還挂著舊服務商的網域伺服器和新的,導致世界上一半的人讀到的是你已經不再編輯的那個區域。直接查詢每一台列出的網域伺服器;如果答案不一樣,問題就找到了。修好註冊商那邊的 NS 委托,讓只有你真正在編輯的那個服務商才是權威的。

5. 記錄是不是太長,或者被 CNAME 挡住了?

一個 TXT 記錄裡的單個字串最多 255 個字元。更長的 SPF 記錄是合法的,但必須在一條記錄內拆分成多個帶引號的字串——而 DNS 服務商的界面經常把這個拆分搞砸,要麼截斷了值,要麼在某個機制中間把它切斷,導致无法解析。如果你的記錄很長,檢查 dig 輸出裡有沒有一個突然中斷的值。

另外,DNS 規定一個已經有 CNAME 的名字上不能再有 TXT 記錄。如果 mail.yourdomain.com 是指向你服務商的一條 CNAME,你就不能同時在那裡放 SPF——有些面板會接受這個操作,然後只提供 CNAME 那一部分服務。要麼把記錄放在 CNAME 指向的地方(如果你能控制它),要麼重新規划結構,讓發信用的名字不再被 CNAME 占用。TXT 處理得比較干淨的服務商能讓這兩件事都更簡單——見 Cloudflare SPF 設定指南

怎麼一步步修復?

  1. defaults.exposed 執行免費掃描——在你動任何東西之前,它會讀取你實時的 DNS,告訴你屬於五種狀態裡的哪一種。
  2. 確認哪些網域伺服器是權威的(dig NS),並檢查它們的答案是否一致。
  3. 在權威網域伺服器上查詢你 Return-Path 裡那個確切網域的 TXT 記錄。
  4. 數一數 v=spf1 的行數:零條 → 發布一條;兩條或以上 → 合併成一條。
  5. 核實類型是 TXT,值恰好以 v=spf1 開头,沒有混入多余的引號或被截斷。
  6. 等過一個 TTL 周期,再重新掃描,確認它在各處都能干淨地解析出來。

常見問題

為什麼我在自己的 DNS 面板裡能看到記錄,檢測工具却說“未找到”? 通常是原因 2 或原因 4:第二條 v=spf1 記錄會讓兩條都作廢——這是一種 PermError,有些工具會報告成“未找到”,截至 2026-06-29,有 1,013,416 個網域正處在這種狀態——或者你的面板根本不是真正權威的那個 DNS 服務商。

我修好之後,檢測工具要多久才能看到? 一個 TTL 周期——通常是一小時,最多 24 小時。超過這個時間,“傳播”就不是原因了;重新檢查這五個原因,先從網域伺服器一致性開始。

我該用 DNS 面板提供的“SPF”記錄類型嗎? 不該。類型 99 已被棄用;RFC 7208 只要求 TXT。類型 99 的記錄對現代接收方來說是不可見的。

記錄現在能找到了——為什麼我的郵件還是 SPF 失敗? 因為 SPF 檢查的是 Return-Path 網域,不是 From 標头,而且記錄必須真正列出為你發信的伺服器。“能找到”只是第一步;修復你的 SPF 記錄 這篇指南讲的是怎麼通過檢查。

完全沒有 SPF 記錄真的這麼常見嗎? 是的——在 Defaults.Exposed 普查評分的 261,086,232 個網域中(截至 2026-06-29),有 121,145,609 個網域、占 46.4%,完全沒有發布 SPF。“未找到”才是互聯網的默認狀態。

把報告發給老板

一旦記錄能干淨地解析出來,重新執行掃描,把評分報告轉發給這個網域所屬的企業負責人或客戶。它會用大白話說明之前哪裡壞了、你修了什麼、這個網域現在處於什麼狀態——這正是網路保險續保和供應商安全問卷會要求提供的證據。這份報告就是這項工作的收據。

免費檢查你的 SPF 記錄

私密、僅網域所有者可見地看看你的網域屬於五種“未找到”狀態裡的哪一種。

檢查你的網域 → · 修復 SPF → · 換服務商之後 SPF 就壞了 → · 我們如何評分 → · 僅使用彙總資料。資料在歐盟境內儲存和處理。