關於這個工具
大部分的郵件投遞問題,追到最後都是幾筆很容易設錯的 DNS 記錄:SPF 不知不覺超過查詢上限、DMARC 放在 p=none 放了好幾年、DKIM 金鑰已經撤銷或太短。這個 DMARC 檢查、SPF 記錄檢查、DKIM 記錄查詢工具直接在瀏覽器裡把這些記錄讀出來。輸入一個網域(貼整個網址或 email 地址也可以,頁面會自己抽出網域,國際化網域會轉成 punycode 並同時顯示兩種寫法),要的話再填你用的 DKIM selector。頁面把記錄名稱——example.com、_dmarc.example.com、selector._domainkey.example.com 等等——送到 Cloudflare 的公開 DNS-over-HTTPS 服務查詢,失敗時改用 Google。該服務看得到這些名稱和你的 IP,任何 DNS 解析都是這樣;不會送出任何信件,也不會送出你 IP 以外的任何東西。結果是每張卡一顆燈加一顆整體燈號:綠色代表記錄都設對了,黃色代表信寄得出去但有風險,紅色代表信很可能被擋、或網域對偽冒不設防。
SPF 的 10 次查詢上限,用一棵樹講清楚
RFC 7208 規定一次 SPF 評估最多只能有十個會查 DNS 的機制——include、a、mx、ptr、exists、redirect 都算,巢狀的 include 也算。超過就是 permerror,很多收件端把它當成根本沒設 SPF。頁面把 include: 和 redirect= 遞迴展開成一棵樹,每個節點都標出查詢次數,你一眼就看得出哪個 include 最花。a、mx、ptr、exists 只計入上限、不實際查詢,因為它們的目標不影響次數。include 指向的網域沒有記錄會算成 void lookup,上限兩次。頁面也會標出:不只一筆 v=spf1(permerror)、+all 和 ?all(等於誰都能寄)、已不建議使用的 ptr、語法錯誤、include 迴圈——迴圈只看祖先路徑,同一個 include 從兩個分支各引用一次是合法的,會跟收件端一樣計兩次。超過上限時給的建議是:把不再使用的寄信服務的 include 拿掉,或是把某個寄信服務搬到它自己的子網域。頁面刻意不提供 SPF flattening——把 include 換成它今天解析出來的 IP——因為那些 IP 說變就變,寄信服務一換 IP 區段,攤平後的記錄當天就壞。
DMARC:從 p=none 走到真的能保護你的政策
頁面查 _dmarc.<網域>,子網域自己沒有記錄時依 RFC 7489 退回組織網域去查,組織網域用 Public Suffix List 判斷。報告的內容有政策(p=)、子網域政策(sp=)、pct=、對齊模式 adkim= 和 aspf=、以及回報地址 rua= 和 ruf=。p=none 會標成「只監看」:收件端只回報、不動作,網域照樣可以被冒用;pct 低於 100 代表只對一部分失敗的信動作。rua= 指向別的網域的信箱時,頁面會去找授權記錄 <網域>._report._dmarc.<回報網域>,找不到就警告「報告不會被送出」。建議的路線是不會弄壞寄信的那一條:先從 p=none; rua=mailto:… 開始,讀報告直到所有合法的寄件來源都對齊了,再改成 quarantine,最後 reject。
DKIM、MX、BIMI、MTA-STS、TLS-RPT
DKIM selector 從外面沒辦法列舉——DNS 沒有任何方法可以列出 *._domainkey 底下有哪些名稱——所以頁面只能試你填的 selector 加上一份常見名稱清單(google、selector1、selector2、k1、s1、s2、default、dkim、mail 等等)。「沒找到」的意思是這些名稱底下沒找到,絕不等於沒設 DKIM。找到的金鑰會檢查長度(RSA 短於 1024 位元標紅、剛好 1024 標黃)、p= 是否為空(代表已撤銷)、有沒有 t=y 測試模式、語法對不對。MX 依優先序列出並附上位址;沒有 MX 會標出來、MX 指向 CNAME 會標出來,而 Null MX(0 .,RFC 7505)會被當成「這個網域不收信」的正確寫法,不是錯誤。BIMI(default._bimi)檢查格式並列出 l= 的圖檔網址和 a= 的憑證網址;圖檔本身不抓,卡片上也會提醒 BIMI 只在 DMARC 是 quarantine 或 reject 時才會生效。MTA-STS(RFC 8461)和 TLS-RPT(RFC 8460)只檢查 DNS 這一層:瀏覽器因為 CORS 抓不到 https://mta-sts.<網域>/.well-known/mta-sts.txt,所以 policy 網址只顯示成連結讓你自己點開。
綠燈代表什麼、不代表什麼
顯示的記錄是 Cloudflare 或 Google 的解析服務此刻看到的。幾分鐘前剛改的記錄可能還在快取裡,要等 TTL 過了才會更新,再查一次之前先別以為改失敗了。綠燈代表記錄設對了,不代表信一定進收件匣:寄件者信譽、信件內容、寄信量才是決定因素,而這些從 DNS 完全看不出來。同樣的理由,這一頁不給分數——「87 分」看起來很精確,其實什麼都沒說。如果是某一封特定的信被退或進了垃圾信匣,把它的標頭丟到郵件標頭分析頁,那邊會追蹤傳遞路徑、驗證 DKIM,概要卡還會帶著寄件網域連回這裡。兩頁都能產出 Markdown 報告和 JSON,直接貼進工單。