Отправка почты с помощью Python - как установить Return-Path, отличный от адреса «От» - PullRequest
1 голос
/ 14 ноября 2010

Я пытаюсь настроить почтовый сервер smail с помощью lamson (lamsonproject.org).Он работает очень хорошо, но у меня есть проблема с установкой пути возврата, и по этой причине отскоки идут на адрес «От» и поэтому не достигают моего почтового сервера.

Ламсон использует 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

, поэтому я вижу, что Return-Path действительно находится в заголовках.

При поиске ответа я нашел это: Настройка Return-Path с помощью Python sendmail для сообщения MIME

Последний комментарий в ответе: Ошибки / отказы / и т. Д.,следует перейти к отправителю конверта, а не к адресу в поле From:.

При поиске отправителя конверта и его указании я наткнулся на эту статью в вики: http://en.wikipedia.org/wiki/Bounce_address

В этом списке перечислены другие возможные варианты.параметры заголовка, такие как: обратный путь, обратный путь, конверт из, отправитель конверта, MAIL FROM, 2821-FROM, адрес возврата, From_, Errors-to.

Я помещаю все это в заголовки почты и - Вуаля - Этосработало.

Мой вопрос сейчас - действительно ли мне нужно ВСЕГДА перечислять так много возможных вариантов пути возврата в заголовках почты?Были ли почтовые серверы настроены на прием одного или двух из этих параметров сейчас?Есть ли лучшие способы убедиться, что почта возвращается на мой почтовый сервер, когда она возвращается?

Алан.

Ответы [ 2 ]

1 голос
/ 14 ноября 2010

Если вы отправляете почту, вам не нужно устанавливать ни один из этих заголовков;правильное место для отправителя конверта находится в команде MAIL FROM:, поэтому в вашем случае:

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

Поскольку эта команда является частью протокола SMTP, а не самого сообщения, получатель *Почтовый сервер 1008 * добавляет заголовок Return-Path для использования фильтров или другой последующей обработки, когда исходный SMTP-конверт недоступен.См. RFC2821 :

Когда SMTP-сервер доставки выполняет «окончательную доставку» сообщения, он вставляет строку обратного пути в начало почтовых данных.Это использование return-path обязательно;Почтовые системы ДОЛЖНЫ поддерживать это.Линия обратного пути сохраняет информацию виз команды ПОЧТА.

0 голосов
/ 12 января 2016

from_addr, которое вы используете в функции sendmail(from_addr, to_addrs, msg, mail_options=[], rcpt_options=[]), будет тем, которое будет установлено как Return-Path.

msg, отправляемое с помощью функции, может содержать различные *Заголовок 1007 * это обычный адрес, который люди увидят при открытии электронного письма.

Это можно увидеть в документации smtplib .Цитирую там примечание:

Параметры from_addr и to_addrs используются для построения конверта сообщения, используемого транспортными агентами.sendmail никоим образом не изменяет заголовки сообщений.

...