Команды протокола POP3 | ||
Команда | Синтаксис | Описание |
STAT |
Формат ответа: “+ОК nn mm”, где nn — количество сообщений, mm — их общий объем:
С: STAT S: +ОК 2 320 В этом примере РОРЗ -сервер сообщает, что в данном почтовом ящике находятся два сообщения общим объемом 320 байт. |
После того как клиент успешно прошел процедуру аутентификации в РОРЗ- сервере, и РОРЗ- сервер “закрыл” определенный почтовый ящик только для использования данным клиентом (для тех, кто работал с базами данных, это называется EXCLUSIVE ACCESS LOCK), РОРЗ- сессия переходит в режим TRANSACTION, и клиент может начать работу со своей почтой
Команда STAT (без аргументов) используется для просмотра состояния текущего почтового ящика. В ответ РОРЗ- сервер возвращает строку, содержащую количество и общий размер в байтах сообщений, которые клиент может получить с РОРЗ- сервера. Сообщения, помеченные на удаление, не учитываются |
LIST [msg] |
С: LIST
S: +ОК 2 messages (320 octets) S: 1 120 S: 2 200 S: . ИЛИ С: LIST 2 S: +ОК 2 200 ИЛИ С: LIST 3 S: -ERR no such message, only 2 messages in maildrop |
Команда LIST может передаваться как с аргументом msg — номером сообщения, так и без аргумента.
Если команда содержит аргумент, и сообщение с указанным номером существует, ответом на нее будет “информационная строка”, которая содержит номер сообщения и размер сообщения в байтах. Если аргумент не указан — ответом будет список информационных строк обо всех сообщениях в данном почтовом ящике. Сообщения, помеченные на удаление не фигурируют в этом списке |
RETR msg |
С: RETR 1
S: +ОК 120 octets S: <text message> S: . |
Используется для передачи клиенту запрашиваемого сообщения. Аргумент команды — номер сообщения. Если запрашиваемого сообщения нет, возвращается отрицательный индикатор “-ERR”. |
DELE msg |
С: DELE 1
S: +ОК message 1 deleted ИЛИ С: DELE 2 S: -ERR message 2 already deleted |
Аргумент команды— номер сообщения. Сообщения, помеченные на удаление, реально удаляются только после закрытия транзакции, на стадии UPDATE. |
NOOP |
С: NOOP
S: +ОК |
Для проверки состояния соединения с РОРЗ- сервером используется команда NOOP . При активном соединении ответом на нее будет положительный индикатор “+ОК”: |
RSET
|
С: RSET
S: +OK maildrop has 2 messages (320 octets) |
Для отката транзакции внутри сессии используется команда RSET (без аргументов). Если пользователь случайно Пометил на удаление какие-либо сообщения, он может убрать эти пометки, отправив эту команду: |
TOP msg n |
С ТОР 1 10
S +OK S <header> S <blank> S <message body> S . |
По этой команде пользователь может получить “n” первых строк сообщения с номером “msg”. РОРЗ- сервер по запросу клиента отправляет заголовок сообщения, затем пустую строку, затем требуемое количество строк сообщения (если количество строк в сообщении меньше указанного в параметре “n”, пользователю передается все сообщение). |
USER name |
С: USER frated
S: -ERR sorry, no mailbox for frated here ИЛИ С: USER mrose S: +OK mrose is a real hoopy frood |
Когда РОРЗ -сессия находится в состоянии аутентификации (AUTHORIZATION), и клиент должен зарегистрировать себя на РОРЗ -сервере. Это может быть выполнено либо с помощью команд USER и PASS — ввод открытых пользовательского идентификатора и пароля (именно этот способ используется чаще), либо командой АРОР — аутентификация цифровой подписью, на базе секретного ключа. Любой РОРЗ -сервер должен поддерживать хотя бы один из механизмов аутентификации.
Аргументом — “name” является строка, идентифицирующая почтовый ящик системы. Этот идентификатор должен быть уникальным в данной почтовой системе РОРЗ -сервера. Если ответом на эту команду является строка индикатора “+OK”, клиент может отправлять команду PASS — ввод пароля или QUIT — завершить сессию. Если ответом является строка “-ERR”, клиент может либо повторить команду USER, либо закрыть сессию |
PASS string |
С: USER mrose
S: +OK mrose is a real hoopy frood С: PASS secret S: -ERR maildrop already locked ИЛИ С: USER mrose S: +OK mrose is a real hoopy frood C: PASS secret S: +OK mrose’s maildrop has 2 messages (320 octets) |
Аргументом команды является строка пароля данного почтового ящика. После получения команды PASS, РОРЗ -сервер, на основании аргументов команд USER и PASS, определяет возможность доступа к заданному почтовому ящику. Если РОРЗ -сервер ответил “+OK”, это означает, что аутентификация клиента прошла успешно и он может работать со своим почтовым ящиком, т. е. сессия переходит в состояние TRANSACTION. Если РОРЗ- сервер ответил “-ERR”, то либо был введен неверный пароль, либо не найден указанный почтовый ящик |
АРОР name digest |
S: +OK РОРЗ server ready [email protected]
С: АРОР mrose c4c9334bac560ecc979e58001b3e22fb S: +OK maildrop has 1 message (369 octets) Алгоритм на основании открытого ключа “tanstaaf и временной метки < [email protected]> построил шифрованную строку “c4c9334bac560ecc979e5800Ib3e22fb”. |
Команда аутентификации пользователя АРОР не входит в список обязательно реализуемых команд РОРЗ -сервера. Эта команда предоставляет значительно больший (по сравнению с командами USER или PASS) уровень защиты аутентификации пользователя при открытии сессии AUTHORIZATION и используется только тогда, когда к обеспечению конфиденциальности доступа к информации почтовых ящиков предъявляются повышенные требования. Эта команда может быть передана клиентом РОРЗ -сервера после получения приветственного сообщения или после ошибки обработки команд USER/PASS.
Аргументами команды являются: name — имя пользователя (то же, что и в команде USER), digest — шифрованная (по алгоритму MD5) строка пароля. Применяемый здесь алгоритм необратимого шифрования для построения секретного ключа использует открытый ключ и временную метку. Временные метки передаются хосту клиента вместе с сообщением приветствия. Например, для UNIX-машин временная метка может иметь вид: <process-ID.clock@hostname>, где process-ID — это идентификатор процесса, clock — состояние таймера на момент установления соединения, hostname — имя компьютера РОРЗ -сервера. Этот механизм позволяет достичь очень высокой степени защищенности. Далее показан пример работы команды АРОР |
QUIT |
С: QUIT
S: +ОК dewey POP3 server signing off |
К командам состояния AUTHORIZATION может относиться команда закрытия РОРЗ- сессии — QUIT , если она была отправлена в режиме AUTHORIZATION (например, при вводе неправильного пароля или идентификатора пользователя):
Эта команда отправляется без аргументов и всегда имеет единственный ответ “+ОК”. |
Пример сценария работы с POP-сервером | ||
Ниже приведена стандартная сессия работы с РОРЗ -протоколом. S: <wait for connection on TCP port 110> C: <open connection> S: +OK РОРЗ server ready С: USER mrose 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 РОРЗ server sends message 1> S: . С: DELE 1 S: +OK message 1 deleted С: RETR 2 S: +OK 200 octets S: <the РОРЗ server sends message 2> S: . С: DELE 2 S: +OK message 2 deleted С: QUIT S: +OK dewey РОРЗ server signing off (maildrop empty) С: <close connection> S: <wait for next connection> |