POP3 (Post Office Protocol v3) — различия между версиями

Материал из Национальной библиотеки им. Н. Э. Баумана
м (Egor Zorin переименовал страницу POP3 (сетевой протокол) в POP3 (Post Office Protocol v3) без оставления перенаправления)
Строка 4: Строка 4:
  
 
[[Категория:Протоколы прикладного уровня]]
 
[[Категория:Протоколы прикладного уровня]]
 +
 +
== POP ==
 +
POP поддерживает простые требования «загрузи-и-удали» для доступа к удаленным почтовым ящикам. Хотя большая часть POP-клиентов предоставляет возможность оставить почту на сервере после загрузки, использующие POP клиенты обычно соединяются, извлекают все письма, сохраняют их на пользовательском компьютере как новые сообщения, удаляют их с сервера, после чего разъединяются.
 +
Другие протоколы, в частности IMAP, предоставляют более полный и комплексный удаленный доступ к типичным операциям с почтовым ящиком. Многие клиенты электронной почты поддерживают как POP, так и IMAP; однако, гораздо меньше интернет-провайдеров поддерживают IMAP.
 +
 +
POP3-сервер прослушивает общеизвестный порт 110. Шифрование связи для POP3 запрашивается после запуска протокола, с помощью либо команды STLS (если она поддерживается), либо POP3S, которая соединяется с сервером используя TLS или SSL по TCP-порту 995. Предыдущие версии протокола (POP, POP2) устарели. Альтернативным протоколом для сбора сообщений с почтового сервера является IMAP. По умолчанию использует TCP-порт 110. Существуют реализации POP3-серверов, поддерживающие TLS и SSL. Было высказано неофициальное предложение для спецификации «POP4», с рабочей реализацией сервера. Это предложение добавило основные функции управления папками, поддержку составных сообщений, а также управление флагами сообщений. Однако, никакого прогресса «POP4» не наблюдается с 2003 г.
 +
 +
Доступные сообщения клиента фиксируются при открытии почтового ящика POP-сессией и определяются количеством сообщений для сессии, или, по желанию, с помощью уникального идентификатора, присваиваемого сообщению POP-сервером. Этот уникальный идентификатор является постоянным и уникальным для почтового ящика и позволяет клиенту получить доступ к одному и тому же сообщению в разных POP-сессиях. Почта извлекается и помечается для удаления с помощью номера сообщения. При выходе клиента из сессии помеченные сообщения удаляются из почтового ящика.
 +
 +
== Состояния сеанса ==
 +
После установки соединения протокол РОР3 проходит три последовательных состояния
 +
[[Файл:Pop3.jpg|справа]]
 +
# '''Авторизация''' клиент проходит процедуру аутентификации
 +
# '''Транзакция''' клиент получает информацию о состоянии почтового ящика, принимает и удаляет почту.
 +
# '''Обновление''' сервер удаляет выбранные письма и закрывает соединение.
 +
Не смотря на то, что протокол РОР3 действительно поддерживает возможность получения одного или нескольких писем и оставления их на сервере, большинство программ обработки электронной почты просто скачивают все письма и опустошают почтовый ящик на сервере.
 +
 +
В протоколе РОР3 определено несколько команд, но на них дается только два ответа: +ОК (позитивный, аналогичен сообщению-подтверждению АСК) и -ERR (негативный, аналогичен сообщению «не подтверждено» NAK). Оба ответа подтверждают, что обращение к серверу произошло и что он вообще отвечает на команды. Как правило, за каждым ответом следует его содержательное словесное описание. В RFC 1225 есть образцы нескольких типичных сеансов РОР3.
 +
