Что такое прокси сервер и как им пользоваться
Как настроить Internet Explorer для работы через прокси
Как раскодировать письмо
Как прочитать испорченное письмо
Что есть в письмах кроме писем
Некоторые рекомендации по настройке модемов
Как настроить VPN в Windows

Что есть в письмах кроме писем?

Много ли можно почерпнуть из обычного письма? Если отправитель вам давно и хорошо известен, то, вероятно, ничего существенно нового не узнать, но если отправитель - неизвестный аноним, можно попробовать определить его географическое положение, реальное имя, используемое программное обеспечение, имя его компьютера и т.д. Для этого необходимо всего-то лишь проанализировать заголовок его письма.

Заголовок всегда идет в начале письма. Признаком конца заголовка является пустая строка. Всё идущее после этой строки является текстом письма и, как правило, не обрабатывается почтовыми службами. Заголовок состоит из нескольких полей, а поле, в свое очередь, - из двух частей: названия и значения, разделяемые между собой двоеточием, например field:value.

Займемся теперь детальным изучением наиболее часто встречающихся полей:

Название поля Назначение
Return-Path: Служит для указания адреса возврата письма. Как правило, совпадает с адресом отправителя. Адрес заключается в угловые скобки.
Received: Содержит путь прохождения письма по почтовым серверам. Полей обычно несколько и каждое такое поле обозначает один сервер в маршруте. Серверы указываются в обратном хронологическом порядке, то есть каждый новый сервер вставляет свою подпись сверху. Формат таков: Received:
from <домен> - отправитель,
by <домен> - получатель,
via <путь> - физический путь,
with <протокол> - почтовый протокол,
id <идентификатор> - идентификатор сообщения у получателя,
for <адрес> - финальный адрес получателя,
<дата/время> - время получения сообщения. Обязательно только указание времени, остальная информация может быть пропущена, хотя обычно присутствует большинство из описанных данных.
Message-ID: Уникальный идентификатор сообщения. Как правило, идентификатор составляется из текущей даты, времени, адреса компьютера и некоей случайной величины. Записывается идентификатор в угловых скобках.
From: Автор сообщения. Указывается адрес электронной почты автора в угловых скобках, но нередко указывается еще и реальное имя.
Sender: Лицо или служба, отправившая сообщение, в том случае, если не совпадает со значением поля "From" Довольно редко встречающееся поле, попадается иногда в различных спэм-письмах.
To: Основной получатель. Указывается адрес электронной почты в угловых скобках. Можно указать еще и реальное имя, которое впрочем, будет с успехом проигнорировано почтовыми службами. Можно указать несколько получателей через запятую.
Cc: Carbon Copy. Дополнительные получатели, синтаксис такой же, как для поля "To".
Bcc: Blind Carbon Copy. Дополнительные получатели, адреса которых не должны быть видны другим получателям. Очень полезное поле! Используется когда, например, надо известить многих лиц об одном и том же, но не нужно, чтобы содержание вашей адресной книги попало ко всем корреспондентам. Синтаксис аналогичен полям "To" и "Cc".
Date: Дата написания письма, хотя некоторые системы выставляют дату отправки письма. В стандартной ситуации это все-таки дата написания письма, а дата отправки определяется из первого поля "Received".
Subject: Тема письма.
MIME-Version: Наличие этого поля говорит о том, что текст письма форматирован в соответствии со стандартом MIME. Значение поля говорит об используемой версии MIME. Подробное описание стандарта MIME см. в RFC 1521. Например: "MIME-Version: 1.0".
In-Reply-To: Ссылка на письмо, ответом на которое является настоящее письмо. Каждое письмо имеет свой уникальный идентификатор, который проставляется в поле "Message-ID".
References: Ссылки, на другие письма, относящиеся к данному. Является обобщением поля "In-Reply-To".
X-Mailer: Информация о почтовой программе, использованной для написания письма.
Priority: Приоритет письма. Бывает "обычным", "срочным" и "не срочным". Как правило, используются фразы: "Normal", "Urgent", "Non-urgent". Может оказывать влияние на скорость обработки и передачи письма различными промежуточными почтовыми системами.
X-Priority: Тоже приоритет письма, но, в отличие от "Priority", обозначается цифрами.
Importance: Пометка от отправителя получателю о важности сообщения. Может принимать значения "High", "Normal" или "Low". В отличие от поля "Priority", никак не влияет на скорость пересылки.
Content-Type: Формат содержимого письма. Определяется тип информации в письме и способ ее представления. В частности задается кодировка письма, если используется какой-либо национальный набор символов.
Content-Transfer-Encoding: Метод кодирования, используемый в письме, согласно стандарту MIME.

