这与这个问题有关:
linux - 为我的时事通讯应用程序获取反弹报告的方法?- 服务器故障
假设我在发送时事通讯以识别退回邮件并从我的时事通讯退订时生成这样的电子邮件地址:[email protected]
我想我会在返回路径中使用它,对吧?
那么我将如何在 postfix 中设置它以将所有这些以“bounce-”为前缀的地址收集到一个邮箱中?
最后,我听说有人提到软弹跳与硬弹跳。有人可以解释不同之处以及应该如何计算它们以知道何时从电子邮件通讯中永久删除某人?
这与这个问题有关:
linux - 为我的时事通讯应用程序获取反弹报告的方法?- 服务器故障
假设我在发送时事通讯以识别退回邮件并从我的时事通讯退订时生成这样的电子邮件地址:[email protected]
我想我会在返回路径中使用它,对吧?
那么我将如何在 postfix 中设置它以将所有这些以“bounce-”为前缀的地址收集到一个邮箱中?
最后,我听说有人提到软弹跳与硬弹跳。有人可以解释不同之处以及应该如何计算它们以知道何时从电子邮件通讯中永久删除某人?
您的问题(处理地址)的确切答案
[email protected]
取决于您的服务器如何配置为接收邮件。如果example.com
是虚拟域,你能做的最好的就是收集[email protected]
邮箱中的消息(假设recipient_delimiter = -
)。如果
example.com
是服务器的本地传递域(邮件传递到实际系统帐户),那么您可以将.forward
文件添加到用户的主目录,该文件bounce
传递到解析退回信息并将其记录在数据库或文件中的程序. 有关格式以及如何交付给程序man local
的更多信息,请参阅。.forward
由于我们为大量域发送消息,我们所做的就是
bounces.example.com
用作我们的 VERP 域。此域需要添加到relay_domains
./etc/postfix/transport_maps
使用此内容创建:然后将与此类似的行附加到
/etc/postfix/master.cf
:该
bounce_handler.py
脚本接受 VERP 地址作为其命令行选项,对其进行解析并进行必要的数据库更新以记录退回邮件。实际上,如果您想支持许多不同的域,Instyle 的答案很难实现,这是错误的,因为:
a) 以他的示例为例
transport_maps
,所有发送到该域的电子邮件都将发送到该特定服务,而不管这些电子邮件是否为退回电子邮件。由于它使用特定的域名,它确实应该只是被退回的电子邮件......但不能保证那样。b) 发送到您的脚本的数据是电子邮件本身,而不是退回邮件。换句话说,您的代码可能不知道电子邮件被退回的原因(即本地退回邮件只会向您发送原始电子邮件。)
在 postfix 中进行该设置的正确方法是使用退回通知类。
1) 在/etc/postfix/main.cf
2) 在/etc/postfix/transport_maps
如您所见,我们现在告诉 postfix
[email protected]
在电子邮件被退回时使用。然后在传输映射中,bulkbounce
用作处理任何电子邮件地址的服务[email protected]
。最后你可以
bulkbounce
用你的脚本定义:3) 在/etc/postfix/master.cf
此脚本要求您有一个用户。
nobody
也是一个不错的选择。如果您想拥有特定用户,可以使用以下命令创建它:如果没有 中的脚本
master.cf
,电子邮件将发送到批量退回帐户。因此,如果您有一个从文件中解析电子邮件的脚本,那么这将在没有transport_maps
andmaster.cf
更改的情况下工作。从下面的评论:
大多数现代邮件列表软件已经知道如何处理 VERP 消息,如果 MTA 被正确配置为将它们传递回邮件列表软件。对于GNU Mailman,您应该查看名为“如何使用带有 - 分隔符(后缀收件人分隔符)的 VERP?”的常见问题解答页面。
如果您正在制作自己的自定义时事通讯软件来处理此问题,您应该问自己为什么要重新发明轮子,而不是使用可以为您简单轻松地处理任务的现有应用程序。