После того как программа установила TCP-соединение с портом протокола РОР3 (официальный номер 110), необходимо послать команду USER с именем пользователя в качестве параметра. Если ответ сервера будет +ОК, нужно послать команду PASS с паролем этого пользователя:
CLIENT: USER kcope
SERVER: +OK
CLIENT: PASS secret
SERVER: . +OK kcope’s maildrop has 2 messages (320 octets)
(В почтовом ящике kcope есть 2 сообщения (320 байтов) …)
После того как стадия авторизации окончена, обмен переходит на стадию транзакции. В следующих примерах демонстрируется возможный обмен сообщениями на этой стадии. Команда STAT возвращает количество сообщений и количество байтов в сообщениях:
CLIENT: STAT
SERVER: +OK 2 320
Команда LIST (без параметра) возвращает список сообщений в почтовом ящике и их размеры:
CLIENT: LIST
SERVER: +OK 2 messages (320 octets)
SERVER: 1 120
SERVER: 2 200
SERVER: . …
Команда LIST с параметром возвращает информацию о заданном сообщении:
CLIENT: LIST 2
SERVER: +OK 2 200 . . .
CLIENT: LIST 3
SERVER: -ERR no such message, only 2 messages in maildrop
Команда TOP возвращает заголовок, пустую строку и первые десять строк тела сообщения:
CLIENT: TOP 10
SERVER: +OK
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: +ОК
Следующие примеры показывают, как сервер РОР3 выполняет действия. Например, команда RETR извлекает сообщение с указанным номером и помещает его в буфер местного UA:
CLIENT: RETR 1
SERVER: +OK 120 octets
SERVER: <the POP3 server sends the entire message here>
(РОР3-сервер высылает сообщение целиком)
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, и все отмеченные для удаления сообщения будут восстановлены.
Другими словами, после того как SMTP или РОР3-клиент установят соединение, они подают команду и ожидают ответа от сервера. Как только ответ получен, процесс повторяется снова: выдача команды — ожидание ответа — получение ответа. Протокол SMTP предназначен для передачи сообщений, а РОР3 — для получения сообщений.