Страница 1 из 4 В детстве при получении в подарок новой игрушки, наверное, у многих возникало
жгучее желание разобрать её, посмотреть, что там внутри, узнать, как она
работает. И чем дороже, сложнее была игрушка, тем сильнее было такое желание. У
некоторых с возрастом эта черта характера не исчезла.
В этой статье мы “разберём на части” электронную почту. Действительно, для
работы с нею вовсе не обязательны почтовые программы, они просто делают весь
процесс комфортней. Почтовые протоколы просты и рассчитаны скорее на человека,
чем на компьютер, поэтому они легко реализуются независимо от платформы и
оборудования.
Статья состоит из трёх частей, в которых описываются формат сообщений
электронной почты, протоколы её получения и отправки. Для проверки этих знаний
на практике нам понадобится компьютер с доступом в Интернет.
Формат письма
На самом деле электронные письма выглядят совсем не так, как мы привыкли их
видеть в почтовой программе. В них нет ни графики, ни шрифтов, только голый
текст. Чтобы увидеть, что же представляет собой письмо, достаточно сохранить его
на диск в формате MSG или EML , а потом открыть этот файл в любом текстовом
редакторе, например, “блокноте”.
Почтовое сообщение состоит из двух частей: заголовка и тела письма. Между
ними расположена пустая строка. Каждое поле заголовка состоит в свою очередь из
имени поля и значения, которые разделяются двоеточием. Полей заголовка может
быть множество, но нам интересны только некоторые из них. Поля To: и
From: указывают на получателя и отправителя письма соответственно, поле
Subject: используется для передачи темы письма. Reply-To:
применяется для указания обратного адреса, а CC: - копии сообщения.
Received: - такую строку добавляет каждый почтовый сервис, через который
прошло письмо. По нему легко отследить путь письма. И, наконец, Date: -
означает дату создания письма. Используется специальный стандарт с указанием
часового пояса отправителя относительно Гринвича. (Например, Tue, 15 Jun 2004
10:05:59 +0400).
Существует множество не стандартизованных полей заголовка. Они начинаются с
символа X. Это могут быть такие поля, как X-Mailer: -
почтовая программа отправителя; X-MSMail-Priority:,
X-Priority: - приоритет (важность) письма и т.д. Вы также можете
придумать и использовать любое своё поле, начинающееся с X-.
Электронная почта не обладала бы столькими возможностями, если бы продолжала
существовать в своем базовом варианте. Интересным дополнением к традиционной
электронной почте является её расширение MIME (Multupurpose Internet Mail
Extentions). Оно не требует каких-либо переделок в почтовых серверах, но
позволяет снять с электронной почты привычные ограничения и предоставляет
возможность пересылать любую информацию. Например, MIME позволяет создавать
многосекционные письма. В каждой секции описывается тип информации, находящейся
в ней (Content-Type:) и вид кодирования
(Content-Transfer-Encoding:). Секции могут содержать как простой текст
(Content-Type: text/plain) и текст в формате HTML (Content-Type:
text/html), так и произвольные файлы в прикреплениях письма (attach).
Так как электронная почта изначально разрабатывалась как служба по пересылке
обычного текста, это наложило ограничение на передаваемую информацию. Для
передачи двоичной информации требуется специальное кодирование. Используется
несколько методов кодирования : для текста с использованием только латинских
букв, цифр и некоторых спецсимволов, обычно используется
Content-Transfer-Encoding: 7bit. Если сюда ещё добавить русские буквы, то
7 бит уже мало и приходится использовать Content-Transfer-Encoding: 8bit.
Для передачи HTML-кода применяют Content-Transfer-Encoding:
quoted-printable, когда некоторые проблемные символы заменяются их кодами.
Чтобы отличить код от текста, перед ним ставится символ =. Например, фраза
“Привет!” будет выглядеть в закодированном виде как “=CF=F0=E8=E2=E5=F2!”. Для
двоичных файлов (архивы, изображения и т.д.) используют
Content-Transfer-Encoding: base64, когда каждые 6 байт преобразуются в 8
печатных символов. Поэтому, если к письму прикрепить файл размером в 300 Кб, оно
“потянет” на все 400 Кб.
Вот пример обычного текстового письма:
From Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
(127.0.0.1) Tue, 15 Jun 2004 06:05:59 GMT For Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
From: "Tester" <Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
>
To: “Bill Gates” <Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
>
Subject: Test
Date: Tue, 15 Jun 2004 10:05:59 +0400
X-MSMail-Priority: Normal
X-Priority: 3
X-Mailer: Microsoft Internet Mail 4.70.1155
MIME-Version: 1.0
Content-Type: text/plain; charset=KOI8-R
Content-Transfer-Encoding: 7bit
Just a test.
|