我想做的是使用Lamson(Lamsonproject.org)设置Smail Mail Server。它运行良好,但是我在设置返回路径方面有问题,因此,弹跳将“从”地址,因此没有到达我的邮件服务器。

Lamson使用Pythons Smtplib发送邮件。

我的项目和我的SMTP服务器之间的“谈话”是这样的:

send: 'ehlo xxx.mydomiain.com\r\n'
reply: '250-smtp.smtpserver.com\r\n'
reply: '250-PIPELINING\r\n'
reply: '250-SIZE 20000000\r\n'
reply: '250-VRFY\r\n'
reply: '250-ETRN\r\n'
reply: '250-STARTTLS\r\n'
reply: '250-XVERP\r\n'
reply: '250 8BITMIME\r\n'
reply: retcode (250); Msg: smtp.smtpserver.com
PIPELINING
SIZE 20000000
VRFY
ETRN
STARTTLS
XVERP
8BITMIME
send: u'mail FROM:<me@myotherdomain.com> size=352\r\n'
reply: '250 Ok\r\n'
reply: retcode (250); Msg: Ok
send: u'rcpt TO:<pleasebouncethis@myotherdomain.com>\r\n'
reply: '250 Ok\r\n'
reply: retcode (250); Msg: Ok
send: 'data\r\n'
reply: '354 End data with <CR><LF>.<CR><LF>\r\n'
reply: retcode (354); Msg: End data with <CR><LF>.<CR><LF>
data: (354, 'End data with <CR><LF>.<CR><LF>')
send: 'MIME-Version: 1.0\r\nTo: pleasebouncethis@myotherdomain.com\r\nSubject: Testing bounces\r\nSender: MAILER-DAEMON@mydomiain.com\r\nReturn-Path: MAILER-DAEMON@mydomain.com\r\nReply-To: MAILER-DAEMON@mydomain.com\r\nMessage-Id: 377b8dcdf661810d3dc73a4a01fe23b3\r\nFrom: me@myotherdomain.com\r\nContent-Type: text/plain; charset="utf-8"\r\nContent-Transfer-Encoding: base64\r\n\r\nc2RmZ2TDpGfDpGRsZsOkZ2xkZmc=\r\n.\r\n'
reply: '250 Ok: queued as E635D157D3\r\n'
reply: retcode (250); Msg: Ok: queued as E635D157D3
data: (250, 'Ok: queued as E635D157D3')
send: 'quit\r\n'
reply: '221 Bye\r\n'
reply: retcode (221); Msg: Bye
Done

因此,我可以看到,返回路径确实在标题中。

在寻找答案时,我发现了这个:用Python Sendmail设置返回路径以获取MIME消息

答案中的最后评论是:错误/弹跳/等。应该转到信封发件人,而不是从:

查找信封发件人以及如何指定时,我遇到了这篇Wiki文章:http://en.wikipedia.org/wiki/bounce_address

这列出了另一个可能的标头参数,例如:返回路径,反向路径,信封,信封发件人,来自2821-from的邮件,返回地址,from _,errors-to。

我把所有这些都放在邮件标题中, - 瞧 - 它可以工作。

我的问题现在是 - 我真的必须始终列出邮件标头中的返回路径的许多可能的选项吗?邮件服务器是否已配置为现在接受其中一个或两个参数?是否有更好的方法来确保邮件弹跳时将邮件返回我的邮件服务器?

艾伦。

有帮助吗?

解决方案

如果你是 发送 然后,您无需设置这些标题中的任何一个;信封发件人的正确位置在 MAIL FROM: 命令,因此,在您的情况下:

MAIL FROM:<MAILER-DAEMON@mydomain.com>

由于此命令是SMTP协议的一部分,而不是消息本身,因此 接受者 Mail Server添加了一个返回路径标头,以使原始SMTP信封不可用的过滤器或其他下游处理。看 RFC2821:

当交付SMTP服务器提供消息的“最终交付”时,它会在邮件数据开头插入返回路径线。需要这种返回路径的使用;邮件系统必须支持它。返回路径线保留了信息u003Creverse-path>从邮件命令。

其他提示

from_addr 您在 sendmail(from_addr, to_addrs, msg, mail_options=[], rcpt_options=[]) 函数将是设置为 Return-Path.

msg 您使用该功能发送可以包含不同的 From: 标题是人们打开电子邮件时会看到的正常地址。

您可以在 SMTPLIB文档。在那里引用注释:

from_addr和to_addrs参数用于构建传输代理使用的消息信封。 SendMail不会以任何方式修改消息标头。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top