[ 標頭和傳送錯誤 ]

交付狀態通知:追蹤原始故障和報告系統

讀取特定於收件人的 DSN 字段,以將報告中繼與實際導致傳遞失敗的系統和事件區分開來。

由EmailAuth研究團隊提供 · 4 分鐘閱讀

[ 重點 ]

  • 讀取特定於收件人的 DSN 字段,以將報告中繼與實際導致傳遞失敗的系統和事件區分開來。
  • 一起讀取每個接收者的操作、狀態和診斷代碼;報告系統可以保留不同系統先前的拒絕。
在此頁面上

送達通知通常包含多個伺服器名稱、日期和位址。發送報告的系統不一定是拒絕訊息的系統。在根據報告的主題行進行DNS或郵箱變更之前,解析其傳遞狀態欄位並關聯原始嘗試。

識別報告和遠端系統

RFC 3464定義了傳遞狀態主體格式。報告-MTA 標識產生通知的系統。遠端 MTA(如果存在)可識別與報告的傳送嘗試關聯的遠端系統。診斷代碼可以保留遠端協定回應。人類可讀的解釋是有幫助的,但它的散文不應取代結構化欄位。 RFC 3464第 2.2 和 2.3 節.

記錄系統標識和報告時間。從應用程式接受郵件的中繼稍後可能會收到來自收件者伺服器的拒絕並自行建立 DSN。將中繼名稱視為拒絕目標可能會將調查發送給錯誤的管理員並掩蓋原始SMTP回應。

獨立讀取每個接收者區塊

最終收件者標識應用傳遞狀態區塊的收件者。原始接收者(當存在時)可以保留較早的接收者身分。操作描述了交付操作,例如失敗或延遲。狀態帶有增強的狀態代碼。可選的 Diagnostic-Code、Last-Attempt-Date 和 Will-Retry-Until 可以提供有用的附加上下文,但並非每個報告都會提供它們。

當診斷代碼存在時, RFC 3464第 2.3.6 節將提供的遠端 MTA 解釋為其發行者;如果沒有 Remote-MTA,診斷將歸因於 Reporting-MTA。該字段規則並不能證明更早的遠端嘗試從未發生過。使用可信任日誌證實完整的歷史記錄。

DSN 可以包含多個具有不同操作和狀態值的接收者區塊。不要對原始「收件者」或「副本」標頭中的每個人都套用一次失敗。同樣,缺少可選字段並不能證明相應的事件從未發生過。將缺勤保留為未知,並使用隊列或追蹤證據來填補空白。

閱讀假設到期通知

想像一下, relay.example接受一則訊息,然後在嘗試傳遞時從mx.example收到 452 4.2.2 Mailbox full。在其配置的傳遞生命週期到期後,中繼會產生 DSN。教學摘錄可以識別報告-MTA:dns; relay.example ,遠端 MTA:dns; mx.example ,最終收件人:rfc822; recipient@example.test ,操作:失敗,狀態:5.4.7 和診斷代碼:smtp;452 4.2.2 郵箱已滿。

這是發明的現場演練,而不是完整的MIME報告或執行的郵件交換。最終狀態描述了交付時間到期,而保留的診斷描述了最後一次容量拒絕。這些字段回答不同的問題。這不是通用的首選映射: RFC 3463第 3.5 節表示在可能的情況下返回實際的交付問題代碼而不是過期代碼。保留最具體的支持原因。 RFC 3464也允許 Action: failed with a 4.xx Status after the reporting MTA 已放棄嘗試;暫時原因並不表示原始原因仍處於排隊狀態。

對於您自己的報告,請分別關聯原始提交、嘗試、到期決定和報告到達。請勿假設說明性名稱、時間或欄位與提供者相符。保留缺少的可選字段而不用猜測值填充它們。

行動前關聯

將通知與原始信封收件者、提交時間和可用佇列識別碼進行比對。 Original-Envelope-Id 可以在存在時幫助關聯;返回的 Message-ID 是另一個線索,而不是對通知本身的充分驗證。報告可能是欺騙性的或偽造造成的 回程路徑 位址,因此意外退回郵件不得自動觸發寄件者配置變更。

使用受信任的發送日誌來確定組織確實提交了訊息。避免僅因為郵件類似於退回郵件而開啟傳回的附件或遵循憑證提示。如果不存在匹配的提交,請調查該報告是否可能是未經請求的或偽造的,而不是將其視為帳戶洩露的證據。

將校正分配給右側圖層

尋址狀態將發送至郵箱或聯絡人所有者。路線或連接問題需要傳輸證據。身份驗證診斷需要實際的相關訊息身份和接收評估。保留完整的診斷訊息,以便專家可以區分類似的故障。

