Протокол POP (Post Office Protocol) - Электронная почта

Протокол обмена почтовой информацией POP предназначен для разбора почты из почтовых ящиков пользователей на их рабочие места при помощи программ-клиентов. Если по протоколу SMTP пользователи отправляют корреспонденцию через Internet, то по протоколу POP пользователи получают корреспонденцию из своих почтовых ящиков на почтовом сервере.

Пользователи ПК могут соединится с почтовым сервером через Telnet и читать почту, используя ПК в качестве терминала. Это широко распространенный способ, особенно для систем с DOS.

Широкое распространение получили две версии POP - POP2 и POP3. Протокол POP2 определен в стандарте RFC 937 и использует порт 109. POP3 определен в RFC 1725 и использует порт 110. Это несовместимые протоколы, в которых применяются разные команды, но они выполняют одинаковые функции.

В настоящее время чаще всего используется протокол POP3.

В следующих таблицах сведены сведения о командах применяющихся в протоколах POP2 и POP3:

Команда

Функция

Helo Пользователь пароль

Идентифицирует счет пользователя

Fold Почтовая_папка

Выбирает почтовую папку

Read [n]

Читает почту, начиная с сообщения n

Retr

Извлекает сообщение

Acks

Сохранияет сообщение

Ackd

Удаляет сообщение

Quit

Завершает сеанс POP2

Команды POP2

Команда

Функция

User

Посылает имя счета пользователя

Pass

Посылает пароль пользователя

Stat

Запрос информации о количестве непрочитанных сообщений/байтов

Retr n

Пересылка сообщения номер n

Dele n

Удаление сообщения номер n

Last

Запрос номера последнего прочитанного сообщения

List [n]

Запрос информации о размере сообщения номер n или о размере всех сообщений

Rset

Восстанавливает удаленные сообщения и устанавливает счетчик сообщений в 1

Top n m

Печатает заголовок и m строк сообщения номер n

Quit

Завершение сеанса POP3

Команды POP3

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

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

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

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

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

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

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

РОРЗ-сервер может использовать в своей работе таймер контроля времени соединения. Этот таймер отсчитывает время "бездействия" ("idle") клиента в сессии от последней переданной команды. Если время сессии истекло, сервер закрывает TCP-соединение, не переходя в состояние UPDATE (иными словами, откатывает транзакцию или на языке баз данных - выполняет ROLLBACK).

Похожие статьи




Протокол POP (Post Office Protocol) - Электронная почта

Предыдущая | Следующая