Протокол рор3

РОР3 - это простейший протокол для работы пользователя с содержимым своего почтового ящика. Он позволяет только забрать почту из почтового ящика сервера на рабочую станцию клиента и удалить ее из почтового ящика на сервере. Всю дальнейшую обработку почтовое сообщение проходит на компьютере клиента.

РОР3-сервер не отвечает за отправку почты, он работает только как универсальный почтовый ящик для группы пользователей. Когда пользователю необходимо отправить сообщение, он должен установить соединение с каким-либо SMTP-сервером и отправить туда свое сообщение по SMTP. Этот SMTP-сервер может быть тем же хостом, где работает РОР3-сервер, а может располагаться совсем в другом месте.

РОР3- сервис, как правило, устанавливается на 110-й ТСР-порт сервера, который будет находиться в режиме ожидания входящего соединения. Когда клиент хочет воспользоваться РОР3 -сервисом, он просто устанавливает TCP-соединение с портом 110 этого хоста. После установления соединения сервис РОР3 отправляет подсоединившемуся клиенту приветственное сообщение. После этого клиент и сервер начинают обмен командами и данными. По окончании обмена РОР3 -канал закрывается.

Команды РОР3 состоят из ключевых слов, состоящих из ASCII-символов, и одним или несколькими параметрами, отделяемыми друг от друга символом "пробела" - <SP>. Все команды заканчиваются символами "возврата каретки" и "перевода строки" - <CRLF>. Длина ключевых слов не превышает четырех символов, а каждого из аргументов может быть до 40 символов.

Ответы РОР3-сервера на команды состоят из строки статус-индикатора, ключевого слова, строки дополнительной информации и символов завершения строки - <CRLF>. Длина строки ответа может достигать 512 символов. Строка статус-индикатора принимает два значения: положительное ("+ОК") и отрицательное ("-ERR"). Любой сервер РОР3 обязан отправлять строки статус-индикатора в верхнем регистре, тогда как другие команды и данные могут приниматься или отправляться как в нижнем, так и в верхнем регистрах.

Ответы РОР3-сервера на отдельные команды могут составлять несколько строк. В этом случае строки разделены символами <CRLF>. Последнюю строку информационной группы завершает строка, состоящая из символа "." (код - 046) и <CRLF>, т. е. последовательность "CRLF.CRLF".

РОР3-сессия состоит из нескольких частей. Как только открывается TCP-соединение и РОР3-сервер отправляет приветствие, сессия должна быть зарегистрирована - состояние аутентификации (AUTHORIZATION state). Клиент должен зарегистрироваться в РОР3-сервере, т. е. ввести свой идентификатор и пароль.

После этого сервер предоставляет клиенту его почтовый ящик и открывает для данного клиента транзакцию - состояние начала транзакции обмена (TRANSACTION state). На этой стадии клиент может считать и удалить почту своего почтового ящика.

После того как клиент заканчивает работу (передает команду QUIT), сессия переходит в состояние UPDATE - завершение транзакции. В этом состоянии РОР3-сервер закрывает транзакцию данного клиента (на языке баз данных - операция COMMIT) и закрывает TCP-соединение.

В случае получения неизвестной, неиспользуемой или неправильной команды, РОР3-сервер должен ответить отрицательным состоянием индикатора.

При открытии TCP-соединения РОР3-клиентом, РОР3-сервер отправляет сообщение приветствия (далее во всех примерах РОР3-протокола используются следующие обозначения: С -клиент, S - сервер РОР3):

S: +OK РОР3 server ready

Теперь РОР3-сессия находится в состоянии авторизации (AUTHORIZATION), и клиент должен зарегистрировать себя на РОР3-сервере. Это может быть выполнено либо с помощью команд USER и PASS - ввод открытых пользовательского идентификатора и пароля (именно этот способ используется чаще), либо командой АРОР - авторизации цифровой подписью, на базе секретного ключа. Любой РОР3 -сервер должен поддерживать хотя бы один из механизмов авторизации.

КомандаUSER имеет следующий формат:

USER name

