Подтвердить что ты не робот

Обнаружение пересылки электронной почты

Есть ли способ обнаружить (используя заголовки RFC 2822), что электронное письмо является переадресованным письмом?

4b9b3361

Ответ 1

Есть две вещи, которые обычно называются "пересылка".

Когда вы настраиваете автоматическую пересылку уровня аккаунта на другой адрес электронной почты, ваша почтовая система обычно вводит дополнительный заголовок, чтобы он мог обнаруживать и прерывать почтовые контуры. К сожалению, название этого заголовка никогда не было стандартизировано. Некоторые используют Delivered-To, некоторые используют X-Loop, некоторые используют X-Original-To, некоторые используют проприетарный заголовок X для своего почтового программного обеспечения. Но нет единого поля заголовка, в котором присутствуют все случаи.

Когда вы вручную пересылаете сообщение, нажав кнопку "Переслать" в своей почтовой программе и введя адрес электронной почты получателя и некоторый описательный текст, создается новое сообщение с новым заголовком Message-ID. Набор заголовков этого сообщения будет неотличим от обычного ответа - In-Reply-To и References устанавливаются точно так же. Единственное отличие состоит в том, что заголовок Subject обычно начинается с "Fwd:" или заканчивается на "(fwd)" . ( "Обычно" , потому что некоторые клиенты форматируют его как "[Fwd: <original subject>]" с квадратными скобками вокруг нового объекта, некоторые клиенты локализуют префикс Fwd: на свой родной язык, а некоторые пользователи вручную редактируют Subject перед ударом "отправить" ,.)

Итак, есть хорошие подсказки о том, что сообщение отправлено, но нет жестких и быстрых правил.

Ответ 2

Считывая spec, CTRL + F для "forward" дает следующие поля заголовка:

resent-date     =       "Resent-Date:" date-time CRLF  
resent-from     =       "Resent-From:" mailbox-list CRLF  
resent-sender   =       "Resent-Sender:" mailbox CRLF  
resent-to       =       "Resent-To:" address-list CRLF  
resent-cc       =       "Resent-Cc:" address-list CRLF  
resent-bcc      =       "Resent-Bcc:" (address-list / [CFWS]) CRLF
resent-msg-id   =       "Resent-Message-ID:" msg-id CRLF

Я не уверен, использует ли это основное почтовое программное обеспечение.

ИЗМЕНИТЬ

Прочитайте спецификацию слишком быстро, есть также эта заметка:

Примечание. Повторное введение сообщения в транспортную систему и использование    resent fields - это другая операция от "переадресации".     "Пересылка" имеет два значения: одно чувство пересылки - это то, что почта    программе чтения может быть сообщено пользователем направить копию сообщения    другому лицу, сделав пересылаемое сообщение телом нового    сообщение. Переадресованное сообщение в этом смысле, по-видимому, не имеет    исходит от первоначального отправителя, но является совершенно новым    форвардер сообщения. С другой стороны, пересылка также    означает, когда почтовая транспортная программа получает сообщение и    направляет его на другой пункт назначения для окончательной доставки. возмущаться    поля заголовка не предназначены для использования с любым типом    пересылка.

Нет никаких других уведомлений о "переадресации", поэтому нет полей заголовка, которые вы можете использовать для обнаружения переадресации, за исключением соглашения subject = "Fwd: <msg>".