Лабораторная работа № 8. «Взаимодействие прикладных программ с помощью протокола электронной почты POP3»
ОБЩИЕ МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ ЛАБОРАТОРНОЙ РАБОТЫ
1.1 Цель работы:изучение принципов организации взаимодействия прикладных программ с помощью протокола электронной почты POP3 и приобретение практических навыков создания клиентских почтовых приложений, использующих протокол POP3.
1.2 В результате выполнения лабораторной работы студент должен знать:
o Модель протокола POP3, его назначение;
1.3Используемые программно-технические средства:
Персональная ЭВМ стандартной конфигурации; операционная система Windows, Microsoft Office Word, MS Excel, калькулятор.
1.4В процессе выполнения лабораторной работы студент должен:
o Ознакомится с теоретическим материалом.
o Подготовить отчет по лабораторной работе.
o Отчитаться по исполненному заданию.
1.5 Указания по оформлению отчета:
Отчет должен содержать: титульный лист, цель работы; ответы на контрольные вопросы; выводы.
Указания по сдаче зачета преподавателю
Для сдачи зачета необходимо:
1) предъявить отчет;
2) ответить на контрольные вопросы.
ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Модель протокола РОР3, его назначение и стадии РОР3-сессии
Post Office Protocol (POP) – протокол доставки почты пользователю из почтового ящика почтового сервера РОР. Многие концепции, принципы и понятия протокола POP выглядят и функционируют подобно SMTP. Команды POP практически идентичны командам SMTP, отличаясь в некоторых деталях. Сервер POP находится между агентом пользователя и почтовыми ящиками.
В настоящее время существуют две версии протокола POP – РОР2 и РОР3, обладающие примерно одинаковыми возможностями, однако несовместимые друг с другом. У РОР2 и РОР3 разные номера портов протокола (109 и 110 соответственно). Протокол РОР3 не является расширением или модификацией РОР2 – это совершенно другой протокол. РОР2 определен в документе RFC 937 (Post Office Protocol-Version 2, Butler, et al, 1985), a РОР3 – в RFC 1225 (Post Office Protocol-Version 3, Rose, 1991). PОРЗ разработан с учетом специфики доставки почты на персональные компьютеры и имеет соответствующие операции для этого.
Конструкция протокола РОР3 обеспечивает возможность пользователю обратиться к своему почтовому серверу и изъять накопившуюся для него почту. Пользователь может получить доступ к РОР-серверу из любой точки доступа к Internet. При этом он должен запустить специальный почтовый агент, работающий по протоколу РОР3, и настроить его для работы со своим почтовым сервером. Сообщения доставляются клиенту по протоколу POP, а посылаются при помощи SMTP. То есть на компьютере пользователя существуют два отдельных агента-интерфейса к почтовой системе – доставки (POP) и отправки (SMTP).
В протоколе РОР3 оговорены три стадии процесса получения почты: авторизация, транзакция и обновление. После того как сервер и клиент РОР3 установили соединение, начинается стадия авторизации. На стадии авторизации клиент идентифицирует себя для сервера. Если авторизация прошла успешно, сервер открывает почтовый ящик клиента и начинается стадия транзакции. В ней клиент либо запрашивает у сервера информацию (например, список почтовых сообщений), либо просит его совершить определенное действие (например, выдать почтовое сообщение). На стадии обновления сеанс связи заканчивается.
В этом режиме POP3 сервер освобождает все занятые ресурсы и завершает работу. После этого TCP соединение закрывается. У POP3 сервера может быть INACTIVITY AUTOLOGOUT таймер. Этот таймер должен быть, по крайней мере, с интервалом 10 минут. Это значит, что если клиент и сервер не взаимодействуют друг с другом, сервер автоматически прерывает соединение и при этом не переходит в режим обновления.
Формат сообщений
Почтовое сообщение состоит из двух частей: заголовка и тела письма. Между ними расположена пустая строка. Каждое поле заголовка состоит в свою очередь из имени поля и значения, которые разделяются двоеточием. Полей заголовка может быть множество, но наиболее часто встречаются только некоторые из них. Поля To:и From:указывают на получателя и отправителя письма соответственно, поле Subject:используется для передачи темы письма. Reply-To:применяется для указания обратного адреса, а CC:– копии сообщения.
Received:– такую строку добавляет каждый почтовый сервис, через который прошло письмо. По нему легко отследить путь письма. Date:– означает дату создания письма. Используется специальный стандарт с указанием часового пояса отправителя относительно Гринвича.
Существует множество не стандартизованных полей заголовка. Они начинаются с символа 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. Если сюда еще добавить русские буквы, то используется Content-Transfer-Encoding: 8bit. Для передачи HTML-кода применяют Content-Transfer-Encoding: quoted-printable. Чтобы отличить код от текста, перед ним ставится символ «=». Например, фраза «Привет!» будет выглядеть в закодированном виде как «=CF=F0=E8=E2=E5=F2!». Для двоичных файлов (архивы, изображения и т.д.) используют Content-Transfer-Encoding: base64, когда каждые 6 байт преобразуются в 8 печатных символов.
3 Процесс получения сообщений. Команды и ответы протокола РОР3
Команды POP3 состоят из ключевых слов, за некоторыми следует один или более аргументов. Все команды заканчиваются парой CRLF. Ключевые слова и аргументы состоят из ASCII символов. Ключевое слово и аргументы разделены одиночным пробелом. Ключевое слово состоит от 3-х до 4-х символов, а аргумент может быть длиной до 40 символов.
Ответы в POP3 состоят из индикатора состояния и ключевого слова, за которым может следовать дополнительная информация. Ответ заканчивается парой CRLF. Существует только два индикатора состояния: «+OK» – положительный и «-ERR» – отрицательный. Синтаксис и описание команд и ответов протокола РОР3 приведены в пункте 5.5 «Справочные данные»
Стадия авторизации
Как только будет установлено TCP соединение с POP3 сервером, он отправляет приглашение, заканчивающееся парой CRLF, например:
S: +OK POP3 server ready
Теперь POP3 сессия находится в режиме авторизации. Клиент должен идентифицировать себя на сервере, используя команды USER и PASS. Сначала необходимо отправить команду USER, после которой в качестве аргумента следует имя пользователя. Если сервер отвечает положительно, то необходимо отправить команду PASS, аргументом которой является пароль. Если после отправки команды USER или PASS сервер отвечает негативно, то можно попытаться авторизироваться снова или выйти из сессии с помощью команды QUIT.
После успешной авторизации сервер открывает и блокирует maildrop (почтовый ящик). В ответе на команду PASS сервер информирует, сколько сообщений находится в почтовом ящике, и передает их общий размер. Синтаксис, описание и возможные ответы на команды приведены в справочном разделе.
Стадия транзакции
После успешной идентификации пользователя на сервере POP3 сессия переходит в режим транзакции, где пользователь может передавать соответствующие команды (см. справочный раздел). После каждой из таких команд следует ответ сервера. В режиме транзакции доступны действия: получение статистической информации о корреспонденции, получение списка писем, чтение выбранного письма, чтение определенного количества строк текста выбранного письма, чтение идентификаторов всех или выбранного сообщения, пометка сообщения как удаленного, сброс отметок об удалении и др.
Стадия обновления
Когда клиент передает команду QUIT в режиме транзакции, то сессия переходит в режим обновления. В этом режиме сервер удаляет все сообщения, помеченные для удаления. После этого TCP соединение закрывается с соответствующим ответом сервера.
Справочные данные
Ниже приведено описание команд и ответов протокола РОР3.
USER <SP> <name> <CRLF>
Возможные ответы:
+OK name is a valid mailbox
-ERR never heard of mailbox name
Описание. Первый шаг авторизации на сервере. Если ответом на эту ко-
манду является строка индикатора «+OK», клиент может отправлять команду PASS – ввод пароля или QUIT – завершить сессию. Если ответом является
строка «-ERR», клиент может либо повторить команду USER, либо закрыть
сессию. Аргумент: name - строка, идентифицирующая почтовый ящик системы.
PASS <SP> <passw> <CRLF>
Возможные ответы:
+OK maildrop locked and ready
-ERR invalid password
-ERR unable to lock maildrop
Описание. Второй шаг авторизации на сервере. Если ответом на эту команду является строка индикатора «+OK», авторизация прошла успешно и сессия переходит в состояние транзакции. Если ответом является строка «-ERR», то пользователь либо ввел неправильный пароль, либо неверно указал почтовый ящик. Аргумент: passw – строка-пароль.
QUIT <CRLF>
Возможные ответы:
+OK
Описание. Завершение сессии. При появлении команды QUIT в состоянии транзакции сессия переходит в состояние обновления и осуществляется удаление помеченных сообщений.
STAT <CRLF>
Возможные ответы:
+OK <n> <s>
Описание. Команда STAT используется для просмотра текущего состояния почтового ящика: n – количество сообщений, s – их общий объем. Сообщения, помеченные как удаленные, не учитываются.
LIST [<SP> <mes>] <CRLF>
Возможные ответы:
+OK scan listing follows
<n1> <s1>
<n2> <s2>…
-ERR no such message
Описание. Команда LIST может передаваться как с аргументом mes – номером сообщения, так и без аргумента. Если команда содержит аргумент и сообщение с указанным номером существует, ответом на нее будет «информационная строка», которая содержит номер сообщения n1 и размер сообщения s1 в байтах. Если аргумент не указан – ответом будет список информационных строк ni si обо всех сообщениях в данном почтовом ящике. Сообщения, помеченные как удаленные, в этом списке не приводятся.
RETR <SP> <mes> <CRLF>
Возможные ответы:
+OK message follows
<заголовок и тело сообщения>
-ERR no such message
Описание. Используется для передачи клиенту запрашиваемого сообще-
ния. Аргумент команды: mes – номер сообщения.
DELE <SP> <mes> <CRLF>
Возможные ответы:
+OK message deleted
-ERR no such message
Описание. По команде DELE сообщение с указанным в аргументе mes номером помечается как удаленное. Перенумерация остальных сообщений не производится. Физическое удаление помеченных сообщений происходит только при переходе сессии в стадию обновления.
NOOP <CRLF>
Возможные ответы:
+OK
Описание. Используется для проверки состояния сервера. Никаких действий не производится. Ответ всегда положительный.
RSET <CRLF>
Возможные ответы:
+OK
Описание. По команде RSET со всех сообщений снимаются пометки об удалении.
TOP <SP> <mes> <SP> <n> <CRLF>
Возможные ответы:
+OK
< заголовок сообщения + первые n строк из тела сообщения>
-ERR no such message
Описание. По команде TOP передается заголовок и n первых строк сообщения с номером mes. Если количество строк в сообщении меньше указанного в параметре n, пользователю передается все сообщение. Если n=0, то передается только заголовок.
UIDL [<SP> <mes>] <CRLF>
Возможные ответы:
+OK unique-id listing follows
<№ сообщения1 + ID1, № сообщения2 + ID2, …>
-ERR no such message
Описание. Если указан номер сообщения mes, то передается уникальный идентификатор для этого сообщения. Если аргумент не был передан, то передаются идентификаторы всех сообщений, кроме помеченных для удаления.
ЗАДАНИЕ НА ЛАБОРАТОРНУЮ РАБОТУ
1. Ознакомиться с теоретическим и справочным материалом.
2. Получить у преподавателя доменное имя или IP-адрес РОР3-сервера, с которого возможно получение почтовых сообщений в учебных аудиториях, имя почтового ящика и пароль.
3. Разработать приложение почтового клиента, позволяющее выполнять получение текстовых сообщений по протоколу РОР3 из почтового ящика.
Приложение должно поддерживать все приведенные в справочном разделе команды, кроме UIDL. Приложение использует для обмена с сервером транспортный протокол TCP/IP. Процесс обмена командами и ответами должен отображаться на экране.
Предполагается, что в заголовке и тексте сообщения не используются коды русских букв. То есть в приложении допускается отсутствие функций работы с другими методами кодирования, кроме Content-Transfer-Encoding: 7bit.
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Охарактеризуйте модель протокола POP3.
2. Назовите и поясните назначение стадий РОР3-сессии.
3. Опишите формат почтового сообщения.
4. Назовите особенности и методы кодирования информации в почтовых сообщениях.
5. По каким принципам формируются команды и коды ответов протокола РОР3?
6. Какие операции выполняются на стадиях авторизации и обновления?
7. Какие операции выполняются на стадии транзакции?