СтатьиРаботаем с почтой... вручнуюВ этой статье мы "разберём на части" электронную почту. Действительно, для работы с нею вовсе не обязательны почтовые программы, они просто делают весь процесс комфортней. Почтовые протоколы просты и рассчитаны скорее на человека, чем на компьютер, поэтому они легко реализуются независимо от платформы и оборудования. Статья состоит из трёх частей, в которых описываются формат сообщений электронной почты, протоколы её получения и отправки. Для проверки этих знаний на практике нам понадобится компьютер с доступом в Интернет. Часть 1. Формат письмаНа самом деле электронные письма выглядят совсем не так, как мы привыкли их видеть в почтовой программе. В них нет ни графики, ни шрифтов, только голый текст. Чтобы увидеть, что же представляет собой письмо, достаточно сохранить его на диск в формате MSG или EML , а потом открыть этот файл в любом текстовом редакторе, например, "Блокноте".
Почтовое сообщение состоит из двух частей: заголовка и тела письма. Между ними расположена пустая строка. Каждое поле заголовка состоит в свою очередь из имени поля и значения, которые разделяются двоеточием. Полей заголовка может быть множество, но нам интересны только некоторые из них. Поля
Существует множество не стандартизованных полей заголовка. Они начинаются с символа
Электронная почта не обладала бы столькими возможностями, если бы продолжала существовать в своем базовом варианте. Интересным дополнением к традиционной электронной почте является её расширение MIME (Multupurpose Internet Mail Extentions). Оно не требует каких-либо переделок в почтовых серверах, но позволяет снять с электронной почты привычные ограничения и предоставляет возможность пересылать любую информацию. Например, MIME позволяет создавать многосекционные письма. В каждой секции описывается тип информации, находящейся в ней (
Так как электронная почта изначально разрабатывалась как служба по пересылке обычного текста, это наложило ограничение на передаваемую информацию. Для передачи двоичной информации требуется специальное кодирование. Используется несколько методов кодирования : для текста с использованием только латинских букв, цифр и некоторых спецсимволов, обычно используется Вот пример обычного текстового письма: From test@test.net (127.0.0.1) Tue, 15 Jun 2004 06:05:59 GMT For gates@microsoft.com From: "Tester" Часть 2. Получение почты
Электронную почту можно получать по протоколу POP3 (Post Office Protocol — Version 3). Команды протокола POP3 состоят обычно из 4 букв. После каждой команды сервер выдаёт ответ
Для общения с почтовым сервером нам понадобится программа telnet, которая есть в составе любой версии Windows. Итак, запускаем "Пуск" — "Выполнить" — набираем telnet ezmail.ru 110
Сразу после подключения сервер выдаст строку приветствия. Он представился, теперь, согласно правилам хорошего тона, надо представится нам. Для этого используется пара команд USER <ваш логин> +OK PASS <ваш пароль> +OK 6 8098
Сразу за ответом LIST +OK 3 2032 1 425 2 1192 3 415 .
Теперь для обращения к какому-либо конкретному письму мы должны использовать его идентификатор. Для работы с письмами используются команды RETR 1 +OK 417 bytes for admin From test@test.net (lab1 [167.15.230.25]) Mon, 7 Jun 2004 11:11:44 GMT For test@mail.ru From: "Test"
Команда
Команда
Ну и последняя команда POP3-протокола, которая нам понадобится — это Вот пример типичной почтовой сессии по POP3-протоколу: +OK POP3 server ready USER admin +OK PASS password +OK 1 425 LIST +OK 1 425 1 425 . RETR 1 +OK 425 bytes for admin <тело письма> . DELE 1 +OK QUIT +OK Для получения почты используют также более сложный протокол IMAP4 (Internet Message Access Protocol — version 4 rev1), но его рассмотрение не входит в рамки данной статьи. Часть 3. Отправка почты
Отправка почты осуществляется по протоколу SMTP (Simple Mail Transfer Protocol), который тоже использует понятные текстовые команды. Подключение к SMTP-серверу осуществляется аналогичным образом, только для соединения используется 25 порт. Но ответы сервера имеют другой формат, который кодируется 3-значным числом. Каждая цифра в коде ответа несет определённый смысл. Первая цифра означает, было ли выполнение команды успешно (2), неуспешно (5) или еще не закончилось (3). Вторая цифра показывает категорию ошибки, а третья идентифицирует конкретную ошибку. Основные коды, которые нам понадобятся — это:
После установления соединения SMTP-сервер представляется нам ( 220-proxy.kirov.ru ESMTP Sendmail 8.12.6/8.12.6; Mon, 14 Jun 2004 12:00:00 +0300 (MSK) 220-Use of this system for the delivery of UCE (a.k.a. SPAM), or any other 220-message without the express permission of the system owner is prohibited. 220 Use of this system for third party relaying is prohibited. HELO test.kirov.ru 250 proxy.kirov.ru Hello test.kirov.ru [167.15.230.25], pleased to meet you
В ответ сервер должен выдать код MAIL FROM: test@mail.ru 250 Ok
Далее необходимо указать получателя сообщения. Для этого используем команду RCPT TO:
После того как введены все DATA 354 Enter mail, end with "." on a line by itself
Сервер отвечает кодом DATA 354 send the mail data, end with . To: test@mail.ru From: test123@mail.ru Subject: Письмо Первая строка письма Вторая строка письма Третья строка письма Последняя строка письма . 250 Ok QUIT 221 Bye
Завершается почтовая сессия, как и в протоколе POP3, командой Вот пример полной почтовой SMTP-сессии: 220 BBN-UNIX.ARPA Simple Mail Transfer Service Ready HELO USC-ISIF.ARPA 250 BBN-UNIX.ARPA MAIL FROM: Теперь вы знаете об особенностях работы почтовых серверов, и в курсе, что делает почтовая программа во время получения и отправки почты. Если вам интересны подробности этих протоколов, ищите в Интернете стандарты RFC0822 – формат письма; RFC1521, RFC2045 — MIME; RFC1225, RFC1725 — POP3 и RFC821, RFC2554 — SMTP а также RFC2060 — IMAP4. Автор: Михаил Соколов |
||