POP3

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.


1. Загальні відомості

POP підтримує прості вимоги "загрузи-і-удали" для доступу до віддалених поштових скриньках. Хоча більша частина POP-клієнтів надають можливість залишити пошту на сервері після завантаження, що використовують POP клієнти зазвичай з'єднуються, витягають всі листи, зберігають їх на комп'ютері користувача як нові повідомлення, видаляють їх із сервера, після чого роз'єднуються.

Інші протоколи, зокрема IMAP, надають більш повний і комплексний віддалений доступ до типових операцій з поштовою скринькою. Багато клієнтів електронної пошти підтримують як POP, так і IMAP; однак, набагато менше інтернет-провайдерів підтримують IMAP.

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

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



2. Історія

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 р.



3. Розширення

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

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


3.1. STARTTLS

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

3.2. SDPS

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

Google Apps використовують той же метод [1].

4. Порівняння з IMAP

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

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


5. Стану сеансу

У протоколі POP3 передбачено 3 стану сеансу:

Авторизація
Клієнт проходить процедуру Аутентифікації.
Транзакція
Клієнт отримує інформацію про стан поштової скриньки, приймає і видаляє пошту.
Оновлення
Сервер видаляє обрані листи і закриває з'єднання.


6. Команди протоколу

Ім'я Аргументи Обмеження Можливі відповіді
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 ab
TOP
[Повідомлення]
[Кількість рядків]
Доступна після успішної ідентифікації
* + OK n octets
*-ERR no such message
QUIT
-
-
+ OK

6.1. APOP

Команда служить для передачі сервера імені користувача і пароль зашифрованим (digest).
[Ім'я] - рядок, що вказує ім'я поштової скриньки.
[Digest] - хеш-сума тимчасової мітки, конкатенірованной з паролем користувача, обчислена за алгоритмом MD5. У разі підтримки цієї команди тимчасова мітка виходить при з'єднанні з сервером.

6.2. USER

Передає серверу ім'я користувача.
[Ім'я] - рядок, що вказує ім'я поштової скриньки.

6.3. PASS

Передає серверу пароль поштової скриньки.
[Пароль] - пароль для поштової скриньки.

6.4. DELE

Сервер позначає вказане повідомлення для видалення. Повідомлення, позначені на видалення, реально видаляються тільки після закриття транзакції (закриття транзакцій відбувається зазвичай після посилу команди QUIT, крім цього, наприклад, на серверах закриття транзакцій може відбуватися після закінчення певного часу, встановленого сервером).
[Повідомлення] - номер повідомлення.

6.5. LIST

Якщо був переданий аргумент, то сервер видає інформацію про вказаний повідомленні. Якщо аргумент не був переданий, то сервер видає інформацію про всі повідомленнях, що знаходяться в поштовій скриньці. Повідомлення, позначені для видалення, не перераховуються.
[Повідомлення] - номер повідомлення (необов'язковий аргумент).

6.6. NOOP

Сервер нічого не робить, завжди відповідає позитивно.

6.7. RETR повідомлення

Сервер передає повідомлення з вказаним номером.
[Повідомлення] - номер повідомлення.

6.8. RSET

Цією командою проводиться відкат транзакцій всередині сесії. Наприклад, якщо користувач випадково помітив на видалення небудь повідомлення, він може прибрати ці позначки, відправивши цю команду.

6.9. STAT

Сервер повертає кількість повідомлень в поштовій скриньці плюс розмір, займаний цими повідомленнями на поштовій скриньці

6.10. TOP

Сервер повертає заголовки зазначеного повідомлення, порожній рядок і вказану кількість перших рядків тіла повідомлення.
[Повідомлення] - номер повідомлення.
[Кількість рядків] - скільки рядків потрібно вивести.


7. Приклад сесії

Це приклад сесії з підтримкою зашифрованих паролів (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 2320 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 

Примітки

  1. Google Apps and Gmail differences - Gmail Help - mail.google.com / support / bin / answer.py? answer = 34383