Давайте начнем с простого примера. Допустим, у вас есть список адресов электронной почты, который будет рассылать следующий RFC2822 контент.
From: <coolstuff@mymailinglist.com>
To: <you@yourcompany.com>
Subject: Super simple email
Reply-To: <coolstuff-threadId=123@mymailinglist.com>
This is a very simple body.
Теперь предположим, что вы собираетесь отправить его из списка рассылки, который реализует VERP (или какой-либо другой механизм отслеживания отказов, который использует другой путь возврата). Допустим, обратный путь будет coolstuff-you=yourcompany.com@mymailinglist.com
. Сеанс SMTP может выглядеть следующим образом:
{S}220 workstation1 Microsoft ESMTP MAIL Service
{C}HELO workstation1
{S}250 workstation1 Hello [127.0.0.1]
{C}MAIL FROM:<coolstuff-you=yourcompany.com@mymailinglist.com>
{S}250 2.1.0 me@mycompany.com....Sender OK
{C}RCPT TO:<you@yourcompany.com>
{S}250 2.1.5 you@yourcompany.com
{C}DATA
{S}354 Start mail input; end with <CRLF>.<CRLF>
{C}From: <coolstuff@mymailinglist.com>
To: <you@yourcompany.com>
Subject: Super simple email
Reply-To: <coolstuff-threadId=123@mymailinglist.com>
This is a very simple body.
.
{S}250 Queued mail for delivery
{C}QUIT
{S}221 Service closing transmission channel
Где {C} и {S} представляют команды клиента и сервера соответственно.
Почта получателя будет выглядеть так:
Return-Path: coolstuff-you=yourcompany.com@mymailinglist.com
From: <coolstuff@mymailinglist.com>
To: <you@yourcompany.com>
Subject: Super simple email
Reply-To: <coolstuff-threadId=123@mymailinglist.com>
This is a very simple body.
Теперь давайте опишем различные "ОТ".
- Обратный путь (иногда называемый обратным путем, отправителем конверта или конвертом - все эти термины могут использоваться взаимозаменяемо) - это значение, используемое в сеансе SMTP в команде
MAIL FROM
. Как видите, это не обязательно должно быть то же значение, что и в заголовках сообщений. Только почтовый сервер получателя должен добавлять заголовок Return-Path в начало письма. Это записывает фактического отправителя Return-Path во время сеанса SMTP. Если заголовок Return-Path уже существует в сообщении, этот заголовок удаляется и заменяется почтовым сервером получателя.
Все отскоки, которые происходят во время сеанса SMTP, должны возвращаться к адресу Return-Path. Некоторые серверы могут принимать всю электронную почту, а затем ставить ее в очередь локально, пока у нее не появится свободная нить для доставки ее в почтовый ящик получателя. Если получатель не существует, он должен вернуть его обратно к записанному значению Return-Path.
Обратите внимание, что не все почтовые серверы подчиняются этому правилу; Некоторые почтовые серверы возвращают его обратно на адрес FROM.
Адрес FROM - это значение, найденное в заголовке FROM. Предполагается, что это сообщение от кого. Это то, что вы видите как «ОТ» в большинстве почтовых клиентов. Если в электронном письме отсутствует заголовок «Ответить», то все ответы пользователей (почтового клиента) должны возвращаться на адрес ОТ.
Заголовок Reply-To добавляется отправителем (или программным обеспечением отправителя). Здесь также должны учитываться все человеческие ответы. По сути, когда пользователь нажимает «ответить», значение Reply-To должно быть значением, используемым в качестве получателя вновь составленного электронного письма. Значение Reply-To не должно использоваться никаким сервером. Он предназначен только для использования на стороне клиента.
Однако, как вы можете сказать, не все почтовые серверы подчиняются стандартам или рекомендациям RFC.
Надеюсь, это поможет прояснить ситуацию. Однако, если я что-то пропустил, дайте мне знать, и я постараюсь ответить.