Я узнал, что и адрес FROM, и адрес TO повторяются в скрытом элементе, называемом «конвертом», а затем снова повторяются в «теле».
Вопрос
- Почему данные конверта не копируются в «заголовок»?
- Почему существует такое дублирование, почему нельзя встроить необходимые функции в само сообщение?
- Все ли (не SMTP) транспорты сообщений делают это?
- Какие есть альтернативы SMTP? (так что я могу лучше понять аргументацию)
Ответы:
Адреса в сообщении электронной почты заголовок служит для разных целей , чем отправитель конверта и получатель (который на самом деле не скрыт сам по себе , они просто не являются частью сообщения).
Отправитель и получатель конверта, которые вы никогда не увидите в сообщении, являются частью протокола SMTP и указывают инструкции по доставке , то есть в какой почтовый ящик почтовый сервер должен доставить сообщение или куда его вернуть в случае какой-то провал. Ни один адрес не должен иметь никакого отношения к семантическому содержанию сообщения. Это подробно объясняется в разделах 4.1.1.2 и 4.1.1.3 RFC 5321 .
Логически они аналогичны адресам, напечатанным на конверте почтового отправления.
Адреса отправителя и получателя, которые появляются в самом сообщении, указывают на семантические значения, а не на явные инструкции доставки. Они подробно описаны в RFC 5322 раздела 3.6.3 и RFC 6854 раздел 2.1 (который RFC 5322 устаревшего раздел 3.6.2).
Вкратце, From: в сообщении указывает почтовый ящик того, кто написал сообщение, Sender: указывает сущность, которая отправила сообщение от имени кого-то другого, а To: и Cc: указывают предполагаемый почтовый ящик получателя. RFC определяют и другие поля заголовка, которые могут вас заинтересовать.
Логически они аналогичны адресам, напечатанным в переписке внутри почтового отправления.
Часто отправитель и получатель конверта совпадают с адресами From: и To :. Но они обычно вообще не имеют никакой корреспонденции, например, в случае списков рассылки.
источник
Наиболее распространенным сценарием, в котором вы увидите разницу, является доставка письма нескольким получателям.
Допустим, вы собираетесь отправить электронное письмо по адресу:
Когда ваш почтовый клиент отправляет письмо на ваш почтовый сервер, все три адреса будут повторяться как в конверте, так и в заголовках. Затем ваш почтовый сервер будет искать записи MX для
example.com
иexample.net
продолжить доставку.Ваш почтовый сервер теперь установит два отдельных SMTP-соединения с каждым из принимающих серверов для дальнейшей отправки электронной почты.
При связи с MX для
example.com
всех трех получателей все равно будет вTo
заголовке, но будет только один получатель конверта.При связи с MX для
example.net
всех трех получателей все равно будет вTo
заголовке, но будет только два получателя конверта.В качестве аналога вышесказанному представьте, что вы распечатали три копии письма с тремя получателями, написанными на бумаге. Затем вы поместите эти три листа бумаги в три отдельных конверта и напишите только один адрес на каждом конверте.
Существуют другие сценарии, в которых это имеет значение, например, при использовании
bcc
и при пересылке электронной почты.В качестве слегка надуманного аналога представьте, что вы обмениваетесь письмами с какой-то сущностью. Неизвестно для этого лица, вы создаете фотокопию каждого из тех писем, которые вы кладете в конверт на имя вашего адвоката.
источник