Приведенная краткая таблица не претендует на абсолютную полноту. Существует масса устаревших или, напротив, новых (экспериментальных) полей заголовка e-mail. Например, Microsoft использует поля "X-MimeOLE" и "X-MSMail-Priority", которые являются нестандартными. Строго говоря, все поля, начинающиеся с "X-" (так называемые, private-поля), не являются стандартными, а используются по внутрифирменным соглашениям. Существуют редко используемые стандартные поля, например: "Keywords", "Comments", "Content-Description" - служащие для описания содержимого письма. Но в подавляющем большинстве случаев вышеприведенной таблицы вполне достаточно для прочтения и понимания содержания заголовка. Впрочем, для полноты картины эту таблицу желательно дополнить более подробным описанием стандарта MIME (Multipurpose Internet Mail Extensions), поскольку многие поля так или иначе относятся именно к MIME, информацию по которому можно найти в RFC 1521 и RFC 1522.

Итак, MIME предназначен для задания способов передачи посредством электронной почты различной нетекстовой информации, а также больших объемов информации, которые необходимо посылать в нескольких письмах, разбив на кусочки. Следует заметить, что под нетекстовой информацией надо понимать не только бинарные файлы, но и тексты в нестандартной кодировке, то есть в отличной от ASCII, описанной в ANSI X3.4-1986.

Одно из основных полей, касающихся MIME, - это "Content-Type". Возможные его значения приведены в таблице.

Название поля Назначение
text Текстовая информация в виде набора символов или описания текста на стандартном языке.
multipart Служит для объединения нескольких частей (возможно, разных типов) сообщения в одно письмо.
application Служит для пересылки бинарных файлов приложений или данных посредством электронной почты.
message Указывает на инкапсуляцию другого письма.
image Служит для пересылки изображений.
audio Служит для пересылки звуковой информации.
video Служит для пересылки видеоинформации.

В поле "Content-Type" нужно указать подтип информации. Например, для поля "text" используются в основном подтипы "plain" - означающий, что текст обычный и неформатированный, и "html" - указывающий на то, что сообщение в формате HTML. Если отправляется сообщение в формате HTML, то правильная почтовая программа создаст две части письма: в "text/plain" и "text/html", чтобы в случае непонимания подтипа "html" на получающей стороне не возникло неудобств. С другой стороны, правильная почтовая программа получателя должна показать письмо в максимально информативном виде и поэтому, пропустив "text/plain"-часть сообщения, отобразит "text/html". В общем случае, текст может быть форматирован любым способом, понимаемым обеими сторонами. Это декларировано в RFC 1341. В поле "text" также указывается кодовая таблица. Например: "Content-type: text/plain; charset=us-ascii".

Для поля "multipart" можно указывать подтипы: "alternative" - на случай, если несколько частей представляют одно и то же, а надо выбрать одну из них для отображения; "parallel" - если надо отобразить части одновременно; "digest" - если каждая часть имеет тип "message"; и некоторые другие подтипы. Для поля "message" основной подтип - "rfc822". Еще пара используемых подтипов: "partial" - для посылки части сообщения и "External-body" - для передачи, например, объемной информации путем ссылки на внешний источник данных.

Подтип поля "image" задает графический формат, в котором пересылается изображение. Основные форматы - jpeg и gif. Поле "audio" имеет основной подтип "basic". Поле "video" - основной подтип "mpeg".

