默默看郵件
← 回到部落格
message-expiredDefer Rate延遲率

message-expired 是什麼?以及為什麼你的延遲率會超過 100%

延遲率 300%、甚至 900%,不是報表壞掉。這篇解釋延遲率為什麼能超過 100%、message-expired(重試逾時)是怎麼發生的,以及為什麼你的退信率會在幾天後突然跳高。

默默·2026 年 7 月 31 日

message-expired 是什麼?以及為什麼你的延遲率會超過 100%

有一天你打開寄送報表,看到這樣的數字:

寄送 31,100 封,延遲 284,159 封,延遲率 913%

第一反應通常是「報表壞了吧」。

沒壞。 這個數字是對的,而且它在告訴你一件很重要的事。這篇就講清楚延遲率為什麼能超過 100%、message-expired 是怎麼來的,以及為什麼你的退信率會莫名其妙在幾天後突然跳高。


為什麼延遲率可以超過 100%

關鍵在分子和分母算的不是同一種東西

  • 分母:當天寄出的信件封數。一封信就是一封。
  • 分子:延遲事件的次數。同一封信被重試十次,就記十次。

所以只要重試堆積起來,延遲率超過 100% 是數學上必然的結果。上面那個 913% 的例子,實際上是三萬多封信各自被重試了好幾次,累積出二十八萬次的延遲事件。

這代表延遲率不是一個比例,而是一個強度指標。 它不是在說「九成的信被延遲了」,是在說「重試的密度有多高」。理解這一點,你看報表的方式會完全不一樣:

  • 延遲率 5%:正常,零星的重試。
  • 延遲率 50%:有一批信在排隊,值得看一下是誰。
  • 延遲率 300% 以上:某個收件方在大量擋你的信,而且你的系統正在不斷重試。

還有一個陷阱要提醒:當天寄的量越小,延遲率的數字會被放大得越誇張。 因為分母變小了,但佇列裡還積著前幾天的信在重試。所以看到一個嚇人的延遲率,先看一下當天的寄送量是不是特別少,那可能只是分母效應,不是真的惡化。


message-expired:重試視窗耗盡了

信不會無限期重試下去。每個寄送平台都會設一個重試視窗,常見是 24 到 72 小時。時間到了信還是送不出去,系統就放棄,這筆紀錄的分類就變成:

message-expired(retry timeout exceeded)

我看過實際的重試紀錄,一封信在放棄之前被重試了大約七十次。也看過延遲時間累積到 23 小時 39 分的,那就是逼近 24 小時期限、隨時要轉成 expired 的狀態。

重點是:message-expired 是結果,不是原因。

它只告訴你「這封信最後沒送成」,沒告訴你為什麼。真正的原因發生在更早之前,是那批信一開始為什麼一直被延遲。所以看到 message-expired,不要去處理 message-expired,要往回查那個延遲的源頭。


這就是為什麼你的退信率會延後爆發

這是實務上最容易被誤判的一點,也是我認為這篇最值得帶走的東西。

延遲的信不會立刻算進退信率。它在佇列裡的那幾天,你的報表看起來是這樣:

退信率 2.38%,延遲率很高

看起來還好對吧。但幾天後重試視窗耗盡,那批信集體轉成 message-expired、計入退信,報表突然變成:

退信率 18.42%

你會在星期五看到一個爆炸的退信率,但真正的問題是星期二發生的。

如果你不知道這個時間差,就會在錯誤的日期找原因,查那天的名單、那天的內容、那天的設定,全部都查不出問題,因為那天什麼事都沒發生。

所以看到退信率突然跳高,第一件事是往前推幾天,看那幾天的延遲率是不是先漲上去了。 如果是,那就是延遲到期轉退信,你要查的是幾天前那批信被誰擋住。


往回查:那批信當初為什麼被延遲

延遲的成因就那幾種,逐一排除:

