我们有一个发送电子邮件的网络应用程序。现在,如果我们发送一封电子邮件,它被退回(无论出于何种原因),没有人知道,因为它来自一个无回复地址,从不检查退回。
其中一些电子邮件非常重要,我们想在界面中显示失败的电子邮件尝试。
我的想法是这样做:
- 在电子邮件中注入 X-Header: guid-goes-here 以唯一标识它。
- 在 Postfix 中创建一个 milter,它将通过脚本运行电子邮件以解析该标题并(希望)同时捕获队列 ID。
- 解析该队列 ID 的 mail.log 并获取其处置(250 OK)。
对于#2,当我创建一个 milter 时,postfix 是否会在将邮件通过管道传输到脚本时注入队列 ID?我处于早期阶段,还没有开始工作。另外,我选择在后队列(http://www.postfix.org/FILTER_README.html)中使用 SMTP 内容过滤器。这是正确的选择吗?
只需使用地址作为实际监控的信封发件人。
像这样做:
如您所见,初始收件人 ( recipient@recipientdomain ) 已编码到您正在使用的发件人地址中。如果邮件被退回,它会退回到bounces+recipient=recipientdomain@$yourdomain——所以根本不需要解析,您就可以找出退回的地址!
这称为 VERP,并被 ezmlm 或 mailman 等邮件列表管理器使用:https ://en.wikipedia.org/wiki/Variable_envelope_return_path
您提出的方法是有缺陷的,因为“250 OK”状态并不能真正表明邮件不会被后续中继退回!