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: <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: +ОК
Следующие примеры показывают, как сервер POP3
выполняет действия. Например, команда RETR извлекает
сообщение с указанным номером и помещает его в буфер местного
UA:
CLIENT: RETR 1 SERVER: +OK 120 octets SERVER:
<the POPS server sends the entire message here> (РОРЗ-сервер
высылает сообщение целиком) 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, и все отмеченные для удаления
сообщения будут восстановлены.
Понравилась статья или просто понравился сайт - скажи СПАСИБО автору - закинь в копилку монетку ;-)
|