POP3

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
POP3
Название:

Post Office Protocol 3

Уровень (по модели OSI):

Прикладной

Семейство:

TCP/IP

Порт/ID:

110/TCP

Назначение протокола:

Получение электронной почты

Спецификация:

RFC 1939 / STD 53

Основные реализации (клиенты):

MUA (MS Outlook, Mozilla Thunderbird, The Bat!, KMail, Claws Mail, mutt и др.)

Основные реализации (серверы):

Qpopper, MS Exchange Server, CommuniGate Pro, Mail Daemon

Расширяемость:

Доп. команды (RFC 2449)

POP3 (англ. Post Office Protocol Version 3 — протокол почтового отделения, версия 3) — стандартный Интернет-протокол прикладного уровня, используемый клиентами электронной почты для получения почты с удаленного сервера по TCP/IP-соединению.

POP и IMAP (Internet Message Access Protocol) — наиболее распространенные Интернет-протоколы для извлечения почты. Практически все современные клиенты и серверы электронной почты поддерживают оба стандарта. Протокол POP был разработан в нескольких версиях, нынешним стандартом является третья версия (POP3). Большинство поставщиков услуг электронной почты (такие как Hotmail, Gmail и Yahoo! Mail) также поддерживают IMAP и POP3. Предыдущие версии протокола (POP, POP2) устарели.

Альтернативным протоколом для сбора сообщений с почтового сервера является IMAP.

Общие сведения[править | править вики-текст]

POP поддерживает простые требования «загрузи-и-удали» для доступа к удаленным почтовым ящикам. Хотя большая часть POP-клиентов предоставляют возможность оставить почту на сервере после загрузки, использующие POP клиенты обычно соединяются, извлекают все письма, сохраняют их на пользовательском компьютере как новые сообщения, удаляют их с сервера, после чего разъединяются.

Другие протоколы, в частности IMAP, предоставляют более полный и комплексный удаленный доступ к типичным операциям с почтовым ящиком. Многие клиенты электронной почты поддерживают как POP, так и IMAP; однако, гораздо меньше интернет-провайдеров поддерживают IMAP.

POP3-сервер прослушивает общеизвестный порт 110. Шифрование связи для POP3 запрашивается после запуска протокола, с помощью либо команды STLS (если она поддерживается), либо POP3S, которая соединяется с сервером используя TLS или SSL по TCP-порту 995.

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

История[править | править вики-текст]

POP (POP1) определен в RFC 918 (1984), POP2 в RFC 937 (1985). Первоначальная спецификация POP3 была представлена в RFC 1081 (1988). Нынешняя же описана в RFC 1939, обновлена механизмом расширения (RFC 2449) и механизмом аутентификации (RFC 1734).

Версии POP2 был назначен порт 109.

Изначальная спецификация POP3 поддерживала только незашифрованный механизм входа в систему USER/PASS или управление доступом .rhosts. На данный момент, POP3 поддерживает различные методы аутентификации для предоставления разных уровней защиты от незаконного доступа к пользовательской почте. Большинство из них предоставлены механизмами расширения POP3. Клиенты POP3 поддерживают методы SASL через расширение AUTH. В рамках проекта Массачусетского технологического института «Афина» также был введен метод на основе Кербероса. RFC 1460 ввел APOP в основной протокол. APOP — протокол вида «запрос/ответ», использующий функцию хэширования MD5. Среди клиентов, реализующих APOP, можно выделить Mozilla Thunderbird, Opera Mail, Eudora, Windows Live Mail, PowerMail, Apple Mail, и т. д.

Было высказано неофициальное предложение для спецификации «POP4», с рабочей реализацией сервера. Это предложение добавило основные функции управления папками, поддержку составных сообщений, а также управление флагами сообщений. Однако, никакого прогресса «POP4» не наблюдается с 2003 г.

Расширения[править | править вики-текст]

Механизм расширений был предложен в RFC 2449 для размещения новых расширений, а также организованного объявления о поддержке опциональных команд, таких как TOP и UIDL. RFC не намеревались поощрять расширения и подтвердили, что роль POP3 заключается в предоставлении простой поддержки в основном для требования «загрузи-и-удали».

Расширения выводятся списком командой CAPA. За исключением APOP, все опциональные команды были включены в изначальный набор возможностей. Вслед за ESMTP (RFC 5321), возможности, начинающиеся с "X.

