Email
僅將退回郵件轉發到不同的 SMTP 伺服器
我有一個 Postfix SMTP 伺服器,它從 Web 服務發送交易電子郵件。這些消息使用 VERP 作為返迴路徑,因此退回到如下地址:
bounce-7232-useremail=userdomain.com@e.mydomain.com
這個執行的 postfix 伺服器
e.mydomain.com
專門用於發送電子郵件,沒有本地郵箱、POP 或 IMAP 訪問等等。只有本地網路上的系統可以通過它中繼郵件。然後,我有一個單獨的自定義 SMTP 應用程序,它只處理在同一伺服器 (e.mydomain.com) 上執行但在不同埠 (8025) 上執行的退回郵件。它會丟棄任何不會發送到格式正確的退回地址的郵件。接受格式正確的退回地址的電子郵件。
當接受退回時,此自定義應用程序會根據退回電子郵件地址在數據庫中查找正確的使用者,並增加退回計數器。主要 Web 服務只會向退回數未超過門檻值的使用者發送交易電子郵件。
我的問題是:
- 將我的退回處理 SMTP (bounces.mydomain.com) 伺服器設置為直接處理退回(並在埠 25 上執行)會更好嗎?還是讓所有退回郵件都轉到我的 postfix 伺服器,然後讓 postfix 僅將退回郵件轉發到退回 SMTP 應用程序更好?
- 如果最好讓 postfix 處理所有傳入的消息,我如何將其配置為僅將格式為上述地址的消息轉發到另一個在非特權埠 (8025) 上執行的 SMTP 伺服器?
我總是不願意將服務放在它們通常不存在的埠上——不是因為軟體缺陷,而是因為人的缺陷。繼承此設置的系統管理員必須非常擅長跟踪“電子郵件反彈時去向”的架構,否則您的文件需要非常清晰(並且易於查找)。
所以,回答你的第一個問題——我的建議是有一個單獨的伺服器來處理反彈。這使得事情可以通過 dns 很好地記錄,而不是埋在 postfix 的配置文件中。
如果您選擇忽略該建議,則使用 postfix 的傳輸映射將允許您這樣做。例如,將其添加到 main.cf:
transport_maps = regexp:/etc/postfix/transport
並在您的傳輸文件中使用類似的內容:
/bounce.*/ smtp:bounces.mydomain.com:8025
(不要忘記’postmap /etc/postfix/transport’和’postfix reload’)