Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python和postfix发送符合VERP的电子邮件_Python_Postfix Mta_Verp - Fatal编程技术网

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

使用python和postfix发送符合VERP的电子邮件,python,postfix-mta,verp,Python,Postfix Mta,Verp,我希望能够用python发送电子邮件,以便分析反弹。VERP似乎是解决这个问题的方法。但是,当我将我的from地址(不是MIMEMultipart对象的“from”值)设置为包含VERP分隔符时,我不会收到跳出通知 我可以只填写我自己的VERP发件人(即发送到user@domain.com,我是否可以为该收件人“mysender+user domain com.mydomain.com”)设置我的From:地址并期望它正常工作,或者我是否需要配置postfix以正确解析失败的DSN?我的问题是收

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

我可以只填写我自己的VERP发件人(即发送到user@domain.com,我是否可以为该收件人“mysender+user domain com.mydomain.com”)设置我的From:地址并期望它正常工作,或者我是否需要配置postfix以正确解析失败的DSN?我的问题是收到失败通知,当我这样做时,没有将消息传递给有效的收件人

也许举个例子会有所帮助

当我从myuser@domain.com,我收到的反弹通知很好

当我从myuser+verp发送电子邮件时_identifier@domain.com,我没有收到任何反弹通知。(尽管电子邮件地址正确,例如收件人:valid)_user@gmail.com过得很好。)
有一个Verp子模块,python有这样的子模块吗?

为了正确处理Verp,必须专门配置Postfix。
smtpd\u authorized\u verp\u客户端
列出了允许您使用verp的客户端,仅配置发送部分。事实上,它列出了允许使用XVERP命令的客户端,该命令会自动将
+dest
添加到信封发送方地址

但在其默认配置中,Postfix donot会自动将发送到
sender+ext
的消息传递给
sender
。要使其工作,您必须在
main.cf
中添加(或取消注释)
recipient\u delimiter=+
。在默认配置中,该行存在,但已注释掉

因此,如果您可以形成自己的VERP发件人地址,即拥有一个信封发件人地址
myuser+verpid@domain.com
,如果您有
收件人_delimiter=+
:目标SMTP服务器将向该地址发送跳转,您的后缀将正确地发送到该地址myuser@domain.com.

我不知道任何python包会自动添加XVERB命令。因此,如果希望自动使用,应遵循中所述的以下配方:

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

/etc/postfix/main.cf:
smtpd_命令_filter=pcre:/etc/postfix/append_verp.pcre
smtpd_授权_verp_客户端=$mynetworks
/etc/postfix/append_verp.pcre:
/^(邮寄地址:.*)/$1 XVERP

为了正确处理VERP,必须专门配置后缀。
smtpd\u authorized\u verp\u客户端
列出了允许您使用verp的客户端,仅配置发送部分。事实上,它列出了允许使用XVERP命令的客户端,该命令会自动将
+dest
添加到信封发送方地址

但在其默认配置中,Postfix donot会自动将发送到
sender+ext
的消息传递给
sender
。要使其工作,您必须在
main.cf
中添加(或取消注释)
recipient\u delimiter=+
。在默认配置中,该行存在,但已注释掉

因此,如果您可以形成自己的VERP发件人地址,即拥有一个信封发件人地址
myuser+verpid@domain.com
,如果您有
收件人_delimiter=+
:目标SMTP服务器将向该地址发送跳转,您的后缀将正确地发送到该地址myuser@domain.com.

我不知道任何python包会自动添加XVERB命令。因此,如果希望自动使用,应遵循中所述的以下配方:

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

/etc/postfix/main.cf:
smtpd_命令_filter=pcre:/etc/postfix/append_verp.pcre
smtpd_授权_verp_客户端=$mynetworks
/etc/postfix/append_verp.pcre:
/^(邮寄地址:.*)/$1 XVERP
您应该使用“返回路径”而不是“发件人”作为跳转邮件的发送地址。使用后缀在出站消息中指定返回路径不需要特殊配置

Postfix处理变量入站消息的配置要求可以用地址中的+来处理,因为+和后面的所有内容通常被忽略。所以给乔设置返回路径+bounce@here.com应交付给joe@here.com带着对乔的称呼+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脚本通过管道接收所有入站消息。如果“收件人”地址包含一个+后跟某个跳转键值,您可以将该跳转键值与一个不再有效的地址相关联,您可以在数据库中将该地址标记为非活动地址。

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

Postfix处理变量入站消息的配置要求可以用地址中的+来处理,因为+和后面的所有内容通常被忽略。所以给乔设置返回路径+bounce@here.com应交付给joe@here.com带着对乔的称呼+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脚本通过管道接收所有入站消息。如果“收件人”地址包含+后跟某个反弹键值,则可以