Ивлим.Ру - информация и развлечения
IgroZone.com Ros-Новости Е-коммерция FoxЖурнал BestКаталог Веб-студия
  FOXЖУРНАЛ
Свежий журнал
Форум журнала
Все рубрики:
Антонова Наталия
Редактор сообщает
Архив анонсов
История очевидцев
Ищешь фильм?
Леонид Багмут: история и литература
Русский вклад
Мы и наши сказки
Леонид Багмут: этика Старого Времени
Виктор Сорокин
Знания массового поражения
Балтин Александр
ТюнингКлуб
Жизнь и её сохранение
Леонид Татарин
Юрий Тубольцев
Домашний очаг
Наука и Техника
Леонид Багмут: стихотворения
Библиотека
Новости
Инфразвук и излучения
Ландшафтный дизайн
Линки
Интернет
Костадинова Елена
Лазарев Никита
Славянский ведизм
Факты
Россия без наркотиков
Музыкальные хроники
ПростоБуряк
Анатолий Максимов
Вера
ПРАВовой ликбез
Архив
О журнале


  ВЕБ-СТУДИЯ
Разработка сайтов
Продвижение сайтов
Интернет-консалтинг

  IVLIM.RU
О проекте
Наши опросы
Обратная связь
Полезные ссылки
Сделать стартовой
В избранное!

  РЕКОМЕНДУЕМ
Doronchenko.Ru
Bugz Team


РАССЫЛКА АНОНСОВ ЖУРНАЛА ХИТРОГО ЛИСА













FoxЖурнал: Интернет:

РАБОТАЕМ С ПОЧТОЙ ВРУЧНУЮ

Автор: Соколов Михаил (Blackman)

В детстве при получении в подарок новой игрушки, наверное, у многих возникало жгучее желание разобрать её, посмотреть, что там внутри, узнать, как она работает. И чем дороже, сложнее была игрушка, тем сильнее было такое желание. У некоторых с возрастом эта черта характера не исчезла.

В этой статье мы "разберём на части" электронную почту. Действительно, для работы с нею вовсе не обязательны почтовые программы, они просто делают весь процесс комфортней. Почтовые протоколы просты и рассчитаны скорее на человека, чем на компьютер, поэтому они легко реализуются независимо от платформы и оборудования.

Статья состоит из трёх частей, в которых описываются формат сообщений электронной почты, протоколы её получения и отправки. Для проверки этих знаний на практике нам понадобится компьютер с доступом в Интернет.





Часть 1 - Формат письма

На самом деле электронные письма выглядят совсем не так, как мы привыкли их видеть в почтовой программе. В них нет ни графики, ни шрифтов, только голый текст. Чтобы увидеть, что же представляет собой письмо, достаточно сохранить его на диск в формате 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!". Для двоичных файлов (архивы, изображения и т.д.) используют <>bContent-Transfer-Encoding: base64, когда каждые 6 байт преобразуются в 8 печатных символов. Поэтому, если к письму прикрепить файл размером в 300 Кб, оно "потянет" на все 400 Кб.

Вот пример обычного текстового письма:



From test@test.net (127.0.0.1) Tue, 15 Jun 2004 06:05:59 GMT For gates@microsoft.com
From: "Tester"
To: "Bill Gates"
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.


Часть 2 - Получение почты

Электронную почту можно получать по протоколу POP3 (Post Office Protocol - Version 3). Команды протокола POP3 состоят обычно из 4 букв. После каждой команды сервер выдаёт ответ +OK в случае нормального завершения и <>b-ERR в случае ошибки. За работу POP3 отвечает 110 порт.

Для общения с почтовым сервером нам понадобится программа telnet, которая есть в составе любой версии Windows. Итак, запускаем "Пуск" - "Выполнить" - набираем telnet <имя_сервера> <порт>. Например:

telnet ezmail.ru 110


Сразу после подключения сервер выдаст строку приветствия. Он представился, теперь, согласно правилам хорошего тона, надо представится нам. Для этого используется пара команд USER и PASS. Пример:

USER <ваш логин>
+OK
PASS <ваш пароль>
+OK 6 8098


Сразу за ответом +OK следуют количество писем и их общий размер. Для получения списка писем нужно ввести команду LIST. В результате сервер выдаст список писем с указанием размера каждого письма. На сервере письма различаются при помощи специального идентификатора. Как и во всех многострочных ответах POP3, в конце списка находится строка с одной только точкой.

LIST
+OK 3 2032
1 425
2 1192
3 415
.

Теперь для обращения к какому-либо конкретному письму мы должны использовать его идентификатор. Для работы с письмами используются команды RETR, DELE и TOP. Команда RETR используется для получения письма с сервера. В качестве единственного параметра ей передается идентификатор письма, который выдала команда LIST.

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"
To:
Subject: =?KOI8-R?Q?=D0=D2=CF=D7=C5=D2=CB=C1?=
Date: Mon, 7 Jun 2004 15:11:44 +0400
X-Mailer: Microsoft Internet Mail 4.70.1155
MIME-Version: 1.0
Content-Type: text/plain; charset=KOI8-R
Content-Transfer-Encoding: 8bit

Проверка
.

