这与此问题有关:
linux-如何为我的新闻通讯应用程序获取退回报告?-服务器故障
假设我发送新闻稿以识别跳动并从新闻稿中取消订阅时,正在生成这样的电子邮件地址:bounce-123456789@example.com
我想我会在返回路径中使用它,对吗?
那么我将如何在postfix中进行设置,以将所有带有“ bounce-”前缀的地址收集到一个邮箱中?
最后,我听说有人提到软弹和硬弹。有人可以解释不同之处吗?应该如何计算他们的时间,才能知道何时从电子邮件时事通讯中永久删除某人?
这与此问题有关:
linux-如何为我的新闻通讯应用程序获取退回报告?-服务器故障
假设我发送新闻稿以识别跳动并从新闻稿中取消订阅时,正在生成这样的电子邮件地址:bounce-123456789@example.com
我想我会在返回路径中使用它,对吗?
那么我将如何在postfix中进行设置,以将所有带有“ bounce-”前缀的地址收集到一个邮箱中?
最后,我听说有人提到软弹和硬弹。有人可以解释不同之处吗?应该如何计算他们的时间,才能知道何时从电子邮件时事通讯中永久删除某人?
Answers:
问题的确切答案(处理bounce-xxx@example.com
地址)取决于服务器配置为接收邮件的方式。如果example.com
是虚拟域,那么您最好的办法就是收集bounce@example.com
邮箱中的邮件(假设recipient_delimiter = -
)。
如果example.com
是服务器的本地传递域(邮件传递到实际的系统帐户),则可以将.forward
文件添加到bounce
用户的主目录,该目录将传递到一个程序,该程序可以分析退回信息并将其记录在数据库或文件中。有关格式以及如何传递给程序的man local
更多信息,请参见.forward
。
由于我们发送大量域的消息,因此bounces.example.com
我们所做的就是将其用作VERP域。该域需要添加到中relay_domains
。/etc/postfix/transport_maps
使用以下内容创建:
bounces.example.com bulkbounce:
然后将类似于此的行添加到/etc/postfix/master.cf
:
大量反弹unix-nn--管道 user = nobody argv = / usr / local / bin / bounce_handler.py $ {recipient}
该bounce_handler.py
脚本接受VERP地址作为其命令行选项,对其进行解析并进行必要的数据库更新以记录退回。
实际上,如果您要支持许多不同的域,那么Instyle的答案很难实现,这是错误的,因为:
a)以他的例子 transport_maps
,所有发送到该域的电子邮件都发送到该特定服务,而无需考虑该电子邮件是否为退回电子邮件。由于它使用特定的域名,因此确实应该只将其退回电子邮件...但是不能以此方式保证。
b)发送到脚本的数据是电子邮件本身,而不是退回邮件。换句话说,您的代码可能不知道为何电子邮件被退回(即本地退回将仅向您发送原始电子邮件。)
在后缀中进行该设置的正确方法是使用退回通知类。
1)在/etc/postfix/main.cf中
notify_classes = bounce
bounce_notice_recipient = bounces@example.com
transport_maps = hash:/etc/postfix/transport_maps
2)在/ etc / postfix / transport_maps中
# when you make changes to this file, run:
# sudo postmap /etc/postfix/transport_maps
bounces@example.com bulkbounce:
如您所见,我们现在告诉postfix bounces@example.com
在电子邮件退回时使用。然后在运输地图中,bulkbounce
用作处理任何电子邮件地址的服务bounces@example.com
。
最后,您可以定义 bulkbounce
使用脚本:
3)在/etc/postfix/master.cf中
bulkbounce unix - n n - - pipe
flags=FRq user=bounce argv=/home/bounce/bin/snapbounce --sender ${sender} --recipient ${recipient}
该脚本要求您拥有一个用户。nobody
也是一个不错的选择。如果要拥有特定用户,可以使用以下方法创建它:
useradd bounce
如果没有中的脚本master.cf
,则电子邮件将发送到bulkbounce帐户。因此,如果您有一个脚本来解析文件中的电子邮件,则无需更改transport_maps
和即可使用该脚本master.cf
。
从下面的评论:
仅供参考-重:双倍反弹...
如果你正在修改的返回地址(VERP地址等user+id@fromdomain.com
,那么你将要注释掉线main.cf
了bounce_notice_recipient
,如果你有兴趣在解析+id
只在脚本中反弹。
+id@
可能是某种类型的信封?
如果MTA已正确配置为将VERP消息传递回邮件列表软件,则大多数现代邮件列表软件已经知道如何处理VERP消息。对于GNU Mailman,您应该检出FAQ页面,将其恰当地命名为“如何将VERP与-分隔符(Postfix receiver_delimiter)一起使用?”。
如果您要制作自己的自定义新闻通讯软件来处理此问题,则应问自己为什么要重新发明轮子,而不是使用现有的可以轻松简单地处理任务的应用程序。
Message-Id
在标题中,则必须将其发送回去,足以检查谁是谁。