Протокол POP3
Post Office Protocol (POP) - протокол доставки пошти користувачеві з його поштової скриньки поштового сервера РОР. Коли пошта прийшла на сервер (по SMTP), вона розкладається по поштових скриньках. Щоб забрати пошту із скриньки потрібний POP.
Перший стандарт РОРЗ визначений в RFC 1225 (Post Office Protocol-Version 3, J. Myers, M. Rose November 1994).
Остання версія RFC1939 (J. Myers, M. Rose May 1996 )
Порт за замовчанням - 110.
Користувач може дістати доступ до РОР-серверу з будь-якої точки доступу до Інтернет.
4.1 Модель протоколу POP3

Рис. 4.1. Модель протоколу POP
2 Принцип роботи POP
У протоколі РОР3 обумовлено три стадії процесу отримання пошти:
• авторизація
• транзакція
• оновлення (завершення транзакції)
Після того, як сервер і клієнт РОРЗ встановили з'єднання, починається стадія авторизації. На стадії авторизації клієнт ідентифікує себе для сервера. Якщо авторизація пройшла успішно, сервер відкриває поштову скриньку клієнта і починається стадія транзакції. У ній клієнт або запрошує у сервера інформацію (наприклад, список поштових повідомлень), або просить його зробити певну дію (наприклад, видати поштове повідомлення). Нарешті, на стадії оновлення сеанс зв'язку закінчується.
Відповідь сервера може мати два значення:
+OK - позитивна відповідь
-ERR – негативний результат
Якщо сервер містить декілька рядків, то останній рядок повинен містити
"крапку".
Позначення: "C" - клієнт "S" - сервер
2.1 Авторизація користувача
Команди авторизації:
USER - ім'я користувача, воно є і ідентифікатором поштової скриньки.
PASS - пароль користувача
APOP - авторизація цифровим підписом (використовується рідко).
Приклад авторизації:
C: USER Pety // Користувач повідомляє своє ім’я, воно є ідентифікатором поштової скриньки
S: +ОК // Сервер повідомляє, що все в порядку
C: PASS Petypasw // Користувач повідомляє свій пароль
S: +ОК Pety's maildrop has 2 messages (320 octets) // Сервер повідомляє, в поштовому ящику Pety є 2 листи
Приклад невдалої авторизації:
C: USER Pety
S: -ERR sorry, no mailbox for Pety here
Приклад авторизації з цифровим підписом:
C: APOP Pety K3u7yG4TfR7gE55DD4ry6G4F // Ім’я та шифрований пароль
S: +ОК Pety's maildrop has 2 messages (320 octets)
2.2 Транзакції РОРЗ
Після того, як стадія авторизації закінчена, обмін переходить на стадію транзакції. У наступних прикладах демонструється можливий обмін повідомленнями на цій стадії.
Команда STAT (переглядання скриньки) повертає кількість повідомлень і загальну кількість байтів в повідомленнях:
C: STAT
S: +ОК 2 320 // 2 повідомлення, загальний розмір 320 байт
Команда LIST (без параметра) повертає список повідомлень в поштовій скриньці і їх розміри:
C: LIST
S: +ОК 2 messages (320 octets)
S: 1 120 // 1 лист, розмір 120 байт
S: 2 200 // 2 лист, роммір 200 байтS: .
Команда LIST з параметром (номер повідомлення) повертає інформацію про задане повідомлення:
C: LIST 2
S: +ОК 2 200 ...
C: LIST 3 // запит неіснуючого повідомлення
S: -ERR no such message, only 2 messages in maildrop // лист 3 відсутній
Команда TOP повертає заголовок, порожній рядок і перші n рядків тіла повідомлення:
C: TOP 1 10
S: +ОК
S: С новым годом
S:
S: <Десять рядків листа>
S: .
Команда NOOP - перевірка з'єднання:
C: NOOP
S: +ОК
Команда RETR витягує повідомлення з вказаним номером і поміщає його в буфер:
C: RETR 1
S: +OK 120 octets
S: <the POPS server sends the entire message here> // РОРЗ-сервер висилає лист повністю
S: . // "крапка" – кінець повідомлення
Команда DELE відзначає повідомлення, яке потрібно видалити:
C: DELE 1
S: +OK message 1 deleted // повідомлення 1 видалене
C: DELE 2
S: -ERR message 2 already deleted // повідомлення 2 вже видалене
Команда RSET знімає мітки видалення зі всіх відмічених раніше повідомлень:
C: RSET
S: +OK maildrop has 2 messages (320 octets) // в поточній скринці 2 повідомлення були відзначені на видалення.
Команда QUIT - перехід в режим оновлення (UPDATE):
C: QUIT
S: +OK dewey POP3 server signing off
Слід звернути увагу на те, що відмічені для видалення повідомлення насправді не видаляються до тих пір, поки не введена команда QUIT і не почалася стадія оновлення. У будь-який момент протягом сеансу клієнт має можливість видати команду RSET, і всі відмічені для видалення повідомлення будуть відновлені.
2.3 Оновлення (UPDATE)
Відбувається завершення транзакції. І видалення все помічених повідомлень.