STARTTLS[править | править вики-текст]

Расширение STARTTLS позволяет использовать TLS (Transport Layer Security) или SSL (Secure Sockets Layer) для связи с помощью команды STLS, по стандартному POP3-порту. Некоторые клиенты и сервера используют метод альтернативного порта, работающий с TCP-портом 995 (POP3S).

SDPS[править | править вики-текст]

Британский провайдер Demon Internet ввел расширение POP3, позволяющее иметь несколько учетных записей для каждого домена и ставшее известным как SDPS (Standard Dial-up POP3 Service). Для доступа к каждой учетной записи имя пользователя включает в себя имя хоста, например, john@hostname или john+hostname.

Google Apps используют тот же метод[1].

Сравнение с IMAP[править | править вики-текст]

Клиенты, которые оставляют почту на серверах, обыкновенно используют команду UIDL для получения текущего соответствия между количеством сообщений и сообщением, определяемым его уникальным идентификатором. Идентификатор произволен и может повторяться, если на ящике есть идентичные сообщения. Напротив, IMAP использует 32-битный уникальный идентификатор (UID), присваиваемый сообщениям по возрастанию (но не обязательно подряд) по мере их получения. При извлечении новых сообщений IMAP-клиенты запрашивают UID больший, чем наивысшее значение UID среди всех ранее извлеченных сообщений, в то время как POP-клиент должен выбирать из всей карты UIDL. Для больших почтовых ящиков это может потребовать значительной обработки.

MIME служит в качестве стандарта для вложений и не-ASCII текста в электронных сообщениях. Хотя ни POP3, ни SMTP не требуют MIME-отформатированного сообщения, по существу, все не-ASCII сообщения идут в формате MIME, поэтому POP-клиенты должны также «понимать» и использовать MIME. IMAP, по определению, принимает MIME-форматированные сообщения.

Состояния сеанса[править | править вики-текст]

В протоколе POP3 предусмотрено 3 состояния сеанса:

Авторизация 
Клиент проходит процедуру Аутентификации.
Транзакция 
Клиент получает информацию о состоянии почтового ящика, принимает и удаляет почту.
Обновление 
Сервер удаляет выбранные письма и закрывает соединение.

Команды протокола[править | править вики-текст]

Имя Аргументы Ограничения Возможные ответы
APOP
[имя] [digest]
Её поддержка не является обязательной
* +OK maildrop has n message
* -ERR password suplied for [имя] is incorrect
USER
[имя]
* +OK name is a valid mailbox
* -ERR never heard of mailbox name
PASS
[пароль]
Работает после успешной передачи имени почтового ящика
* +OK maildrop locked and ready
* -ERR invalid password
* -ERR unable to lock maildrop
DELE
[сообщение]
Доступна после успешной идентификации
* +OK message deleted
* -ERR no such message
LIST
[сообщение]
Доступна после успешной идентификации
* +OK scan listing follows
* -ERR no such message
NOOP
Доступна после успешной идентификации
+OK
RETR
[сообщение]
Доступна после успешной идентификации
* +OK message follows
* -ERR no such message
RSET
Доступна после успешной идентификации
+OK
STAT
Доступна после успешной идентификации
+OK a b
TOP
[сообщение]
[количество строк]
Доступна после успешной идентификации
* +OK n octets
* -ERR no such message
QUIT
+OK

APOP[править | править вики-текст]

Команда служит для передачи серверу имени пользователя и зашифрованного пароля (digest).
[имя] — строка, указывающая имя почтового ящика.
[digest] — хеш-сумма временной метки, конкатенированной с паролем пользователя, вычисленная по алгоритму MD5. В случае поддержки этой команды временная метка получается при соединении с сервером.

USER[править | править вики-текст]

Передаёт серверу имя пользователя.
[имя] — строка, указывающая имя почтового ящика.

PASS[править | править вики-текст]

Передаёт серверу пароль почтового ящика.
[пароль] — пароль для почтового ящика.

DELE[править | править вики-текст]

Сервер помечает указанное сообщение для удаления. Сообщения, помеченные на удаление, реально удаляются только после закрытия транзакции (закрытие транзакций происходит обычно после посыла команды QUIT, кроме этого, например, на серверах закрытие транзакций может происходить по истечении определённого времени, установленного сервером).
[сообщение] — номер сообщения.

