郵件標頭分析工具(メールヘッダー解析ツール)

貼上收到郵件的原始標頭(Received:、Authentication-Results: 等),即可逐跳解析投遞路徑,並列出 SPF/DKIM/DMARC 認證結果。全部解析在瀏覽器內完成。

Received: 標頭各欄位的含義

欄位 含義
from 將此郵件交過來的上一臺伺服器的主機名/IP位址,由寫入這一行的接收端伺服器記錄。寄件者可以隨意加入偽造的 Received 行,因此越早的行越容易被偽造。判斷真實發件IP時,請使用由您自己管理的接收伺服器寫入的行中最早的一行(在本工具的列表中,即 by 第一次出現您自己伺服器的那一跳)的 from。
by 在這一跳接收郵件的伺服器(例如你自己的郵件伺服器)的主機名。
with 本次投遞所使用的協議(如 ESMTP、ESMTPS、SMTP)。ESMTPS 表示該連線使用 TLS 加密。
for 本次投遞的目標收件人地址。郵件列表或多個收件人時通常會省略。
timestamp 此跳接收郵件的日期和時間。時間和時區由寫入這一行的接收端伺服器記錄(RFC 5321 §4.4)。各跳之間的時間差可粗略估算投遞延遲。

Authentication-Results: 各欄位的含義

欄位 含義
SPF SPF(發件人策略框架)認證結果:驗證發件IP是否包含在發件域名DNS記錄所允許的地址列表中。
DKIM DKIM(域名金鑰識別郵件)認證結果:驗證郵件正文及主要標頭的數字簽名,能否用發件域名的公鑰成功校驗。
DMARC DMARC(基於域名的郵件認證、報告與一致性)認證結果:綜合校驗 SPF、DKIM 結果與 From 標頭域名是否一致(對齊)的最終判定。

由郵件標頭追蹤投遞的路徑

把所收郵件的原始標頭貼進來,本工具便將 Received: 逐跳拆開,把投遞的路徑攤出來,並把 Authentication-Results: 中所記的 SPF、DKIM、DMARC 判定一併列出。整套解析都在瀏覽器內完成,貼入的東西不會被送往任何地方。

讀它時頭一件要明白的,是 Received: 須由下往上讀。 每台伺服器收到郵件,便把自己那一行添在最頂上,故而最早的一程在最底下,最後收下它的伺服器在最頂上。 更要緊的是:這些標頭人人都偽造得來。 發信方盡可捏造任意多條 Received: 擺在開頭。可信的只有您自家管轄的伺服器所寫的那一行,以及其上的一切;其下的種種,不過是「某人如此宣稱」罷了。Authentication-Results: 亦然——不看清那判定出自哪台伺服器,判定本身便可能是假的。

使用方法

  1. 貼入原始標頭 可自郵件軟體的「顯示原始郵件」「檢視原始碼」處取得。
  2. 由下往上讀 Received 最底下是最初的發信方,最頂上是最後收下它的伺服器。
  3. 查看認證的結果 SPF、DKIM、DMARC 的判定一併擺出。
  4. 弄清信任自何處起 您自家管轄的伺服器所寫那一行之下的種種,皆可能是偽造的。

用好本工具的小技巧

  • 在 Gmail 中,開啟郵件後點擊右上角的豎三點選單,選擇"顯示原始郵件"即可獲取原始標頭。在 Outlook 中可通過"檔案"→"屬性"→"Internet 標頭"檢視。
  • Received: 標頭在郵件正文中是按照最新在前(接收方在最上方)的順序追加的,本工具會自動將其重新排序為從發件方到收件方的時間順序。
  • 如果鏈路中的郵件伺服器時鐘存在細微偏差,"相對上一跳的延遲"可能顯示為負數。幾秒級別的負值通常只是時鐘不同步造成的,並非真正的投遞異常。
  • 即使 SPF、DKIM、DMARC 全部通過,也不能保證該郵件不是詐騙郵件。這些認證只能驗證發件域名所有者自身配置的流程被正確執行,無法檢測出攻擊者合法擁有的仿冒域名。
  • 如果發現某兩跳之間延遲驟增,說明該段路徑上的郵件伺服器很可能發生了投遞阻塞或被垃圾郵件過濾器攔截。

這些情境會用到

查究垃圾郵件的出處

真正的發信位址,現於您信得過的最底下那條 Received: 之中。

識破冒名

顯示名與 From 一行偽造起來易如反掌,故當憑認證結果來判斷。

追查投遞的遲滯

讀一讀各跳的時刻,便知郵件在何處停滯。

確認自家郵件是否通過認證

給自己發一封測試信,看 SPF、DKIM、DMARC 是否盡皆通過。

郵件標頭的術語

Received
每台收信伺服器把自己那一行添在最頂上的標頭。 路徑須由下往上讀。
Authentication-Results
記錄收信一方所作 SPF、DKIM、DMARC 判定的標頭。要緊的是它出自哪台伺服器。
Return-Path
投遞失敗時退回之處。SPF 正是針對這個網域來查的。
From
所顯示的寄件人。此處任人書寫,故不足以證明是誰寄的。
Message-ID
唯一標識一封郵件的字串,用以分辨同一封郵件的重複。
跳
郵件所經的一台伺服器。每一跳留下一條 Received:。

常見問題

Gmail:開啟郵件後點擊右上角豎三點選單,選擇"顯示原始郵件"。Outlook:依次點選"檔案"→"屬性"→"Internet 標頭"。Apple 郵件:依次點選"顯示"→"郵件"→"所有標頭"。將顯示出的全部文本複製並貼上到本工具中即可。

不能僅憑這一項來判斷,因為 From 標頭的內容可由寄件者自由設定。Received: 標頭同樣可以被寄件者加入偽造的行,因此也不能直接相信最早的那一行。如需確認真實的發件來源,請查看您所使用的接收伺服器(如 Gmail 的 mx.google.com 等)寫入的行中最早的一行(在本工具的列表中,即 by 第一次出現您自己伺服器的那一跳)的 from 中記錄的IP位址,並結合該伺服器記錄的 SPF/DKIM/DMARC 認證結果一起判斷。

並不能完全保證。這些認證只能驗證"郵件是否經過了 From 標頭域名所有者自己正確配置的流程"。如果攻擊者註冊了一個近似域名(例如與正規域名只差一個字元)併為其正確配置了 SPF/DKIM/DMARC,那麼即使所有認證均顯示通過,仍然可能是一封詐騙郵件。

不會。所有解析處理均在瀏覽器內的 JavaScript 中完成,內容不會發送到任何外部伺服器。由於郵件標頭中可能包含內部郵件伺服器配置等資訊,本工具在設計上充分考慮了隱私保護。

每臺中繼伺服器都是按照自己的時鐘記錄時間戳的,如果兩臺伺服器的時鐘存在細微的不同步,實際上較晚處理的一跳有可能被記錄為比前一跳更早的時間。若負值只有幾秒鐘,通常只是時鐘不同步所致,並非真正的投遞問題。
工具君

閒話 ― 郵件標頭是一疊"數字郵戳"

正如信件上的郵戳記錄了哪個郵局在何時處理了它,電子郵件的 Received: 標頭也是一疊"數字郵戳"——每一臺轉發過這封郵件的伺服器都會在其上蓋上自己的時間戳。SMTP 協議(RFC 5321)要求每一臺中繼伺服器都必須把自己的資訊新增到標頭的最前面,於是每封郵件都會自然而然地積累起一份完整的投遞路徑記錄。

這套機制在追查垃圾郵件來源時最為實用。但需要注意的是,Received: 標頭和寄件者欄(From 標頭)一樣,寄件者可以隨意偽造。寄件者可以在送出郵件之前加入任意多條偽造的 Received: 行,因此越早(越靠下)的行越有可能是偽造的。真正可以信任的,只有由您自己管理的接收伺服器寫入的行。其中最早的一行,是您的伺服器接受外部連線時記錄的,其 from 中的連線來源IP位址是寄件者無法偽造的。反垃圾郵件專家首先查看的,正是這個「由自己的伺服器記錄的第一個連線來源」。

SPF、DKIM、DMARC 這三項認證技術,正是為了彌補僅靠"郵戳"無法阻止的仿冒行為而後來加入的。SPF 核對發件IP是否在該域名的許可列表中,DKIM 通過數字簽名驗證郵件內容未被篡改,DMARC 則綜合以上兩者與 From 標頭域名的一致性做出最終判定。2024年 Google 和 Yahoo 事實上要求大批次發件方必須配置 DMARC 之後,Authentication-Results: 標頭也開始頻繁出現在普通使用者的收件箱中。

平時幾乎沒人會去開啟郵件標頭,但一旦開啟,你會發現其中精確記錄著這封郵件曾經過地球上的哪些伺服器、每一步各花費了多少秒——這是一段肉眼看不見的網際網路旅程日誌。