3.6.9. Протокол Post Office Protocol (POP)

Команды POP практически идентичны командам SMTP, отличаясь в некоторых деталях. На рис. 3.24 изображена модель клиент-сервер по протоколу POP. Сервер POP находится между агентом пользователя и почтовыми ящиками.

 

Рис. 3.24. Конфигурация модели клиент-сервер по протоколу POP

В настоящее время существуют две версии протокола POP — РОР2 и РОР3. Обе версии обладают примерно одинаковыми возможностями, однако несовместимы друг с другом. Дело в том, что у РОР2 и РОР3 разные номера портов протокола. Между ними отсутствует связь, аналогичная связи между SMTP и ESMTP. Протокол РОР3 не является расширением или модификацией РОР2 — это совершенно другой протокол. РОР2 определен в документе RFC 937 (Post Office Protocol-Version 2, Butler, et al, 1985), a POP3 — в RFC 1225 (Post Office Protocol-Version 3, Rose, 1991). Мы кратко рассмотрим POP вообще и более подробно — РОР3. Мы не рассматриваем здесь протокол РОР2, однако вам не составит труда прочитать соответствующий RFC, базируясь на уже полученных в этой главе знаниях протокола SMTP, поскольку РОР2 тесно с ним связан. Набор и структура команд РОР2 параллельны набору и структуре команд SMTP. РОР3, однако, разработан с учетом специфики доставки почты на персональные компьютеры и соответствующих операций.

В старые добрые времена почтовые сообщения большинства сетей доставлялись непосредственно от одного компьютера к другому. К сожалению, если пользователь часто менял рабочие компьютеры или один компьютер принадлежал нескольким пользователям, существовали определенные проблемы. В наши дни большинство систем электронной почты доставляют сообщения не на отдельные компьютеры, а в специальные почтовые ящики, находящиеся на каком-либо одном почтовом сервере. Теперь, для того чтобы прочитать свою почту, пользователю необходимо войти в сеть и получить доступ к почтовому серверу. Данный процесс мог испугать неискушенного пользователя, удаленный вход часто запрещается администраторами по соображениям безопасности, и, вдобавок ко всему, чтобы прочесть или отослать почту, нужно было пользоваться почтовым агентом самого сервера. Специальный протокол доставки почты POP и стал альтернативой всем вышеописанным проблемам.

Конструкция протокола РОР3 обеспечивает возможность пользователю войти в систему и изъять накопившуюся почту, вместо того чтобы предварительно входить в сеть. Пользователь получает доступ к РОР-серверу из любой системы в Интернет. При этом он должен запустить специальный почтовый агент (UA), понимающий протокол РОР3. Во главе модели POP находится отдельный персональный компьютер, работающий исключительно в качестве клиента почтовой системы. В соответствии с этой моделью персональный компьютер не занимается ни доставкой ни авторизацией сообщений для других. Также сообщения доставляются клиенту по протоколу POP, а посылаются по-прежнему при помощи SMTP. To есть на компьютере пользователя существуют два отдельных агента-интерфейса к почтовой системе — доставки (POP) и отправки (SMTP). Разработчики протокола РОР3 называет такую ситуацию «раздельные агенты» (split UA). Концепция раздельных агентов кратко обсуждается в спецификации РОР3.

В протоколе РОР3 оговорены три стадии процесса получения почты: авторизация, транзакция и обновление. После того как сервер и клиент РОР3 установили соединение, начинается стадия авторизации. На стадии авторизации клиент идентифицирует себя для сервера. Если авторизация прошла успешно, сервер открывает почтовый ящик клиента и начинается стадия транзакции. В ней клиент либо запрашивает у сервера информацию (например, список почтовых сообщений), либо просит его совершить определенное действие (например, выдать почтовое сообщение). Наконец, на стадии обновления сеанс связи заканчивается. В табл. 3.13 перечислены команды протокола РОР3, обязательные для работающей в Интернет реализации минимальной конфигурации.

В протоколе РОР3 определено несколько команд, но на них дается только два ответа: +ОК (позитивный, аналогичен сообщению-подтверждению АСК) и -ERR (негативный, аналогичен сообщению «не подтверждено» NAK). Оба ответа подтверждают, что обращение к серверу произошло и что он вообще отвечает на команды. Как правило, за каждым ответом следует его содержательное словесное описание. В RFC 1225 есть образцы нескольких типичных сеансов РОР3. Сейчас мы рассмотрим несколько из них, что даст возможность уловить последовательность команд в обмене между сервером и клиентом.

Таблица 3.13

Команды протокола POP версии 3 (для минимальной конфигурации)

Команда

Описание

USER

Идентифицирует пользователя с указанным именем

PASS

Указывает пароль для пары клиент-сервер

QUIT

Закрывает TCP-соединение

STAT

Сервер возвращает количество сообщений в почтовом ящике плюс размер почтового ящика

LIST

Сервер возвращает идентификаторы сообщений вместе с размерами сообщений (параметром команды может быть идентификатор сообщения)

RETR

Извлекает сообщение из почтового ящика (требуется указывать аргумент-идентификатор сообщения)

DELE

Отмечает сообщение для удаления (требуется указывать аргумент-идентификатор сообщения)

NOOP

Сервер возвращает положительный ответ, но не совершает никаких действий

LAST

Сервер возвращает наибольший номер сообщения из тех, к которым ранее уже обращались

RSET

Отменяет удаление сообщения, отмеченного ранее командой DELE