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

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

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

и

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

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

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

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

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

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

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

2 ответа

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

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

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

SMTP.sendmail(from_addr, …)

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

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

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

Другие вопросы по тегам