Когда сервер SMTP получает сообщение для доставки или дальнейшей обработки, он
должен вставить трассировочную информацию (time stamp или Received) в начало содержимого, как описано в параграфе 4.1.1.4.
Трассировочная строка
должна иметь следующую структуру:
- В поле FROM, которое должно обеспечиваться в среде SMTP, следует включать (1) имя хоста-отправителя, представленное в команде EHLO, и (2) IP адрес отправителя, определенный из соединения TCP.
- Поле ID может включать "@", как предложено в RFC 822, но это необязательно.
- Поле FOR может содержать список элементов <path>, если используется множество команд RCPT. Это может влиять на безопасность системы и обычно нежелательно включать такие списки (см. параграф 7.2).
Для почтовых программ Internet недопустимо внесение изменений в строки Received:, уже присутствующие в заголовке сообщения. Серверы SMTP
должны добавлять в начало свою строку Received, но
недопустимо менять порядок имеющихся строк или вставлять свою строку Received в другое место заголовка. По мере расширения сети Internet просмотр строк Received становится все более важным средством диагностики почтовых систем, особенно для обнаружения медленно работающих трансляторов.
Серверам SMTP, которые создают поля Received,
следует явно задавать временной сдвиг (например, -0800), а не использовать имена часовых поясов. По возможности следует указывать локальное время (с учетом пояса), а не UT. Такая информация дает больше информации о локальных условиях. Если требуется использовать UT, получателю достаточно использовать простую арифметику для получения нужного значения. Использование формата UT приводит к потере информации о часовом поясе сервера. Если желательно указывать имя часового пояса, его следует давать как комментарий.
Когда сервер SMTP обеспечивает «окончательную доставку» сообщения, он вставляет строку обратного пути (return- path) в начало почтовых данных. Использование return-path является обязательным и почтовые системы
должны поддерживать обратный путь. Строка return-path сохраняет значение одноименного параметра из команды MAIL.
Окончательная доставка сообщения все еще сохраняет его в среде SMTP. Обычно сообщение доставляется в почтовый ящик пользователя или почтовое хранилище, но в некоторых случаях сообщение может подвергаться дополнительной обработке или передаваться в другие почтовые системы. Путь возврата, сохраненный в почтовом ящике, может отличаться от адреса реального отправителя сообщения (например, при доставке сообщений об ошибках по специальному адресу вместо передачи их отправителю). При использовании почтовых списков такое несовпадение встречается часто и оказывает большую пользу, доставляя сообщения об ошибках держателю списка, а не отправителям сообщений.
В приведенном выше тексте предполагается, что окончательные почтовые данные будут начинаться со строки обратного пути, за которой будет следовать одна или несколько трассировочных строк. После строк трассировки располагаются заголовки почтовых данных и тело сообщения [32].
В некоторых случаях сервер SMTP сложно определить обеспечивает ли он окончательную доставку. Поэтому все последующие почтовые системы (трансляторы, шлюзы, системы пересылки)
могут удалять строку обратного пути и перестраивать команду MAIL, обеспечивая в доставленном сообщении единственную строку обратного пути.
Генерирующей сообщение системе SMTP
не следует передавать сообщений, в которых уже включен заголовок Return-path. Для серверов SMTP, обеспечивающих трансляцию,
недопустимо проверять данные сообщения и наличие заголовка Return-path. Сервер SMTP, обеспечивающий окончательную доставку,
может удалять имеющийся заголовок Return-path перед добавлением своего.
Основным назначением Return-path является указание адреса, по которому следует доставлять сообщения об ошибках.
Для однозначности
следует включать в сообщение единственный вариант обратного пути. Системам, использующим синтаксис RFC 822 с отличным от SMTP транспортом,
следует указывать однозначный адрес, связанный странспортным конвертом, по которому должна возвращаться информация об ошибках (например, о невозможности доставки).
Историческое замечание: Приведенные в RFC 822 сведения, отвергающие использование заголовка Return-path (или адреса возврата из команды MAIL в конверте) для доставки информации об ошибках, неприменимы в среде Internet.
Адрес обратного пути (копируемый в Return-path)
должен использоваться для доставки всех сообщений об ошибках в процессе доставки.
В частности:
- Шлюзам из SMTP в другие среды следует вставлять обратный путь, если у них нет информации о том, что другая среда также использует в адресах доменные имена Internet и поддерживает отдельный конверт с адресом отправителя.
- Шлюзам из других сред в SMTP следует удалять из заголовка строку обратного пути и копировать эту информацию в конверт SMTP или объединять ее с присутствующей в конверте информацией из другой транспортной системы для построения обратного пути для команды formation present in the envelope of the other transport system to construct the reverse path argument to the MAIL command in the SMTP envelope.
Сервер должен принимать специальные меры в случаях, когда обработка принятых почтовых данных может быть успешной лишь отчасти. Это может произойти, если после приема нескольких адресов получателей и почтовых данных для них сервер SMTP обнаружит, что возможна доставка только некоторым из указанных адресатов. В таких случаях на команду DATA
должен возвращаться отклик OK. Однако сервер SMTP
должен подготовить и передать уведомление о невозможности доставки отправителю сообщения.
Должно передаваться одно уведомление со списком всех адресатов, которым невозможно передать сообщение, или отдельные уведомления для каждого из таких адресатов. Из соображений экономии первый вариант является более предпочтительным. Все уведомления о невозможности доставки передаются с использование команды MAIL (даже в тех случаях, когда проблема возникла при обработке устаревших команд SEND, SOML или SAML) и содержат пустое поле обратного пути (см. параграф 3.7).
Временные метки и пути возврата формально определяются следующим образом:
Return-path-line = "Return-Path:" FWS Reverse-path <CRLF>Time-stamp-line = "Received:" FWS Stamp <CRLF>Stamp = From-domain By-domain Opt-info ";" FWS date-time; date-time определено в [32], но форма "obs-", особенно для 2-значного указания года; запрещена в SMTP и ее использование недопустимо.From-domain = "FROM" FWS Extended-Domain CFWSBy-domain = "BY" FWS Extended-Domain CFWSExtended-Domain = Domain /( Domain FWS "(" TCP-info ")" ) /( Address-literal FWS "(" TCP-info ")" )TCP-info = Address-literal / ( Domain FWS Address-literal ); сервер получает информацию из соединения TCP, а не из команды EHLO.Opt-info = [Via] [With] [ID] [For]Via = "VIA" FWS Link CFWSWith = "WITH" FWS Protocol CFWSID = "ID" FWS String / msg-id CFWSFor = "FOR" FWS 1*( Path / Mailbox ) CFWSLink = "TCP" / Addtl-LinkAddtl-Link = Atom; Дополнительные стандартные имена каналов регистрируются в IANA.; Поле Via используется прежде всего для чужого транспорта (не Internet).; Серверам SMTP недопустимо использовать незарегистрированные имена.Protocol = "ESMTP" / "SMTP" / Attdl-ProtocolAttdl-Protocol = Atom