Аргументом (name) является строка, идентифицирующая почтовый ящик системы. Этот идентификатор должен быть уникальным в данной почтовой системе РОР3-сервера. Если ответом на эту команду является строка индикатора "+OK", клиент может отправлять команду PASS - ввод пароля или QUIT - завершить сессию. Если ответом является строка "-ERR", клиент может либо повторить команду USER, либо закрыть сессию. Примеры использования команды:

С: USER frated

S: -ERR sorry, no mailbox for frated here

или

С: USER mrose

S: +OK mrose is a real hoopy frood

Команда PASS используется только после положительного ответа на команду USER:

PASS string

Аргументом команды является строка пароля данного почтового ящика. После получения команды PASS, РОР3-сервер, на основании аргументов команд USER и PASS, определяет возможность доступа к заданному почтовому ящику. Если РОР3-сервер ответил "+OK", это означает, что авторизация клиента прошла успешно и он может работать со своим почтовым ящиком, т.е. сессия переходит в состояние TRANSACTION. Если РОР3- сервер ответил "-ERR", то либо был введен неверный пароль, либо не найден указанный почтовый ящик:

С: USER mrose

S: +OK mrose is a real hoopy frood

C: PASS secret

S: +OK mrose's maildrop has 2 messages (320 octets)

Команда закрытия РОР3-сессии: QUIT-отправляется без аргументов и всегда имеет единственный ответ "+ОК", например:

С: QUIT

S: +ОК dewey POP3 server signing off

После того как клиент успешно прошел процедуру авторизации в РОР3- сервере, и РОР3-сервер "закрыл" определенный почтовый ящик только для использования данным клиентом (для тех, кто работал с базами данных, это называется EXCLUSIVE ACCESS LOCK), РОР3-сессия переходит в режим TRANSACTION, и клиент может начать работу со своей почтой.

Команда STAT (без аргументов) используется для просмотра состояния текущего почтового ящика.

В ответ РОР3- сервер возвращает строку, содержащую количество и общий размер в байтах сообщений, которые клиент может получить с РОР3- сервера. Сообщения, помеченные на удаление, не учитываются. Формат ответа: "+ОК nn mm", где nn - количество сообщений, mm - их общий объем:

С: STAT

S: +ОК 2 320

Команда RETR - используется для передачи клиенту запрашиваемого сообщения:

RETR msg

Аргумент команды - номер сообщения. Если запрашиваемого сообщения нет, возвращается отрицательный индикатор "-ERR".

С: RETR 1

S: +ОК 120 octets

S: <text message>

S: .

После получения, сообщение, как правило, помечается на удаление из почтового ящика, при этом используется командаDELE:

DELE msg

Аргумент команды: номер сообщения. Сообщения, помеченные на удаление, реально удаляются только после закрытия транзакции, на стадии UPDATE.

С: DELE 1

S: +ОК message 1 deleted

ИЛИ

С: DELE 2

S: -ERR message 2 already deleted

Для проверки состояния соединения с РОР3- сервером используется команда NOOP. При активном соединении ответом на нее будет положительный индикатор "+ОК":

С: NOOP

S: +ОК

Ниже приведена стандартная сессия работы с РОР3 -протоколом.

S: <wait for connection on TCP port 110>

C: <open connection>

S: +OK РОР3 server ready

С: USERmrose

S: +OK mrose is a real hoopy frood

С: PASS secret

S: +OK mrose's maildrop has 2 messages (320 octets)

С: STAT

S: +OK 2 320

С: LIST

S: +OK 2 messages (320 octets)

S: 1 120

S: 2 200

S: .

С: RETR 1

S: +OK 120 octets

S: <the РОР3 server sends message 1>

S: .

С: DELE 1

S: +OK message 1 deleted

С: RETR 2

S: +OK 200 octets

S: <the РОР3 server sends message 2>

S: .

С: DELE 2

S: +OK message 2 deleted

С: QUIT

S: +OK dewey РОР3 server signing off (maildrop empty)

С: <close connection>

S: <wait for next connection>

Простота протокола POP, которая послужила росту его популярности вначале, обернулась затем отсутствием гибкости и невозможности выполнять другие операции управления почтовыми ящиками. На смену РОР3 пришло новое поколение протоколов работы с электронной почтой - протоколы IMAP.

Наши рекомендации