經批准的更正後,將任何新嘗試與其自己的佇列和訊息標識符相關聯。不要用後來的結果覆蓋歷史報告。將原始故障、維修和更換交付視為相關但不同的事件。當成功重新發送後延遲的報告到達時,這可以保留誠實的時間表。

準備特定於收件人的升級

  • 關聯:使用收件人、時間和佇列證據將報告與合法提交的內容進行配對。
  • 頒發者:將報告 MTA 與遠端 MTA 和診斷頒發者分開保留。
  • 結果:保留操作、狀態和原始診斷代碼,而不強制它們匹配。
  • 擁有者:指派實際的失敗層,而不僅僅是退回的發送者。
  • 隱私權:僅提供必要的報告欄位;不轉送無關的回傳訊息內容。

[ 外帶 ]

讀取特定於收件人的 DSN 字段,以將報告中繼與實際導致傳遞失敗的系統和事件區分開來。

[ 按角色 ]

這對您意味著什麼

選擇您的角色以執行後續實際步驟。

IT/郵件管理員

解析接收者區塊

結構化欄位保留了主題省略的差異。

後續步驟

  1. 比較報告 MTA 和遠端 MTA。
  2. 保留操作狀態和診斷代碼。
  3. 與可信任佇列記錄關聯。

CISO / SecOps

謹慎對待突發報告

退回郵件不會自動成為經過驗證的事件報告。

後續步驟

  1. 檢查是否有匹配的提交。
  2. 避免不受信任的附件執行。
  3. 限制返回訊息內容的洩漏。

創辦人/非技術人員

尋找失敗事件的擁有者

通知的發送者可能不知道根本問題。

後續步驟

  1. 確定受影響的收件者。
  2. 按故障層分配修正。
  3. 將原始結果和替換結果分開。

[ 常見問題解答 ]

常見問題

Reporting-MTA 是否始終是拒絕伺服器?

否。它標識生成報告的系統,該報告可能引用遠端故障。

什麼可以辨識受影響的收件者?

每個特定於收件者的傳遞狀態區塊中的最終收件者欄位。

一個 DSN 可以包含不同的收件者結果嗎?

是的。讀取每個區塊,而不是將一種狀態應用於每個可見的收件者。

遺失的 Remote-MTA 是否證明沒有遠端嘗試?

不可以。如果沒有遠端 MTA, RFC 3464會將提供的診斷代碼歸因於報告 MTA;這並不能確定早期嘗試的全部歷史。檢查可信日誌。

樣本是捕獲的提供者跳出嗎?

不。這是一個明確假設的現場演練,而不是提供者報告、產生的文件或執行的SMTP交換。

為什麼範例將狀態 5.4.7 和診斷 452 4.2.2 結合在一起?

假設的最終狀態描述佇列到期,而診斷保留最後的容量拒絕;如果可能的話, RFC 3463更喜歡實際的問題代碼而不是過期代碼。當報告 MTA 停止嘗試時,「操作:失敗」也可能伴隨 4.xx 狀態。

反彈本身可以偽造嗎?

是的。與受信任的發送日誌相關聯,並且不遵循意外的憑證請求。

重發成功後該保留什麼?

原始失敗、批准的更正和新嘗試的單獨識別碼和結果。

[ 來源 ]

來源

  1. RFC 3464用於傳遞狀態通知的可擴展訊息格式

    部分 §2.2 · §2.3 · §2.3.3 · §2.3.6 · §4

  2. RFC 3463增強型郵件系統狀態代碼

    部分 §3.2 · §3.3 · §3.4 · §3.5

  3. RFC 5321 SMTP

    部分 §3.3 · §4.1.1.1 · §4.2 · §4.5.3.2 · §4.5.4.1 · §5 · §6.1

[ 詞彙表 ]

詞彙表

報告-MTA
郵件傳輸代理程式產生遞送狀態通知。
遠端MTA
提供時與報告的傳遞嘗試關聯的遠端郵件傳輸代理程式。
DSN 收件者區塊
描述一位收件人的遞送狀態的結構化欄位。

企業出處

為什麼頂級金融機構和政府 退役了他們的電子郵件安全儀表板。

傳統的電子郵件驗證平台會向您出售儀表板並要求您的工程師來完成這項工作。在高風險環境中,手動監督意味著延遲執行、配置漂移和不受監控的影子域。

EmailAuth是代理電子郵件來源平台。 我們的代理人強制執行 p=reject,保持第三方寄件者一致並將您的網域移至完整狀態 RFC 9989 合規性、新的DMARC標準,以及人機互動審核能力。

政府 大型企業 一級金融機構

SaaS · 專用租賃 · 氣隙本地部署 · BYOK 加密

知識庫