關於這個工具
大家看郵件標頭通常是為了三件事:這封信為什麼晚了兩個小時才到、這封說是銀行寄的信到底是不是真的、我的信為什麼被丟進垃圾信匣。用肉眼讀很累——十幾行倒著排的 Received、各自不同時區的時間、再加一條塞滿縮寫的 Authentication-Results。這個郵件標頭分析工具在瀏覽器裡把標頭拆開排好:信走過哪些站、每一站停了多久、收件伺服器當時對 SPF、DKIM、DMARC 下了什麼判斷,以及 DKIM 簽章現在重新驗還過不過。什麼都不上傳。整頁唯一會發出的網路請求是 DKIM 公鑰查詢,而且要等你按下「驗證 DKIM」才會發:它把 selector._domainkey.網域 這個名稱送到公開的 DNS-over-HTTPS 服務(Cloudflare,失敗時改用 Google),該服務看得到你的 IP,這是 DNS 查詢的本質。信件內容、收件者、標頭本身都不會送到任何地方。
追蹤傳遞路徑,找出卡在哪一站
每一條 Received 就是一個跳站。頁面依時間順序從最早的一站排起,把每一站拆成:宣稱的寄出主機、括號裡的反查名稱和 IP、收下這封信的主機、使用的協定(SMTP、ESMTPS、ESMTPSA、LMTP……)和時間。協定字母依 RFC 3848 解讀——有 S 代表這段連線有 TLS、有 A 代表寄件端有驗證身分——所以你看得出信在路上有沒有加密。每一站的延遲是這站的時間減掉前一站,畫成橫條,最長的那一條標紅,被延遲的信通常就是在那裡等。延遲是負值會標「時鐘不同步」而不是當成錯誤,因為郵件伺服器的時鐘本來就常常對不齊;沒有時間或時間解析不了的站標「無法計算」,不會把後面的站一起吃掉。私有位址(RFC 1918、127.*、::1)標成「內部轉送」。IP 只以文字顯示,不做地理位置查詢——那得把 IP 送到第三方 API。
讀 Authentication-Results,但只信該信的那一條
Authentication-Results(RFC 8601)是收件伺服器把判斷寫下來的地方:spf=pass、dkim=fail、dmarc=none,有的還有 arc、iprev、bimi。頁面把每一條拆成 authserv-id 和各個方法,每個結果配一句白話——softfail、temperror、permerror、neutral 到底是什麼意思、常見原因是什麼。整張清單上面放了一個警告:路上任何一台伺服器、包括寄件者自己,都可以加一條 Authentication-Results。只有你自己的收件伺服器寫的那一條可以信;中間站寫的、寄件者自己塞的,什麼都證明不了。ARC 標頭(RFC 8617)依 i= 分組列出來給你參考,這一版只顯示、不驗證 ARC。
在瀏覽器裡驗 DKIM,用的是現在的金鑰
這一頁的招牌是真的做一次 DKIM 驗證(RFC 6376),而不是照抄別人的結論。每一條 DKIM-Signature 都會解析 tag、依 s= 和 d= 查公鑰、照 c= 指定的方式把簽過的標頭正規化,再用 WebCrypto 驗簽章。h= 列了但信裡沒有的標頭一律當成空字串,這正是標準的規定,事後補上去的標頭不可能過。rsa-sha256 用 RSASSA-PKCS1-v1_5 驗;ed25519-sha256(RFC 8463)在瀏覽器的 WebCrypto 有 Ed25519 時驗,沒有的話結果是「無法驗證」而不是失敗;rsa-sha1 照驗但標示 RFC 8301 已淘汰,RSA 金鑰短於 1024 位元則依該 RFC 直接拒絕。結論只有四種:通過、失敗(附原因:找不到金鑰、p= 空代表金鑰已撤銷、x= 已過期、簽章不符、body hash 不符、金鑰太短)、無法驗證(DNS 查詢失敗、演算法不支援、沒有內文)、格式錯誤。簽章有 l= 時會警告:簽章只涵蓋內文前 N 個位元組,後面接上去的東西沒有簽。要記得查到的是現在公布的金鑰:寄件者換過金鑰之後,舊信會驗證失敗,但那不代表信是假的。
只有標頭、.eml、.msg 各驗得到什麼
只有完整的 .eml 才驗得了內文雜湊 bh=,因為需要內文的原始位元組。只貼標頭的話,頁面仍然會驗標頭簽章——它涵蓋了 bh= 這個值——結論寫「標頭未被竄改,內文無法驗證」。.msg 永遠是這種情況:收到的信存成 .msg 時,Outlook 把傳輸標頭存成一個屬性,但沒有保留原始的 MIME 內文(寄出前存的 .msg 則根本沒有傳輸標頭),所以 .msg 一律只能驗到標頭這一層。從 EML 檢視器和 MSG 檢視器都有一個連結可以直接把信帶過來,走的是 sessionStorage,不經過網址。概要卡把寄件者的三個身分並排:From 的網域、Return-Path 的網域、DKIM d= 的網域,DMARC 對齊依 RFC 7489 的 relaxed 模式用組織網域來判斷,旁邊有一顆按鈕可以把 From 網域帶去郵件 DNS 檢查頁查 SPF、DKIM、DMARC 設定——只有那個網域會進網址,它本來就是公開資訊。
這一頁不會替你說的話
它絕不會說「這封信是安全的」或「是真的」,只說哪些檢查通過、哪些失敗。DKIM 通過只證明 d= 那個網域簽過這封信,不證明那個網域就是你以為的那家公司。SPF 不重驗:SPF 看的是把信交給你伺服器的那個 IP 能不能替 Return-Path 網域寄信,要用當時的 DNS 判斷,事後從你的瀏覽器再跑一次沒有意義,所以頁面只顯示收件伺服器記下來的結果。被轉寄、經過郵件列表、被公司郵件閘道改寫過的信,DKIM 失敗很常見也很正常,失敗說明裡會直接寫出來。X-Spam-Status、X-Microsoft-Antispam 這類垃圾信評分標頭只列原文、不解讀,因為格式沒有公開。Markdown 報告和 JSON 匯出預設會遮掉收件者地址,方便你拿去分享。