Команда DELE используется, чтобы пометить письмо для удаления (физически удаление происходит при завершении почтовой сессии). Единственный параметр этой команды - идентификатор письма.

Команда TOP применяется для тех случаев, когда целиком получать письмо не надо, достаточно лишь первых строк. Это может использоваться, например, для фильтрации спама по заголовкам писем, без скачивания письма целиком. Первый аргумент команды TOP - это идентификатор письма, а второй - количество строк тела письма, которые должны быть получены вместе с заголовком.

Ну и последняя команда POP3-протокола, которая нам понадобится - это QUIT. Она сигнализирует серверу о завершении почтовой сессии. Приняв её, сервер завершает соединение.

Вот пример типичной почтовой сессии по 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). Вторая цифра показывает категорию ошибки, а третья идентифицирует конкретную ошибку. Основные коды, которые нам понадобятся - это: 220 (SMTP-сервер готов к работе); 250 (успешное завершение действия); 354 (ожидание ввода текста письма) и 221 (закрытие сессии).

После установления соединения SMTP-сервер представляется нам (220 код). Логично, что мы должны также представиться ему. Для этого используется команда HELO. Единственным её аргументом является имя Вашего компьютера. То есть Вы говорите: "Привет, я - test.kirov.ru".

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

В ответ сервер должен выдать код 250, сообщая о том, что команда принята и обработана. Следующим шагом мы должны указать обратный адрес, на который письмо вернётся в случае неудачи. Делается это при помощи команды MAIL FROM:

MAIL FROM: test@mail.ru
250 Ok

Далее необходимо указать получателя сообщения. Для этого используем команду RCPT TO:. Если получателей несколько, то команда RCPT вводится несколько раз.

RCPT TO:
250 Ok
RCPT TO:
550 Unknown user
RCPT TO:
250 Ok

После того как введены все RCPT, можно начинать передачу данных при помощи команды DATA.

DATA
354 Enter mail, end with "." on a line by itself

Сервер отвечает кодом 354, сигнализируя, что передача данных разрешена, и подсказывает, что конец передачи письма кодируется строкой, состоящей из одного только символа - точки. При успешном приеме тела письма сервер выдаст код 250.

DATA
354 send the mail data, end with .
To: test@mail.ru
From: test123@mail.ru
Subject: Письмо

Первая строка письма
Вторая строка письма
Третья строка письма
Последняя строка письма
.
250 Ok
QUIT
221 Bye

Завершается почтовая сессия, как и в протоколе POP3, командой QUIT. Сервер в свою очередь, отвечает кодом 221. Этот код подтверждает клиенту, что соединение будет закрыто, после чего соединение действительно закрывается.

Вот пример полной почтовой SMTP-сессии:

220 BBN-UNIX.ARPA Simple Mail Transfer Service Ready
HELO USC-ISIF.ARPA
250 BBN-UNIX.ARPA
MAIL FROM:
250 OK
RCPT TO:
250 OK
RCPT TO:
550 No such user here
RCPT TO:
250 OK
DATA
354 Start mail input; end with .
To: Jones@BBN-UNIX.ARPA
From: Smith@USC-ISIF.ARPA
Subject: Test

Hi!
This is a test message.
.
250 OK
QUIT
221 BBN-UNIX.ARPA Service closing transmission channel


Теперь Вы знаете об особенностях работы почтовых серверов, и в курсе, что делает почтовая программа во время получения и отправки почты. Если Вам интересны подробности этих протоколов, ищите в Интернете стандарты RFC0822 - формат письма; RFC1521, RFC2045 - MIME; RFC1225, RFC1725 - POP3 и RFC821, RFC2554 - SMTP а также RFC2060 - IMAP4.


Соколов Михаил (Blackman)
http://www.blackman2003.da.ru/


Обсудить на форуме >>

Источник:   www.izcity.com/
Оставить отзыв (Комментариев: 0)
Дата публикации: 15.09.2004 18:23:55


[Другие статьи раздела "Интернет"]    [Свежий номер]    [Архив]    [Форум]

  ПОИСК В ЖУРНАЛЕ



  ХИТРЫЙ ЛИС
Ведущий проекта - Хитрый Лис
Пожалуйста, пишите по всем вопросам редактору журнала fox@ivlim.ru

  НАША РАССЫЛКА

Анонсы FoxЖурнала



  НАШ ОПРОС
Кто из авторов FOX-журнала Вам больше нравятся? (20.11.2004)














































































































Голосов: 4583
Архив вопросов

IgroZone.com Ros-Новости Е-коммерция FoxЖурнал BestКаталог Веб-студия
РЕКЛАМА


 
Рейтинг@Mail.ruliveinternet.ru
Rambler's Top100 bigmir)net TOP 100
© 2003-2004 FoxЖурнал: Глянцевый журнал Хитрого Лиса на IvLIM.Ru.
Перепечатка материалов разрешена только с непосредственной ссылкой на FoxЖурнал
Присылайте Ваши материалы главному редактору - fox@ivlim.ru
По общим и административным вопросам обращайтесь ivlim@ivlim.ru
Вопросы создания и продвижения сайтов - design@ivlim.ru
Реклама на сайте - advert@ivlim.ru
: