Что такое Return-Path и кто его устанавливает?

Что такое Return-Path и кто его устанавливает?

Эта статья (https://www.sparkpost.com/resources/email-explained/return-path-explained/) объясняет «Обратный путь» следующим образом:

Если электронное письмо не доходит до адресата, обратный путь указывает, куда следует отправлять уведомления о недоставке или сообщения о недоставке.

и

Многие отправители включают идентификаторы в адрес обратного пути, чтобы упростить обработку ответного и недоставленного трафика, что называется обратным путем переменного конверта (VERP).

Я понимаю это так: «Как отправитель электронного письма, вы указываете заголовок Return-Path».

Однако, учитывая следующий ответ (https://stackoverflow.com/a/28494070/9878135), похоже, что принимающий сервер всегда перезаписывает Return-Path:

Установка заголовка Return-Path: в исходящей почте бессмысленна, поскольку он будет заменен MTA получателя. Если вы хотите контролировать, что там пишется, установите отправителя конверта (традиционно sendmail -f[email protected])

В настоящее время я пытаюсь создать почтовый сервер, который использует VERP для писем. Допустим, "[email protected]" хочет отправить электронное письмо наружу. "От" должно быть "[email protected]" в то время как "Return-Path" должен быть чем-то совершенно другим (вроде "[email protected]"). Если внешняя служба электронной почты не может доставить электронное письмо, она должна отправить электронное письмо обратно на адрес "[email protected]". Теперь мой сервер может найти это сообщение об ошибке в базе данных и сообщить[email protected]о сбое доставки.

Я использую Postfix для отправки и получения писем (и Python для их создания). Однако, похоже, что Return-Path никогда не принимается другими почтовыми службами (такими как Google Mail или ProtonMail). Google Mail вообще не показывает заголовок, а ProtonMail перезаписывает его адресом «От».

Так кто же устанавливает заголовок Return-Path и почему другие почтовые службы не могут получить мой?

решение1

Return-Path:Заголовок содержит копию адреса «отправителя конверта». Return-Path:Заголовок обычно (повторно)генерируется SMTP/MTA, осуществляющим доставку непосредственно в почтовый ящик получателя (после последнего перехода SMTP).

«Отправитель конверта» — адрес, используемый в MAIL FROM:команде в сеансе SMTP.

Поэтому ваше клиентское программное обеспечение для отправки должно установить «отправитель конверта» => Он (обычно) будет скопирован в Return-Path:.

SMTP.отправить почту(from_addr, …)

https://en.wikipedia.org/wiki/Bounce_address#Терминология

Обратный путь- Когда электронное письмо помещается в почтовый ящик получателя, создается новый заголовок письма с именем "Return-Path:", содержащий адрес из команды MAIL FROM. Более ранние формы электронной почты (такие как UUCP) требовали информации о каждом "прыжке" по пути, который электронное письмо проходило, чтобы достичь пункта назначения, отсюда и часть имени "path". Используется вЗапрос на предложение 2821,Запрос на изменение 3834,RFC4409.

решение2

Заголовок Return-Pathэлектронной почты должен содержать последний известный адрес возврата из последнего SMTP-рукопожатия в пути доставки. В отличие от Receivedзаголовков eg, существующие Return-Pathзаголовки в почте могут быть отброшены более поздними серверами. Обратите внимание, что возвраты будут отправлены в соответствии с MAIL FROMданными SMTP, а не в соответствии с Return-Pathданными, если эти значения не совпадают.

На самом деле заголовок следует рассматривать Return-Pathтолько как историческую ошибку. Он может содержать или не содержать пригодный для использования адрес, и официально он ни для чего не используется и должен рассматриваться только как отладочная информация. MAIL FROMДанные SMTP — это фактически используемый адрес возврата, который может или не может быть скопирован для Return-Pathотладки. Return-PathПредполагалось, что это более надежные данные, поскольку они устанавливаются принимающим сервером, но поскольку это всего лишь слепая копия, MAIL FROMон может содержать буквально все, что угодно.

TL;DR: Return-Pathотладочная информация, установленнаяполучениесервер для транзакции SMTP или ESMTP. Любые существующие Return-Pathзаголовки в фактическом письме могут быть удалены или не удалены перед добавлением Return-Pathзаголовка.

Связанный контент