Протокол POP3 -- Post Office Protocol
Post Office Protocol (POP) - протокол доставки почты
пользователю из почтового ящика почтового
сервера РОР. Многие концепции, принципы и
понятия протокола POP выглядят и функционируют
подобно SMTP. Команды POP практически идентичны
командам SMTP, отличаясь в некоторых деталях. На
рис.7 изображена модель клиент-сервер по
протоколу POP. Сервер POP находится между агентом
пользователя и почтовыми ящиками.
В настоящее время существуют две версии
протокола POP - РОР2 и РОРЗ, обладающими примерно
одинаковыми возможностями, однако
несовместимыми друг с другом. Дело в том, что у
РОР2 и РОРЗ разные номера портов протокола. Между
ними отсутствует связь, аналогичная связи между
SMTP и ESMTP. Протокол РОРЗ не является расширением
или модификацией РОР2 - это совершенно другой
протокол. РОР2 определен в документе RFC 937 (Post Office
Protocol-Version 2, Butler, et al, 1985), a РОРЗ - в RFC 1225 (Post Office
Protocol-Version 3, Rose, 1991). Далее кратко рассмотрим POP
вообще и более подробно - РОРЗ. PОРЗ разработан с
учетом специфики доставки почты на персональные
компьютеры и имеет соответствующие операции для
этого.
Назначение протокола РОРЗ
Ранее почтовые сообщения большинства сетей
доставлялись непосредственно от одного
компьютера к другому. И если пользователь часто
менял рабочие компьютеры или один компьютер
принадлежал нескольким пользователям,
существовали определенные проблемы. В наши дни
общепринята доставка сообщения не на компьютеры
пользователя, а в специальные почтовые ящики почтового
сервера организации, который круглосуточно
работает (включен).
Описание протокола РОРЗ
Конструкция протокола РОРЗ обеспечивает
возможность пользователю обратиться к своему
почтовому серверу и изъять накопившуюся для него
почту. Пользователь может получить доступ к
РОР-серверу из любой точки доступа к Интернет.
При этом он должен запустить специальный
почтовый агент (UA), работающий по протоколу РОРЗ,
и настроить его для работы со своим почтовым
сервером. Итак, во главе модели POP находится
отдельный персональный компьютер, работающий
исключительно в качестве клиента почтовой
системы (сервера). Подчеркнем также, что
сообщения доставляются клиенту по протоколу POP, а
посылаются по-прежнему при помощи SMTP. То есть на
компьютере пользователя существуют два
отдельных агента-интерфейса к почтовой системе -
доставки (POP) и отправки (SMTP). Разработчики
протокола РОРЗ называет такую ситуацию "раздельные
агенты" (split UA). Концепция раздельных агентов
кратко обсуждается в спецификации РОРЗ.
В протоколе РОРЗ оговорены три стадии процесса
получения почты: авторизация, транзакция и
обновление. После того как сервер и клиент РОРЗ
установили соединение, начинается стадия
авторизации. На стадии авторизации клиент
идентифицирует себя для сервера. Если
авторизация прошла успешно, сервер открывает
почтовый ящик клиента и начинается стадия
транзакции. В ней клиент либо запрашивает у
сервера информацию (например, список почтовых
сообщений), либо просит его совершить
определенное действие (например, выдать почтовое
сообщение). Наконец, на стадии обновления сеанс
связи заканчивается. В табл.7 перечислены команды
протокола РОРЗ, обязательные для работающей в
Интернет реализации минимальной конфигурации.
Таблица 5. Команды протокола POP версии 3 (для
минимальной конфигурации)
Команда |
Описание |
USER |
Идентифицирует пользователя с
указанным именем |
PASS |
Указывает пароль для пары
клиент-сервер |
QUIT |
Закрывает TCP-соединение |
STAT |
Сервер возвращает количество
сообщений в почтовом ящике плюс размер почтового
ящика |
LIST |
Сервер возвращает
идентификаторы сообщений вместе с размерами
сообщений (параметром команды может быть
идентификатор сообщения) |
RETR |
Извлекает сообщение из почтового
ящика (требуется указывать
аргумент-идентификатор сообщения) |
DELE |
Отмечает сообщение для удаления
(требуется указывать аргумент - идентификатор
сообщения) |
NOOP |
Сервер возвращает положительный
ответ, но не совершает никаких действий |
LAST |
Сервер возвращает наибольший
номер сообщения из тех, к которым ранее уже
обращались |
RSET |
Отменяет удаление сообщения,
отмеченного ранее командой DELE |
В протоколе РОРЗ определено несколько команд,
но на них дается только два ответа: +ОК
(позитивный, аналогичен сообщению-подтверждению
АСK) и -ERR (негативный, аналогичен сообщению "не
подтверждено" NAK). Оба ответа подтверждают, что
обращение к серверу произошло и что он вообще
отвечает на команды. Как правило, за каждым
ответом следует его содержательное словесное
описание. В RFC 1225 есть образцы нескольких
типичных сеансов РОРЗ. Сейчас мы рассмотрим
несколько из них, что даст возможность уловить
последовательность команд в обмене между
сервером и клиентом.
Авторизация пользователя
После того как программа установила
TCP-соединение с портом протокола РОРЗ
(официальный номер 110), необходимо послать
команду USER с именем пользователя в качестве
параметра. Если ответ сервера будет +ОК, нужно
послать команду PASS с паролем этого
пользователя:
CLIENT: USER kcope ERVER: +ОК CLIENT: PASS secret SERVER: +ОК kcope's maildrop has
2 messages (320 octets) (В почтовом ящике kcope есть 2
сообщения (320 байтов) ...)
Транзакции РОРЗ
После того как стадия авторизации окончена,
обмен переходит на стадию транзакции. В
следующих примерах демонстрируется возможный
обмен сообщениями на этой стадии.
Команда STAT возвращает количество
сообщений и количество байтов в сообщениях:
CLIENT: STAT
SERVER: +ОК 2 320
Команда LIST (без параметра) возвращает
список сообщений в почтовом ящике и их размеры:
CLIENT: LIST
SERVER: +ОК 2 messages (320 octets)
SERVER: 1 120
SERVER: 2 200
SERVER: . ...
Команда LIST с параметром возвращает
информацию о заданном сообщении:
CLIENT: LIST 2
SERVER: +ОК 2 200 ...
CLIENT: LIST 3
SERVER: -ERR no such message, only 2 messages in maildrop
Команда TOP возвращает заголовок,
пустую строку и первые десять строк тела
сообщения:
CLIENT: TOP 10 SERVER: +ОК SERVER: <the POP3 server sends the headers of the
message,a blank line, and the first 10 lines of the message body> (сервер POP
высылает заголовки сообщений, пустую строку и
первые десять строк тела сообщения) SERVER: . ... CLIENT:
TOP 100 SERVER: -ERR no such message
Команда NOOP не возвращает никакой
полезной информации, за исключением позитивного
ответа сервера. Однако позитивный ответ
означает, что сервер находится в соединении с
клиентом и ждет запросов:
CLIENT: NOOP
SERVER: +ОК
Следующие примеры показывают, как сервер POP3
выполняет действия. Например, команда RETR
извлекает сообщение с указанным номером и
помещает его в буфер местного UA:
CLIENT: RETR 1 SERVER: +OK 120 octets SERVER: <the POPS server sends the entire
message here> (РОРЗ-сервер высылает сообщение
целиком) SERVER: . . . . . .
Команда DELE отмечает сообщение, которое
нужно удалить:
CLIENT: DELE 1
SERVER: +OK message 1 deleted ... (сообщение 1 удалено) CLIENT: DELE 2
SERVER: -ERR message 2 already deleted сообщение 2 уже удалено)
Команда RSET снимает метки удаления со
всех отмеченных ранее сообщений:
CLIENT: RSET
SERVER: +OK maildrop has 2 messages (320 octets)
(в почтовом ящике 2 сообщения (320 байтов) )
Как и следовало ожидать, команда QUIT
закрывает соединение с сервером:
CLIENT: QUIT SERVER: +OK dewey POP3 server signing off CLIENT: QUIT SERVER: +OK dewey
POP3 server signing off (maildrop empty) CLIENT: QUIT SERVER: +OK dewey POP3 server
signing off (2 messages left)
Обратите внимание на то, что отмеченные для
удаления сообщения на самом деле не удаляются до
тех пор, пока не выдана команда QUIT и не
началась стадия обновления. В любой момент в
течение сеанса клиент имеет возможность выдать
команду RSET, и все отмеченные для
удаления сообщения будут восстановлены. |