== Команды ==
 +
{| class="wikitable" style="margin-left: auto; margin-right: auto; border: none;"
 +
|-
 +
! Имя !! Аргументы !! Ограничения !! Возможные ответы
 +
|-
 +
| APOP || [имя] [digest] || Её поддержка не является обязательной || * +OK maildrop has n message<br />
 +
 +
* -ERR password supplied 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 scan listing 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 ===
 +
Сервер возвращает заголовки указанного сообщения, пустую строку и указанное количество первых строк тела сообщения.
 +
[сообщение] — номер сообщения.
 +
[количество строк] — сколько строк нужно вывести.
 +
 +
== Пример сессии==
 +
S: (ожидает соединения)
 +
C: (Подключается к порту 25 сервера)
 +
S:220 mail.company.tld ESMTP CommuniGate Pro 5.1.4i is glad to see you!
 +
C:HELO
 +
S:250 domain name should be qualified
 +
C:MAIL FROM:
 +
S:250 someusername@somecompany.ru sender accepted<br />
 +
C:RCPT TO:
 +
S:250 user1@company.tld ok
 +
C:RCPT TO:
 +
S:550 user2@company.tld  unknown user account
 +
C:DATA
 +
S:354 Enter mail, end with "." on a line by itself
 +
C:Hi!
 +
C:.
 +
S:250 769947 message accepted for delivery
 +
C:QUIT
 +
S:221 mail.company.tld CommuniGate Pro SMTP closing connection
 +
S: (закрывает соединение)
 +
 +
== Ссылки ==
 +
* [http://latysheva2007.narod.ru/theme13.html#POP Схема работы почтовых протоколов стека TCP/IP]
 +
* [http://libraryno.ru/3-6-9-protokol-post-office-protocol-pop-progr_in_inet/ Протокол POP]
 +
* [https://en.wikipedia.org/wiki/Post_Office_Protocol En Wiki]

Версия 13:06, 21 мая 2016

Почтовый протокол версии 3 (Post Office Protocol v3 — РОРЗ) выполняет другую часть общей задачи почтового обмена для большинства почтовых серверов. Протокол РОРЗ применяется для доставки почты из почтовых ящиков конечным пользователям. После доставки почты на соответствующий сервер с помощью протокола SMTP эта почта направляется в соответствующие почтовые ящики, чтобы пользователь мог ее затем получить с помощью протокола РОРЗ. Безусловно, для выполнения этой функции могут также применяться другие протоколы (такие как 1МАР4), но из числа протоколов, официально введенных в состав набора протоколов TCP/IP, протокол РОРЗ, по-видимому, применяется чаще всего. Этот протокол поддерживает аутентификацию пользователя в зашифрованной или незашифрованной форме, но незашифрованная форма, по-видимому, применяется чаще всего.

Протокол РОРЗ определен в документе RFC 1939 (стандарт 53).

POP

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

POP3-сервер прослушивает общеизвестный порт 110. Шифрование связи для POP3 запрашивается после запуска протокола, с помощью либо команды STLS (если она поддерживается), либо POP3S, которая соединяется с сервером используя TLS или SSL по TCP-порту 995. Предыдущие версии протокола (POP, POP2) устарели. Альтернативным протоколом для сбора сообщений с почтового сервера является IMAP. По умолчанию использует TCP-порт 110. Существуют реализации POP3-серверов, поддерживающие TLS и SSL. Было высказано неофициальное предложение для спецификации «POP4», с рабочей реализацией сервера. Это предложение добавило основные функции управления папками, поддержку составных сообщений, а также управление флагами сообщений. Однако, никакого прогресса «POP4» не наблюдается с 2003 г.

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

Состояния сеанса

После установки соединения протокол РОР3 проходит три последовательных состояния

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

Не смотря на то, что протокол РОР3 действительно поддерживает возможность получения одного или нескольких писем и оставления их на сервере, большинство программ обработки электронной почты просто скачивают все письма и опустошают почтовый ящик на сервере.

В протоколе РОР3 определено несколько команд, но на них дается только два ответа: +ОК (позитивный, аналогичен сообщению-подтверждению АСК) и -ERR (негативный, аналогичен сообщению «не подтверждено» NAK). Оба ответа подтверждают, что обращение к серверу произошло и что он вообще отвечает на команды. Как правило, за каждым ответом следует его содержательное словесное описание. В RFC 1225 есть образцы нескольких типичных сеансов РОР3.

Команды

Имя Аргументы Ограничения Возможные ответы
APOP [имя] [digest] Её поддержка не является обязательной * +OK maildrop has n message
  • -ERR password supplied 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 scan listing 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

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

Пример сессии

S: (ожидает соединения)
C: (Подключается к порту 25 сервера)
S:220 mail.company.tld ESMTP CommuniGate Pro 5.1.4i is glad to see you!
C:HELO
S:250 domain name should be qualified
C:MAIL FROM: 
S:250 someusername@somecompany.ru sender accepted
C:RCPT TO: S:250 user1@company.tld ok C:RCPT TO: S:550 user2@company.tld unknown user account C:DATA S:354 Enter mail, end with "." on a line by itself C:Hi! C:. S:250 769947 message accepted for delivery C:QUIT S:221 mail.company.tld CommuniGate Pro SMTP closing connection S: (закрывает соединение)

Ссылки