成因 特徵 會自己好嗎
收件方節流 集中在單一大型 ISP,代碼是 4xx 會,降速就好
灰名單 訊息寫著 greylisted、幾分鐘後重試
偽裝成灰名單的長期封鎖 訊息裡有一個很遠的到期日 不會
空殼 tenant(ATTR5) 訊息裡有 ATTR5 不會
退信網域 DNS 解不出來 多家 ISP 同時在 MAIL FROM 階段拒絕 不會,要修 DNS

前兩種你可以放著,最後三種放著只會讓它們全部逾時,變成一筆延後引爆的退信率。

最後那一種特別值得講:如果你的 Return-Path 網域 DNS 掛掉了(例如 CNAME 被誤刪),會有好幾家 ISP 同時在收信的第一階段就把你退回,而且退的都是 4xx。這種會造成大規模的重試風暴,延遲率可以衝到一兩百趴,而且因為是暫時碼,系統會很勤勞地一直重試。這種問題修好 DNS 之後,通常 24 到 48 小時內佇列就會消化掉。


該怎麼看這幾個數字

整理成一句話版本:

  • 延遲率高、退信率正常 → 有信在排隊,先查是誰擋的、會不會自己好。
  • 延遲率高、而且成因是那三種不會自己好的 → 現在不處理,幾天後會變成退信率。
  • 退信率突然跳高、前幾天延遲率也高 → 是延遲到期,往前推幾天找原因。
  • 退信率高、延遲率接近零 → 跟延遲無關,是硬拒收,查驗證名單

還有一個操作上的建議:如果你確定某一批收件人是永遠送不到的,主動把他們排除,不要等系統重試到逾時。 這一步同時會降低你的延遲率和退信率,而且省下的重試資源會讓其他信送得更順。

至於送達率和真正的收件匣到達率差在哪,那是另一組容易搞混的數字,見Email 到達率是什麼


一句話總結

延遲率超過 100% 不是報表壞掉,是因為它算的是重試次數不是信件封數。message-expired 則是重試視窗耗盡的結果,不是原因,而且它會讓你的退信率延後好幾天才爆發,害你在錯誤的日期找問題。看到退信率突然跳高,先往前推幾天看延遲率。

如果你的延遲率高得莫名其妙、或退信率無預警跳高卻找不到當天的原因,歡迎找我聊聊,我幫你把時間軸拉開來看。

常見問題

延遲率超過 100% 是報表算錯了嗎?
不是。延遲率的分子算的是延遲「事件」數,一封信被重試十次就記十次,分母卻是當天寄出的信件封數。所以只要重試堆積,延遲率超過 100% 是數學上完全正常的結果,它反映的是重試的強度,不是被延遲的信件比例。
message-expired 是什麼意思?
代表這封信在佇列裡重試到超過系統設定的期限,被放棄了。信一直沒被收件方接受,重試視窗(多數平台是 24 到 72 小時)耗盡之後,它就從延遲轉成退信。所以 message-expired 是延遲問題的最終結果,不是一個獨立的原因。
為什麼我的退信率會在幾天後突然跳高?
因為前幾天累積的延遲件到期了。延遲的信不會馬上算進退信,要等重試視窗耗盡才轉成 message-expired 計入。所以你會看到某天退信率突然從個位數跳到十幾趴,真正的原因其實發生在好幾天前。
看到 message-expired 該怎麼處理?
不要處理 message-expired 本身,它只是結果。要往回查那批信當初為什麼一直被延遲:是收件方在節流、是灰名單、還是收件端根本收不到信。找出那個原因才有意義。

這篇有幫上忙的話,下一篇直接寄給你

訂閱電子報,立刻收到《抵達率診斷懶人包》,20 頁、不用工程師,自己就能揪出信被擋的原因。

默默
默默

台灣 Email Deliverability 顧問。曾協助數十個品牌完成 IP 預熱,黑色星期五期間維持 95% 抵達率。 如果你的信一直進垃圾信件夾,歡迎找我聊。

預約免費諮詢 →