13

前段时间看到一个关于检测退回邮件的问题:

我正在开发一个将发送批量消息(不是垃圾邮件:) 的工具,我需要添加一个功能来检测退回的消息。是否有与退回相关的标准响应?它会在正文的标题中吗?通过圣诞老人,2011-09-12


您不能依赖退回邮件的标题或正文来可靠地识别原始收件人,尤其是如果您想自动化该过程。即使您添加自己的自定义标头,弹跳服务器也可能会在向您发送通知时将其剥离...................... ……

退回邮件中唯一完全不受影响的信息是返回路径电子邮件地址——您的服务器宣传它希望将退回邮件发送到的地址。因此,自动化真正准确的反弹捕获的唯一方法是将收件人直接编码到返回路径地址本身。这通常可以通过覆盖每个外发邮件的服务器默认返回路径地址来完成,使用每个收件人的唯一值,例如bounce-XXXXX@yourdomain.com,其中 XXXXX 是收件人电子邮件地址的某种编码和/或混淆表示或其他一些内部标识符。此技术需要使用可以支持这种类型的通配符全能地址的电子邮件服务器,这样您就不必为要发送到的每个电子邮件地址设置新的退回帐户。假设您只需将服务器配置为将所有此类退回 * 电子邮件转储到您的脚本中,该脚本只需要解码 XXXXX 以确定原始收件人是谁。2011 年 9 月 12 日回答 Alex Howansky

以上似乎是一个很好的解决方案。 现在我的问题是:

如何配置 Postfix(或任何其他)邮件服务器以将每封退回的电子邮件从bounce@yourdomain.com 帐户转储到一个脚本,该脚本将解析和检索原始收件人的身份?是否将脚本保存在邮件服务器中的目录和转储的消息在同一目录中?

第三方电子邮件服务提供商是否允许您配置用于转储邮件的电子邮件帐户,并在服务器中安装脚本?

唱歌

4

1 回答 1

16

顺便说一下,相关标准称为VERP

你的意思是bounce+token@yourdomain.com,不仅仅是简单bounce@yourdomain.com的。令牌是使它独一无二的原因!

只要您配置in ,Postfix 就已经接受a+something@example.net给定有效地址的邮件:a@example.netrecipient_delimitermain.cf

recipient_delimiter = +

有几种不同的方法可以配置 Postfix,以便它将邮件传递到您的脚本并告诉您令牌是什么。尝试这个:

  1. bounce@yourdomain.com以与通常在该域中创建别名相同的方式创建地址:例如常规别名或虚拟邮箱

  2. master.cf. ${extension}意味着脚本将接收后面的任何内容+作为它的第一个参数,并且<username>应该是脚本应该在其下运行的本地 uid。

    bounce   unix  -       n       n       -       -       pipe
      flags=R user=<username> argv=/script/which/receives/bounces ${extension}
    
  3. 如果您还没有交通地图,请创建一个:

    transport_maps = hash:/etc/postfix/transport
    
  4. 添加以下行/etc/postfix/transport以定向bounce@yourdomain.com到您在其中创建的新传输master.cf

    bounce@yourdomain.com    bounce:
    
  5. 重建交通地图:

    postmap /etc/postfix/transport
    
于 2012-02-01T23:42:31.253 回答