LIST[править | править вики-текст]

Если был передан аргумент, то сервер выдаёт информацию об указанном сообщении. Если аргумент не был передан, то сервер выдаёт информацию обо всех сообщениях, находящихся в почтовом ящике. Сообщения, помеченные для удаления, не перечисляются.
[сообщение] — номер сообщения (необязательный аргумент).

NOOP[править | править вики-текст]

Сервер ничего не делает, всегда отвечает положительно.

RETR сообщение[править | править вики-текст]

Сервер передаёт сообщение с указанным номером.
[сообщение] — номер сообщения.

RSET[править | править вики-текст]

Этой командой производится откат транзакций внутри сессии. Например, если пользователь случайно пометил на удаление какие-либо сообщения, он может убрать эти пометки, отправив эту команду.

STAT[править | править вики-текст]

Сервер возвращает количество сообщений в почтовом ящике и размер почтового ящика в октетах. Сообщения, помеченные, как удаленные при этом не учитываются.

TOP[править | править вики-текст]

Сервер возвращает заголовки указанного сообщения, пустую строку и указанное количество первых строк тела сообщения.
[сообщение] — номер сообщения.
[количество строк] — сколько строк нужно вывести.

Пример сессии[править | править вики-текст]

Это пример сессии с поддержкой зашифрованных паролей (APOP, RFC 1939):

S: <Сервер ожидает входящие соединения на порту 110>
C: <подключается к серверу>
S:    +OK POP3 server ready <1896.697170952@dbc.mtview.ca.us>
C:    APOP mrose c4c9334bac560ecc979e58001b3e22fb
S:    +OK mrose's maildrop has 2 messages (320 octets)
C:    STAT
S:    +OK 2 320
C:    LIST
S:    +OK 2 messages (320 octets)
S:    1 120
S:    2 200
S:    .
C:    RETR 1
S:    +OK 120 octets
S:    <сервер передаёт сообщение 1>
S:    .
C:    DELE 1
S:    +OK message 1 deleted
C:    RETR 2
S:    +OK 200 octets
S:    <сервер передаёт сообщение 2>
S:    .
C:    DELE 2
S:    +OK message 2 deleted
C:    QUIT
S:    +OK dewey POP3 server signing off (maildrop empty)
C:  <закрывает соединение>
S:  <продолжает ждать входящие соединения>

Вариант начала сессии, при котором пароль передается открытым текстом:

C:    USER mrose
S     +OK User accepted
C:    PASS mrosepass
S     +OK Pass accepted

Примечания[править | править вики-текст]

Ссылки[править | править вики-текст]

Ссылки на упоминавшиеся RFC
  • RFC 918 — POST OFFICE PROTOCOL
  • RFC 937 — POST OFFICE PROTOCOL — VERSION 2
  • RFC 1081 — Post Office Protocol — Version 3
  • RFC 1939 — Post Office Protocol — Version 3 (STD 53)
  • RFC 1957 — Some Observations on Implementations of the Post Office Protocol (POP3)
  • RFC 2195 — IMAP/POP AUTHorize Extension for Simple Challenge/Response
  • RFC 2384 — POP URL Scheme
  • RFC 2449 — POP3 Extension Mechanism
  • RFC 2595 — Using TLS with IMAP, POP3 and ACAP
  • RFC 3206 — The SYS and AUTH POP Response Codes
  • RFC 5034 — The Post Office Protocol (POP3) Simple Authentication and Security Layer (SASL) Authentication Mechanism

Литература[править | править вики-текст]

  • Hughes L Internet e-mail Protocols, Standards and Implementation. — Artech House Publishers, 1998. — ISBN 0-89006-939-5
  • Johnson K Internet Email Protocols: A Developer's Guide. — Addison-Wesley Professional, 2000. — ISBN 0-201-43288-9
  • Loshin P Essential Email Standards: RFCs and Protocols Made Practical. — John Wiley & Sons, 1999. — ISBN 0-471-34597-0
  • Rhoton J Programmer's Guide to Internet Mail: SMTP, POP, IMAP, and LDAP. — Elsevier, 1999. — ISBN 1-55558-212-5
  • Wood D Programming Internet Mail. — O'Reilly, 1999. — ISBN 1-56592-479-7