Поле "application" имеет основной подтип "octet-stream" в случае обычных бинарных данных. Если посылается файл известного типа, то указывается его тип. Так, для MS Word документов Outlook пишет "application/msword", а для MS Excel "application/vnd.ms-excel".

В соответствии с RFC 822, все письма, по умолчанию, передаются простым текстом в кодировке US-ASCII, что соответствует "Content-type: text/plain; charset=us-ascii".

Следующее важнейшее поле, касающееся MIME, - это "Content-Transfer-Encoding". Служит оно для указания способа кодирования в случаях, когда посылаемое письмо содержит что-либо не умещающееся в рамках US-ASCII. Стандартизованы следующие способы:

Кодировка Примечание
7bit Считается, что длина одной строки сообщения не более 1000 символов, а сами строки состоят только из US-ASCII-символов.
8bit Строки также ограничены по длине, но могут использоваться символы из старшей половины кодовой таблицы.
binary Нет ограничений ни на длину, ни на содержание.
base64 Письмо кодировано в соответствии со стандартом "base64".
quoted-printable Письмо кодировано в соответствии со стандартом "quoted-printable".

Подробно касаться методов "quoted-printable" и "base64", равно как "uuencoding" и некоторых других, в этой статье касаться не станем, поскольку тема это довольно объемистая. Разработчики почтовых систем могут использовать свои (оригинальные) способы кодирования, с тем лишь условием, чтобы принимающая сторона смогла корректно декодировать информацию.

Вторая задача MIME - это стандартизация разбиения больших писем на несколько кусочков. Для этого в поле "Content-Type" после значения "multipart/" указывается строка - уникальный ограничитель фрагментов "boundary=". А затем перед каждым фрагментом пишется эта строка, предваренная двумя минусами, а в конце фрагментации еще одна, завершающаяся такими же двумя минусами.

Не вдаваясь в дальнейшее описания стандартов, коснемся нескольких практических вещей. Как добраться до заголовка письма?


  • В программах MS Outlook Express и MS Internet Mail, необходимо нажать правую кнопку мыши, когда курсор указывает на сообщение, и выбрать пункт "Properties" (либо в меню "File" также выбрать "Properties"). В появившемся диалоге надо отметить вторую закладку "Details", а потом нажать кнопку "Message Source". Появится окно, содержащее то, что нас интересует.
  • В программе Netscape Mail в меню "Options/Show Headers" нужно отметить "All", и заголовки писем предстанут во всей своей красе.
  • В программе Netscape Messenger в меню "View/Headers" надо также выбрать "All".
  • В программе The Bat надо в меню "Вид" отметить "Служебная информация".

В других почтовых программах читатель может попытаться разыскать заголовок письма самостоятельно. Скорее всего, ему это удастся.

Маленькое резюме. Что же действительно интересного можно увидеть в заголовке письма?


  • Полный маршрут прохождения письма, включая время отправления, в полях "Received". Например, таким образом Вы сможете выяснить, по вине какого сервера ваше письмо задержалось на целых полчаса.
  • Тип почтовой программы и операционной системы отправителя в поле "X-Mailer".
  • Возможно, имя компьютера отправителя по суффиксу поля "Message-Id".
  • Возможно, IP-адрес компьютера отправителя по полю "Message-Id" или по первому полю "Received".
  • Список всех получателей этого письма по полю "Cc". Нередко люди, посылая массовое сообщение, например, об аварии сервера, рассылают копию письма по всем, указанным в их адресной книге. Таким образом, любой получатель сможет ознакомиться с ее содержимым. Более грамотный подход заключается в использование поля "Bcc". Тогда одно письмо, как и в первом случае, уйдет ко многим адресатам, но весь список рассылки они не получат.
  • Вероятное географическое местоположение отправителя по часовому поясу, прописанному в поле "Date", и по анализу адресов в поле "Received".

Но самое главное - изучая заголовки, приходящих писем, Вы разберетесь в механизме работы одной из старейших интернет-служб. Чего я вам и желаю!