POP3, Протоколи

Спочатку сервер прослуховує TCP з'єднання на порту 110. Коли клієнт бажає скористатися сервісом POP3, він повинен встановити з'єднання з сервером. Після встановлення з'єднання сервер надсилає клієнту привітання. Клієнт та POP3 сервер обмінюються командами та відповідями (у зазначеному порядку) доти, доки з'єднання не буде закрито або перервано. Команди POP3 складаються з ключового слова, за яким може йти один або кілька параметрів. Усі команди закінчуються парою CRLF. Ключові слова та аргументи складаються з друкованих ASCII символів. Ключові слова та аргументи розділені поодиноким пропуском. Ключові слова складаються з 3-х або 4-х символів, кожен аргумент може бути довжиною до 40 символів. Відповіді складаються з індикатора стану та ключового слова. Усі відповіді закінчуються парою CRLF. В даний час є два індикатори стану: позитивний (+OK) та негативний (-ERR).

Певні відповіді може бути багаторядковими. У цьому випадку, після першого рядка відповіді CRLF, кожен додатково посланий рядок закінчується парою CRLF. Після того, як усі рядки відповіді надіслані, останній рядок закінчуватиметься завершальним октетом — символом . («.», десятковий код 46) та парою CRLF. POP3 сесія складається з кількох стадій. Після встановлення TCP з'єднання сервер посилає вітання і сесія переходить у стан AUTHORIZATION. На цьому етапі клієнт має ідентифікувати себе на сервері. Після успішної ідентифікації сесія перетворюється на стан TRANSACTION. У цій стадії клієнт вимагає виконання команд на сервері. Коли клієнт надсилає команду QUIT сесія переходить у стан UPDATE. На цьому етапі сервер POP3 звільняє всі ресурси зайняті в стадії TRANSACTION і закінчує роботу. TCP з'єднання після цьогозакривається. POP3 сервер МОЖЕ мати inactivity autologout таймер (таймер авто-завершення сесії при бездіяльності). Такий таймер ПОВИНЕН бути встановлений щонайменше на 10 хвилин. Якщо клієнт не передає серверу команди заданий інтервал часу, то сервер розриває з'єднання TCP без переходу в стан UPDATE, тобто. без видалення повідомлень та посилки будь-яких відповідей клієнту.

Стан AUTHORIZATION

Після відкриття клієнтом TCP з'єднання сервер посилає однорядкове привітання. Рядок має закінчуватися CRLF. Приклад:

Примітка: В якості вітання POP3 сервер повинен завжди надсилати позитивну відповідь.

Ось резюме за трьома командами розглянутими до теперішнього часу:

Аргументи: Рядок ідентифікації поштової скриньки (обов'язковий).

Обмеження: Може бути передана тільки в стані AUTHORIZATION після привітання POP3 або неуспішної команди USER або PASS.

Аргументи: пароль до поштової скриньки (обов'язковий).

Обмеження: Може бути передано лише у стані AUTHORIZATION після успішної команди USER.

Подробиці: Команда PASS має лише один аргумент, сервер може трактувати пробіл у параметрі як частину пароля замість роздільника аргументів.