gpt4 book ai didi

python - 使用 python 和 postfix 发送符合 VERP 标准的电子邮件

转载 作者:太空宇宙 更新时间:2023-11-04 10:35:16 24 4
gpt4 key购买 nike

我希望能够在 python 中发送电子邮件,以便我可以解析退回邮件。 VERP 似乎是解决这个问题的方法。但是,当我将发件人地址(不是 MIMEMultipart 对象的“发件人”值)设置为包括 VERP 定界符时,我没有收到退回通知。

我可以只形成我自己的 VERP 发件人(即发送到 user@domain.com,我可以只设置我的发件人:该收件人的地址“mysender+user-domain-com.mydomain.com”)并期待它工作,还是我需要配置 postfix 以某种方式正确解析失败的 DSN?我的问题是收到失败通知,执行此操作时没有将消息传递给有效的收件人。

也许一个例子会有所帮助。

当我从 myuser@domain.com 发送电子邮件时,我会正常收到退回通知。

当我从 myuser+verp_identifier@domain.com 发送电子邮件时,我没有收到任何退回通知。 (尽管地址正确的电子邮件,例如,发送至:valid_user@gmail.com 也能顺利通过。) Perl's Mail module有一个Verp子模块,python有这样的吗?

最佳答案

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

Postfix 处理可变入站消息的配置要求可以用地址中的 + 来处理,因为 + 和后面的所有内容通常都会被忽略。因此,将 Return-Path 设置为 joe+bounce@here.com 应该传送到 joe@here.com,收件人地址为 joe+bounce@here.com。可以通过向 master.cf 文件添加过滤器来以编程方式处理消息。

将其放入服务列表:

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

并在此处定义过滤器:

filter    unix  -       n       n       -      10       pipe
flags=Rq user=filter null_sender=
argv=/home/filter/InboundProcessor.py -f ${sender} -- ${recipient}

这将导致 InboundProcessor.py 脚本通过管道接收所有入站消息。如果收件人地址包含 + 后跟一些退回键值,您可以将其与不再有效的地址相关联,则可以在数据库中将该地址标记为无效。

关于python - 使用 python 和 postfix 发送符合 VERP 标准的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23692885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com