Postfix

通過 milter 擷取隊列 ID 和 250 OK

  • January 13, 2017

我們有一個發送電子郵件的網路應用程序。現在,如果我們發送一封電子郵件,它被退回(無論出於何種原因),沒有人知道,因為它來自一個無回复地址,從不檢查退回。

其中一些電子郵件非常重要,我們想在界面中顯示失敗的電子郵件嘗試。

我的想法是這樣做:

  1. 在電子郵件中註入 X-Header: guid-goes-here 以唯一標識它。
  2. 在 Postfix 中創建一個 milter,它將通過腳本執行電子郵件以解析該標題並(希望)同時擷取隊列 ID。
  3. 解析該隊列 ID 的 mail.log 並獲取其處置(250 OK)。

對於#2,當我創建一個 milter 時,postfix 是否會在將郵件通過管道傳輸到腳本時注入隊列 ID?我處於早期階段,還沒有開始工作。另外,我選擇在後隊列(http://www.postfix.org/FILTER_README.html)中使用 SMTP 內容過濾器。這是正確的選擇嗎?

只需使用地址作為實際監控的信封發件人。

像這樣做:

  • 確保將bounces@$yourdomain傳遞到程序中(即可能通過別名或.forward)
  • 更改您的應用程序以使用此信封發件人方案發送郵件: bounces+recipient=recipientdomain@$yourdomain

如您所見,初始收件人 ( recipient@recipientdomain ) 已編碼到您正在使用的發件人地址中。如果郵件被退回,它會退回到**bounces+recipient=recipientdomain@$yourdomain——**所以根本不需要解析,您就可以找出退回的地址!

這稱為 VERP,並被 ezmlm 或 mailman 等郵件列表管理器使用:https ://en.wikipedia.org/wiki/Variable_envelope_return_path

您提出的方法是有缺陷的,因為“250 OK”狀態並不能真正表明郵件不會被後續中繼退回!

引用自:https://serverfault.com/questions/825862