Принципы работы и основные команды протокола POP3

post office protocol (pop) - протокол доставки почты пользователю из почтового ящика почтового сервера РОР. Многие концепции, принципы и понятия протокола pop выглядят и функционируют подобно smtp. Команды pop практически идентичны командам smtp, отличаясь в некоторых деталях. На рисунке изображена модель клиент-сервер по протоколу 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: (сервер 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: (РОРЗ-сервер высылает сообщение целиком)
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, и все отмеченные для удаления сообщения будут восстановлены. 


2008 © Computer repair