使用python和VERP兼容的电子邮件发送

2024-10-02 22:27:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望能够用python发送电子邮件,这样我就可以解析bounce。VERP似乎是解决这个问题的办法。但是,当我设置from地址(而不是MIMEMultipart对象的“from”值)以包含VERP分隔符时,我不会收到跳出通知。在

我可以自己组成一个VERP发送者吗user@domain.com,我可以为那个收件人“mysender+user domain”设置我的From:地址吗-com.mydomain.com网站)并希望它能正常工作,还是需要配置postfix以正确解析失败的DSN?我的问题是收到失败通知,当我这样做时,无法将消息传递给有效的收件人。在

也许举个例子会有帮助。在

当我从myuser@domain.com,我收到退房通知。在

当我从myuser+verp_identifier@domain.com,我没有收到任何退学通知。(尽管电子邮件地址正确,例如:有效的_user@gmail.com顺利通过。) Perl's Mail module有一个Verp子模块,python有类似的东西吗?在


Tags: 对象fromcom电子邮件domain地址收件人bounce
2条回答

为了正确处理VERP,必须对Postfix进行特殊配置。列出允许tu use VERP的客户端的smtpd_authorized_verp_clients只配置发送部分。实际上,它列出了允许使用XVERP命令的客户机,该命令会自动将+dest添加到信封发送方地址。在

但在其默认配置Postfix中donot自动将发送到sender+ext的消息传递给sender。要使其生效,您必须在main.cf中添加(或取消注释)recipient_delimiter = +。在默认配置中,该行存在,但被注释掉了。在

因此,如果您可以形成自己的VERP发件人地址,即信封发件人地址为myuser+verpid@domain.com,那么只要您有recipient_delimiter = +,您就没有其他事情要做了:目标SMTP服务器将向该地址发送跳转,而您的Postfix将正确地将其发送到myuser@domain.com。在

我不知道有哪个python包会自动添加XVERB命令。因此,如果您想自动使用它,您应该遵循Postfix VERP Howto中描述的以下方法:

您可以使用smtpd_command_filter功能将XVERP附加到来自旧版软件的SMTP命令。这需要Postfix 2.7或更高版本。

/etc/postfix/main.cf:
    smtpd_command_filter = pcre:/etc/postfix/append_verp.pcre
    smtpd_authorized_verp_clients = $mynetworks

/etc/postfix/append_verp.pcre:
    /^(MAIL FROM:<listname@example\.com>.*)/ $1 XVERP

您应该使用“Return Path”而不是FROM作为退回消息发送到的地址。使用后缀在出站消息中指定返回路径不需要特殊配置。在

Postfix处理可变入站消息的配置要求可以在地址中使用+处理,因为+和后面的所有内容通常都被忽略。所以将返回路径设置为乔+bounce@here.com应交付至joe@here.com收件人地址joe+bounce@here.com。通过在母版.cf文件。在

将此项放入服务列表中:

smtp      inet  n       -       -       -       -       smtpd
  -o content_filter=filter:dummy

并在此处定义过滤器:

^{pr2}$

这会导致InboundProcessor.py脚本通过管道接收所有入站消息。如果“收件人”地址包含一个+后跟一个可以与不再有效的地址关联的跳出键值,则可以在数据库中将该地址标记为不活动。在

相关问题 更多 >