Как извлечь SMTP-конверт и заголовок с помощью Perl? - PullRequest
0 голосов
/ 22 сентября 2009

Что такое конверт SMTP и заголовок SMTP и как они соотносятся? Как мне извлечь их с помощью Perl?

Ответы [ 4 ]

4 голосов
/ 22 сентября 2009

SMTP-сообщение содержит набор заголовков, таких как From, To, CC, Subject и целый ряд других вещей.

Конверт SMTP - это просто имя, данное небольшому набору заголовков с префиксом к стандартному сообщению SMTP, когда сообщение перемещается агентом транспорта сообщений (т.е. сервером SMTP). Наиболее распространенными заголовками конвертов являются X-Sender, X-Receiver и Received.

Например, SMTP-сервер Microsoft добавляет X-Sender и серию заголовков X-Receiver в верхнюю часть сообщения, когда он помещает сообщение в свою папку удаления. Будет один X-Receiver для каждого почтового ящика, соответствующего домену, для которого предназначена папка удаления.

Другой пример: SMTP-серверы добавляют заголовок Receive: при получении сообщения от другого SMTP-сервера. Этот заголовок дает различные детали обмена. Следовательно, большинство сообщений электронной почты в tinternet, когда они прибудут в конечный пункт назначения, будут иметь серию заголовков получения, указывающих, что SMTP-сервер перепрыгивает, чтобы получить сообщение. Обычно серверы удаляют заголовки X-Sender, X-Receiver, когда сообщение наконец перемещается в почтовый ящик POP3.

Доступ к заголовкам

На платформе Windows я нашел единственный способ получить доступ к заголовкам конвертов - просто открыть и проанализировать файл eml. Это довольно простой формат (name: value CR LF).

Снова на платформе Windows можно получить доступ к основному набору заголовков сообщений и частей тела с помощью набора объектов CDOSYS.dll COM. Как бы вы сделали это на других платформах, я не знаю. Тем не менее, формат заголовка довольно прост в соответствии с заголовками конверта, он обеспечивает доступ к частям тела, что потребует более творческого кодирования.

4 голосов
/ 22 сентября 2009

Конверт - это адресная информация, отправленная на сервер во время первоначального разговора с помощью команд «MAIL FROM:» и «RCPT TO:».

Заголовок SMTP - это набор строк заголовка, которые отправляются после выполнения команды DATA.

То, как вы их находите, зависит от того, как / откуда вы получаете сообщение, и нам потребуется гораздо больше подсказок, чтобы попытаться ответить на него.

1 голос
/ 22 сентября 2009

Здесь вы можете думать о трех разных вещах. Существуют директивы, которыми обменивались MTA SMTP (во время каждого прыжка, которое приняло сообщение) ... заголовки, которые были сгенерированы MUA, и заголовки, которые были добавлены (или изменены) MTA вдоль маршрута, по которому проходило данное сообщение.

«Конверт» относится к информации, предоставляемой MTA (обычно это самый последний или конечный MTA назначения). Отправитель включает набор заголовков после директивы DATA в соединении SMTP (отделенный от тела сообщения пустой строкой ... но дважды проверьте RFC, если это определенно должна быть пара CR / LF). Обратите внимание, что локальный адаптер MTA может добавить дополнительные заголовки и даже изменить некоторые заголовки перед сохранением или пересылкой сообщения.

(Обычно следует добавлять только заголовки Received-by:).

Некоторые MTA настроены для добавления заголовков X-Envelope-To: и / или X-Envelope-From :. Некоторые из них по-прежнему будут фильтровать содержимое этих заголовков (например, для предотвращения утечки слепых копий). (Senario: исходный MUA имел каталог BCC: line, в который было скопировано несколько человек с сообщением, имена всех которых были бы указаны в заголовках CC:; для каждого домена получателя (результат MX) MTA будет выдавать только RCPT TO: только для подмножества адресов, для которых хост, если соответствующий результат (его собственный концентратор, smarthost или любой допустимый MX для цели) --- таким образом, любые подмножества получателей, которые совместно используют MX друг с другом, увидят утечку в заголовки X-Envelope-To: сгенерированные MTA, которые небрежно относились к обработке этой детали).

Кроме того, строка Envelope-From не будет содержать только имя хоста / домена, указанное в директивах HELO FROM: или EHLO FROM: при обмене SMTP. Его нельзя использовать в качестве адреса возврата, например, для ответов.

1 голос
/ 22 сентября 2009

Что касается электронной почты Perl, взгляните на Проект электронной почты Perl .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...