Украина, одесса, кпи, 2010 |
Протокол POP3
Команды клиента POP3
После успешной регистрации на сервере POP3 клиент переходит в нормальный режим работы. Для управления получением почтовых сообщений с сервера он должен выдавать соответствующие команды. Каждая команда предполагает соответствующую реакцию на нее сервера POP3.
Команда STAT
В команде STAT дополнительные параметры не задаются. Она применяется для получения текущего листинга работы сервера POP3. Текущий листинг представляет собой форматированный текст, который отображает текущее состояние почтового ящика пользователя. Строка вывода при этом имеет формат:
+ОК nn mm
Формат ответа на команду STAT является стандартным. С его помощью пользователи системы электронной почты получат информацию о состоянии своих почтовых ящиков. Значение nn указывает, какое количество сообщений находится в данный момент в почтовом ящике пользователя. Сообщения с пометкой "удалено" не считаются, однако учитываются уже прочитанные сообщения. Значение mm отражает объем сообщений, находящихся в ящике пользователя, в байтах. Команда STAT часто используется для быстрой проверки состояния почтового ящика клиентскими программами для работы с почтой. Выдав команду STAT, программа для работы с электронной почтой может сравнить количество сообщений в почтовом ящике с тем, что было получено в результате последней проверки. Если они отличаются, то программа для работы с электронной почтой может инициировать процесс получения новых сообщений. Единственная проблема, возникающая при использовании этого алгоритма, заключается в том, что программе-клиенту не известно, сколько сообщений было получено в прошлый раз и какие из них не были удалены.
Команда LIST
Команда LIST используется для получения развернутого листинга почтового ящика. Развернутый листинг представляет собой краткое содержание почтового ящика, включая номер и объем сообщения в байтах. Когда команда LIST задается без параметров, то отображается развернутый листинг всех сообщений в почтовом ящике. Если же использовать в качестве параметров команды номер сообщения, то развернутый листинг будет производиться только для него. Пример сеанса работы команды LIST представлен в листинге 6.6.
1 [alex@shadrach alex]$ telnet localhost 110 2 Trying 127.0.0.1 ... 3 Connected to localhost. 4 Escape character is '^]'. 5 +OK POP3 localhost v6.50 server ready 6 USER alex 7 +OK User name accepted, password please 8 PASS tarzan 9 +OK Mailbox open, 2 messages 10 LIST 11 +OK Mailbox scan listing follows 12 1 355 13 2 465 14 . 15 LIST 1 16 +OK 1 355 17 LIST 2 18 +OK 2 465 19 LIST 3 20 -ERR No such message 21 QUIT 22 +OK Sayonara 23 Connection closed by foreign host. 24 [alex@shadracn alex]$Листинг 6.6. Пример работы команды LIST
Давайте рассмотрим, что происходит. В строке 10 клиент выдает серверу команду LIST без параметров. Ответ сервера заключается в строках 12–14 с уведомлением в строке 11 о том, что команда опознана. Строки 12 и 13 обозначают сообщения, которые находятся в почтовом ящике. Некоторые реализации серверов POP3 включают в положительный ответ сервера результаты выполнения команды STAT в качестве обобщающего сообщения. Однако программам-клиентам не стоит полагаться на эти сведения (как показано в данном листинге). В строках 15 и 17 выдается команда LIST для каждого сообщения. Соответствующие ответы сервера показаны в строках 16 и 18. В строке 19 клиент задает команду LIST для несуществующего сообщения. В 20-й строке сервер возвращает отрицательный ответ на это действие.
Команда RETR
Команда RETR используется для получения сообщений из почтового ящика на компьютер клиента. Параметр, который можно использовать с этой командой, — это номер сообщения, полученный с помощью команды LIST. Если имеется сообщение с заданным номером, то сервер будет отвечать позитивным сообщением, завершая текст письма специальным символом (одной точкой в последней строке). Почтовое сообщение, которое отдается клиенту, должно быть форматировано в соответствии с RFC 822 так же, как оно было принято почтовым сервером (чаще всего SMTP). Сервер POP3 не принимает никакого участия в форматировании и манипулировании сообщением. Работа сервера POP3 заключается лишь в передаче сообщения клиенту в целости и сохранности. Пример работы команды RETR показан в листинге 6.7.
1 [rich@shadrach rich]$ telnet localhost 110 2 Trying 127.0.0.1... 3 Connected to localhost. 4 Escape character is '^]'. 5 +OK POP3 localhost v6.50 server ready 6 USER rich 7 +OK User name accepted, password please 8 PASS guitar 9 +OK Mailbox open, 2 messages 10 LIST 11 +OK Mailbox scan listing follows 12 1 355 13 2 465 14 . 15 RETR 1 16 +OK 355 octets 17 Return-Path: <rich> 18 Received: (from rich@localhost) 19 by shadrach.smallorg.org (8.8.7/8.8.7) id KAA00648 20 for rich; Thu, 2 Sep 1999 10:15:25 -0500 21 Date: Thu, 2 Sep 1999 10:15:25 -0500 22 From: rich@shadrach.smallorg.org 23 Message-Id: <199909021515.KAA00648@shadrach.smallorg.org> 24 To: rich@shadrach.smallorg.org 25 Subject: Message 1 26 Status: 0 27 28 This is test message 1 29 . 30 QUIT 31 +OK Sayonara 32 Connection closed by foreign host. 33 [rich@shadrach rich]$Листинг 6.7. Пример применения команды RETR
В строке 15 клиент выдает команду RETR для получения из ящика сообщения с номером 1. Строки 16–27 показывают, что сообщение полностью передается клиенту. В обязанности клиента входит организация буфера, достаточного для хранения сообщения (с этой целью команда LIST и выдает сведения об объеме сообщений).