Почтовые протоколы POP3 и IMAP

Аббревиатура POP3 в переводе с английского обозначает почтовый протокол 3-ей версии. Сущность данного термина заключается в том, что POP3 представляет собой протокол, предназначенный для работы с входящей корреспонденцией. Используя протокол POP3, почтовый клиент, в первую очередь, забирает письма, пришедшие на сервер, пересылает их на Ваш компьютер, а потом Вы можете работать с полученной корреспонденцией в почтовом клиенте, и Вам не придется дополнительно обращаться к почтовому серверу.

Протокол РОРЗ предоставляет пользователям возможность обращаться к своему серверу и изымать накопившиеся письма и сообщения. Важно знать, что пользователь может получить право доступа к РОР-серверу из любой точки доступа к Всемирной Сети. Для этого пользователя необходимо запустить почтовый агент (UA), который работает по протоколу РОРЗ, а затем выполнить его настройку для работы со своим почтовым сервером.

Таким образом, отдельный персональный компьютер находится во главе модели РОР. Данный компьютер функционирует исключительно как клиент постовой системы. Доставка сообщений клиенту осуществляется по протоколу РОР, а посылаются сообщения по-прежнему с использованием SMTP. На компьютере у пользователя имеются два агента-интерфейса к почтовой системе: отправки (SMTP) и доставки (РОР). Такую ситуация специалисты по разработке протокола РОР3 называют «раздельными агентами» (split UA). О концепции раздельных агентов коротко изложено в спецификации РОР3.

В протоколе РОР3 содержится информация о трех стадиях процесса получения корреспонденции:

  • авторизация
  • транзакция
  • обновление

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

, Mail Daemon , Dovecot

Расширяемость Доп. команды (RFC 2449)

Общие сведения [ | ]

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

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

Версии 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 [ | ]

Сравнение с IMAP [ | ]

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

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

Состояния сеанса [ | ]

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

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

Команды протокола [ | ]

Имя Аргументы Ограничения Возможные ответы
APOP [имя] Её поддержка не является обязательной * +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 message follows * -ERR no such message
RSET - Доступна после успешной аутентификации +OK
STAT - Доступна после успешной аутентификации +OK a b
TOP [сообщение] [количество строк] Доступна после успешной аутентификации * +OK n octets * -ERR no such message
QUIT - - +OK

APOP [ | ]

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

USER [ | ]

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

PASS [ | ]

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

DELE [ | ]

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

LIST [ | ]

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

NOOP [ | ]

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

RETR сообщение [ | ]

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

RSET [ | ]

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

STAT [ | ]

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

TOP [ | ]

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

В данном уроке мы рассмотрим еще один протокол электронной почты, по которому почтовые клиенты «общаются» с почтовыми серверами.

Не думаю, что Вы будете устанавливать у себя локального почтового клиента. Но, именно на примере локального почтового клиента, проще понять, что собой представляют почтовые протоколы и, в частности, протокол POP3.

Сразу хочу оговориться, что мы с Вами рассматриваем протоколы приема (извлечения) электронной почты с почтовых серверов IMAP (имап, ай-мэп) и POP3 (поп три). Но не рассматриваем (пока) протокол передачи электронной почты на почтовые сервера SMTP (эс-эм-ти-пи).

Хотя ничего особенного в протоколе SMTP нет, чуть позже вкратце мы коснемся и его.

Итак, настройка приема электронной почты по протоколу POP3.

Ничего нового изобретать не будем, а просто создадим еще одну учетную запись для нашего тестового адреса [email protected].

Для этого запускаем нашу программу клиента электронной почты, щелкаем левой кнопкой мыши по «имени» нашей единственной учетной записи «[email protected]», а затем опять левой кнопкой мыши по пункту меню создания учетной записи электронной почты.

В следующем окне заполняем поля точно так же, как мы заполняли эти поля при настройке учетной записи по протоколу IMAP. Затем щелкаем по кнопе «Продолжить».

В следующем окне нам предлагают выбор, по какому протоколу мы будем «забирать» свою почту с почтового сервера. Щелкаем левой кнопкой мыши сначала по кнопке выбора «POP3», а затем опять левой кнопкой мыши по кнопке «Готово».

Таким образом, в почтовом клиенте мы создали еще одну учетную запись, с помощью которой мы будем подключаться к почтовому серверу и забирать почту по протоколу POP3.

Папка «Входящие» пока пустая, так как клиент проверяет почту на сервере 1 раз в 10 минут. Ждать 10 минут мы не будем и проверим почту на почтовом сервере немедленно. Для этого нажмем кнопку пункта меню «Получить».

Вот здесь мы и начнем рассматривать принцип работы почты по протоколу POP3.

Почта с почтового сервера полностью «скачивается» на Ваш персональный компьютер. Другими словами копируется на Ваш компьютер в полном объеме.

И, теперь, Вы можете работать с электронной почтой полностью автономно. Почта, которая находится на Вашем персональном компьютере, теперь никак не связана с почтовым сервером, в отличие от протокола IMAP.

Но, прежде чем мы продолжим, давайте поменяем имя учетной записи электронной почты, созданной для работы с почтовым сервером по протоколу POP3.

Дело в том, что программа для имени учетной записи подставляет адрес электронной почты. А поскольку у нас две учетные записи на один электронный адрес, то получилось два одинаковых имени для разных учетных записей.

В общем, чтобы не запутаться, меняем имя «учётки».

Для этого наводим указатель мыши на имя нашей учетной записи «[email protected]» и щелкаем по ней левой кнопкой мыши. Аналогично щелкаем по пункту меню настройки учетной записи «Просмотр параметров этой учетной записи».

У нас откроется окно настроек для наших учетных записей. Меняем имя нашей «учётки». Чтобы ничего не выдумывать, я просто допишу «(pop3 )».

Теперь легче ориентироваться в наших учетных записях.

Давайте будем считать, что мы уже просмотрели всю электронную почту и она нам больше не нужна. И решили мы удалить все письма сразу. Для этого щелкаем левой кнопкой мыши по любому письму. Комбинацией клавиш «Ctrl+A» выделяем сразу все письма и нажимаем клавишу «Del» для удаления.

Вся почта удалилась и была перемещена из папки «Входящие» в папку «Удаленные».

А теперь ВНИМАНИЕ!!! Два момента.

Теперь, пока не придет новое письмо, папка «Входящие» будет пустой. Это, вроде, само собой разумеется. Но!

Давайте посмотрим, что реально твориться с нашей почтой на почтовом сервере, которую мы у себя удалили. Посмотрим через учетную запись, настроенную на протокол IMAP и через .

Вся удаленная почта осталась на почтовом сервере. Хотя больше мы ее не получаем. Хорошо это или плохо?

Здесь, скорее больше минусов, чем плюсов. Хотя кому как.

Один из «длинных» минусов это то, что объем писем со временем будет нарастать и может полностью забить почтовый ящик. Письма просто перестанут приходить.

Один из «больших» плюсов это то, что даже если мы полностью удалим свою почту на локальном компьютере, мы всегда будем знать, что у нас есть как бы «резервная копия» всех наших писем

Давайте теперь изменим один параметр у сервера.

Для этого войдем в просмотр параметров учетной записи.

Щелкаем левой кнопкой мыши по имени учетной записи «[email protected] (pop3)», затем по пункту «Просмотр параметров учетной записи», затем по пункту «Параметры сервера».

Убираем галочку напротив «Оставлять копии сообщений на сервере». Нажимаем кнопку «ОК».

Теперь давайте посмотрим, что с нашей почтой на почтовом сервере в нашем почтовом ящике.

Как мы видим, вся почта была удалена сразу после того, как мы убрали галочку напротив параметра "Оставлять копии сообщений на сервере".

Хорошо это или плохо?

Здесь есть очень большой плюс. Вам нет необходимости беспокоиться о своем почтовом ящике на сервере. Он просто никогда не переполнится, и письма будут приходить всегда.

Из больших минусов то, что если Ваш компьютер выйдет из строя, то вся почта просто потеряется, если, конечно не делали резервные копии.

Но, с другой стороны, если нет резервной копии чего-то, то это самое «чего-то» уже не восстановишь. Причем не важно, что это — почта, фотографии, документы и т.п.

В принципе, в большинстве случаев учетную запись в почтовом клиенте для получения почты с почтового сервера настраивают именно по протоколу POP3, не оставляя почту в почтовом ящике на сервере.

Но и конечно, никто никогда не создает две учетные записи для одного и того же адреса электронной почты. Хотя, как Вы видите, возможность такая существует. И сделал я две записи только для наглядного примера.

Вот в принципе и все про протоколы IMAP и POP3.

В следующем уроке мы узнаем как «привязывать» электронную почту, работая с почтовым ящиком через Вэб-интерфейс. А также рассмотрим несколько различных способов вставки картинок.

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

На этом на сегодня все. Всем удачи и творческих успехов. 🙂

21.04.05 7.7K

Базовые операции

Первоначально, сервер прослушивает 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.
Пример:

S: +OK POP3 server ready

Примечание:
В качестве приветствия POP3 сервер должен всегда посылать положительный ответ.

Теперь сессия находится в состоянии AUTHORIZATION. Клиент должен идентифицировать себя на сервере. В данном документе описано два способа, комбинация команд USER и PASS и команда APOP. Для идентификации с помощью команд USER и PASS, клиент должен сначала послать команду USER. Если сервер ответил положительным индикатором состояния (+OK), то клиент должен послать команду PASS чтобы закончить авторизацию или послать команду QUIT для завершения сессии. Если сервер отправил отрицательный ответ (-ERR) на команду USER, то можно повторить авторизацию или закончить сессию командой QUIT.
После получения команды PASS, сервер использует пару аргументов USER и PASS для определения доступа к почтовому ящику.
Как только сервер определил с помощью какой либо команды идентификации, что клиенту нужно дать доступ к соответствующему почтовому ящику, POP3 сервер получает монопольный доступ к почтовому ящику, чтобы предотвратить изменение или удаление сообщений до состояния UPDATE. Если блокировка прошла успешно, сервер посылает положительный ответ и строку приветствия. Теперь сессия переходит в состояние TRANSACTION без сообщений помеченных как удаленные. Если почтовый ящик не может быть открыт по каким либо причинам (например, не может быть выполнена блокировка или клиенту отказано в доступе к соответствующему почтовому ящику), сервер отвечает отрицательным индикатором состояния. После отрицательного ответа сервер может закрыть соединение. Если сервер не закрыл соединение, клиент может послать новую команду идентификации и начать все заново или послать команду QUIT.
После того как сервер открыл почтовый ящик, он присваивает номер каждому сообщению и отмечает размер сообщения в октетах. Первое сообщение будет иметь номер 1, следующее – номер 2 и так далее. В POP3 командах все числа представлены в десятичной системе.

Вот резюме по трем командам рассмотренным к настоящему времени:

USER имя

Аргументы:
Строка идентификации почтового ящика (обязательный).

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

Возможные ответы:

OK name is a valid mailbox -ERR never heard of mailbox name

PASS строка

Аргументы:
пароль к почтовому ящику (обязательный).

Ограничения:
Может быть передана только в состоянии AUTHORIZATION после успешной команды USER.

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

Возможные ответы:

OK maildrop locked and ready -ERR invalid password -ERR unable to lock maildrop

C: USER mrose S: +OK mrose is a real hoopy frood C: PASS secret S: +OK mrose"s maildrop has 2 messages (320 octets) ... C: USER mrose S: +OK mrose is a real hoopy frood C: PASS secret S: -ERR maildrop already locked

QUIT

Аргументы:
нет

Ограничения:
нет

Возможные ответы:

C: QUIT S: +OK dewey POP3 server signing off

Состояние TRANSACTION

После того как клиент успешно идентифицировал себя на сервере и сервер заблокировал и открыл соответствующий почтовый ящик, сессия переходит в состояние TRANSACTION. Теперь клиент может запрашивать информацию. После каждой команды сервер отправляет ответ. В конце клиент отправляет команду QUIT и сессия переходит в состояние UPDATE.

STAT

Аргументы:
нет

Ограничения:

Подробности:
POP3 сервер отправляет положительный ответ со строкой содержащей информация о почтовом ящике. Эта строка называется «drop listing». Для легкого разбора, POP3 сервера использую определенный формат для «drop listing». Положительный ответ включает в себя: индикатор состояния (+OK), дальше следуют число сообщений и размер сообщений в октетах, разделенные одиночным пробелом. Сообщения, помеченные как удаленные, не учитываются.

Возможные ответы:

C: STAT S: +OK 2 320

LIST сообщение

Аргументы:
Номер сообщения (необязательный), сообщения, помеченные как удаленные, не учитываются.

Ограничения:
Может быть передана только в состоянии TRANSACTION.

Подробности:
Если задан аргумент, сервер передает положительный ответ со строкой информации для заданного сообщения. Такая строка называется «scan listing». Если аргумент не задан и то сервер посылает многострочный ответ. После индикатора состояния (+OK), для каждого сообщения в почтовом ящике, POP3 сервер посылает строку содержащую информацию для данного сообщения. Эта строка называется “scan listing”. Все POP3 сервера используют определенный формат для “scan listing”. “scan listing” состоит из номера сообщения после которого, через одиночный пробел следует точный размер сообщения в октетах. Данный документ не указывает что должно следовать за размером сообщения, единственное требование чтобы ответ заканчивался парой CRLF. Различные расширения могут включать дополнительную информацию.

Возможные ответы:

OK scan listing follows -ERR no such message

C: LIST S: +OK 2 messages (320 octets) S: 1 120 S: 2 200 S: . ... C: LIST 2 S: +OK 2 200 ... C: LIST 3 S: -ERR no such message, only 2 messages in maildrop

RETR сообщение

Аргументы:

Ограничения:
Может быть передана только в состоянии TRANSACTION.

Подробности:
При положительном ответе, после положительного индикатора состояния сервер передает многострочный ответ, содержащий заданное сообщение.

Возможные ответы:

OK message follows -ERR no such message

DELE сообщение

Аргументы:
Номер сообщения (обязательный), сообщения, помеченные как удаленные, не учитываются.

Ограничения:
Может быть передана только в состоянии TRANSACTION.

Подробности:
POP3 сервер помечает сообщение как удаленное. Все последующие обращения к этому сообщению будут вызывать ошибку. Фактически сервер не удаляет сообщение, пока не наступит состояние UPDATE.

Возможные ответы:

OK message deleted -ERR no such message

C: DELE 1 S: +OK message 1 deleted ... C: DELE 2 S: -ERR message 2 already deleted

NOOP

Аргументы:
Нет.

Ограничения:
Может быть передана только в состоянии TRANSACTION.

Подробности:
Сервер ничего не делает и отвечает только положительно.

Возможные ответы:

RSET

Аргументы:
Нет.

Ограничения:
Может быть передана только в состоянии TRANSACTION.

Подробности:
Если сообщение было помечено как удаленное, то сервер снимает эту отметку. Ответ всегда положительный.
Возможные ответы:

Состояние UPDATE

Когда клиент посылает команду QUIT в состоянии TRANSACTION, сервер переходит на стадию UPDATE (Обратите внимание, что если клиент посылает команду в состоянии AUTHORIZATION, то сервер завершает сессию и не входит в стадию UPDATE). Если сессия завершается по каким-либо другим причинам, без посылки команды QUIT, POP3 сессия не входит в стадию UPDATE и ни одно сообщение из почтового ящика не должно быть удаленно.

QUIT

Аргументы:
Нет.

Ограничения:
Нет.

Подробности:
Сервер удаляет все сообщения помеченные как удаленные. Посылается ответ. TCP соединение закрывается.

Возможные ответы:

C: QUIT S: +OK dewey POP3 server signing off (maildrop empty) ... C: QUIT S: +OK dewey POP3 server signing off (2 messages left) ...

Необязательные команды

POP3 команды, описанные выше должны поддерживаться всеми POP3 серверами. Дополнительные команды дают клиенту большую свободу в обработке сообщений. Примечание: этот документ поощряет поддержку дополнительных команд, вместо внесений дополнительных сведений в “drop listing” и “scan listing”.

TOP сообщение n

Аргументы:
Номер сообщения (обязательный) и неотрицательное число, указывающее на количество строк тела сообщения которое сервер передаст клиенту, аргумент обязательный. Нельзя обращаться к сообщениям помеченным как удаленные.

Ограничения:
Может быть передана только в состоянии TRANSACTION.

Подробности:
После положительного ответа сервер посылает многострочный ответ. После начального +OK, сервер посылает заголовок сообщения, пустую строку и указанное количество строк из тела сообщения.

Примечание:
Если число строк, которые требует клиент, больше числа строк в сообщение, то сервер передает все сообщение полностью.

Возможные ответы:

OK top of message follows -ERR no such message

C: TOP 1 10 S: +OK S: S: . ... C: TOP 100 3 S: -ERR no such message

UIDL сообщение

Аргументы:
Номер сообщения (необязательный). Нельзя обратиться к сообщению помеченному как удаленное.

Ограничения:
Может быть передана только в состоянии TRANSACTION.

Подробности:
Если аргумент задан, сервер посылает положительный ответ со строкой содержащей информацию о заданном сообщении. Эта строка называется «unique-id listing».
Если аргумент не задан, то при положительном ответе сервер посылает многострочный ответ. После индикатора состояния (+OK), и строку содержащую информацию о сообщении.
Для упрощения синтаксического разбора все сервера должны использовать определенный формат «unique-id listing”. «unique-id listing” состоит из номера сообщения и уникального идентификатора разделенные одиночным пробелом. За уникальным идентификатором не должно следовать ни какой дополнительной информации.
Уникальный идентификатор это произвольная, определяемая сервером, строка, содержащая символы в диапазоне от 0x21 до 0x7E, которая однозначно идентифицирует сообщение в пределах почтового ящика. Идентификатор сохраняется на все время сессии. Сервер не должен многократно использовать идентификатор для данного почтового ящика, пока существует объект использующий его. Сообщения помеченные как удаленные не учитываются.

Возможные ответы:

OK unique-id listing follows -ERR no such message

C: UIDL S: +OK S: 1 whqtswO00WBw418f9t5JxYwZ S: 2 QhdPYR:00WBw1Ph7x7 S: . ... C: UIDL 2 S: +OK 2 QhdPYR:00WBw1Ph7x7 ... C: UIDL 3 S: -ERR no such message, only 2 messages in maildrop

APOP имя digest (шифрованная строка пароля)

Аргументы: Строка идентифицирующая почтовый ящик и MD5 digest (шифрованная (по алгоритму MD5) строка пароля), оба параметра обязательные.

Данный раздел находится в стадии доработки…

Резюме по командам POP3

Основные команды:

USER имя PASS строка QUIT STAT LIST сообщение RETR сообщение DELE сообщение NOOP RSET QUIT

Дополнительные команды:

APOP имя digest TOP сообщение номер UIDL сообщение

Обратите внимание что на все команды за исключением STAT, LIST и UIDL, ответ, данный сервером важно только +OK и -ERR. Любой текст встречающийся после этого ответа может игнорироваться клиентом.

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

S: wait for connection on TCP port 110 C: open connection S: +OK POP3 server ready <[email protected]> C: APOP mrose 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: S: . C: DELE 1 S: +OK message 1 deleted C: RETR 2 S: +OK 200 octets S: S: . C: DELE 2 S: +OK message 2 deleted C: QUIT S: +OK dewey POP3 server signing off (maildrop empty) C: close connection S: wait for next connection

Хорошо Плохо

POP3-порт (протокол является стандартным интернет-протоколом прикладного уровня, который применяется локальными e-mail-клиентами для извлечения данных с удаленного сервера по TCP/IP-соединению.

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

POP3-порт: обзор технологии

Протокол POP поддерживает требования загрузки и удаления для доступа к удаленным почтовым ящикам (называемым maildrop в POP RFC). Хотя большинство клиентов имеют возможность оставлять почту на сервере после загрузки, приложения электронной почты, использующие POP, обычно подключаются, получают все сообщения, сохраняют их на ПК пользователя в качестве новых сообщений, удаляют их с сервера и затем отключают.

Другие протоколы, такие как IMAP (протокол доступа к интернет-сообщениям), обеспечивают более полный и сложный удаленный доступ к типовым операциям почтового ящика. В конце 1990-х и начале 2000-х годов меньшее число провайдеров интернет-услуг поддерживали IMAP из-за пространства для хранения, которое требовалось на аппаратном обеспечении поставщика услуг.

Современные e-mail-клиенты поддерживают POP. Со временем популярное почтовое программное обеспечение добавило поддержку IMAP.

Технические особенности

Сервер работает с известным портом 110. POP3 является последним стандартом общего использования. Зашифрованная связь для протокола запрашивается, используя команду STLS или POP3S, которая подключается к серверу с использованием уровня безопасности транспортного уровня (TLS) или уровня защищенных сокетов (SSL).

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

История и документация

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

POP3 в настоящее время поддерживает несколько методов проверки подлинности, чтобы обеспечить различные уровни защиты от незаконного доступа к электронной почте пользователя. Большинство из них обеспечивается механизмами расширения POP3. Клиенты поддерживают методы аутентификации SASL через расширение AUTH. Проект MIT Athena также выпустил версию Kerberized. RFC 1460 представил APOP в основной протокол. APOP - это протокол вызова/ответа, который использует хэш-функцию MD5, чтобы избежать повторных попыток и нарушения конфиденциальности.

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

Расширения и спецификации

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

Расширения в официальной документации называются возможностями и перечислены командой CAPA. За исключением APOP, необязательные команды были включены в начальный набор возможностей.

Расширения STARTTLS и SDPS

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

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

Протокол Kerberized Post Office

При вычислении локальные клиенты электронной почты могут использовать интернет-протокол Kerberized Post Office Protocol (KPOP), для получения электронной почты с удаленного сервера по TCP/IP-соединению. Протокол KPOP основан на протоколе POP3 с различиями в том, что он добавляет безопасность Kerberos и работает по умолчанию по номеру TCP-порта 1109 вместо 110. Одна версия программного обеспечения для почтового сервера находится на сервере Cyrus IMAP.

Сравнение с IMAP

POP3 SSL порт — гораздо более простой протокол, упрощающий реализацию. Почта перемещает сообщение с сервера электронной почты на ваш локальный компьютер, хотя обычно есть возможность оставить сообщения на сервере электронной почты.

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

POP обрабатывает почтовый ящик, как один магазин, и не имеет понятия о папках.

Клиент IMAP выполняет сложные запросы, запрашивает сервер для заголовков или содержания определенных сообщений или ищет письма, соответствующие определенным критериям. Сообщения в почтовом репозитории могут быть отмечены различными флагами состояния (например, «удалены» или «ответы»), и они остаются в хранилище до тех пор, пока пользователь явно не удалит их.

IMAP предназначен для управления удаленными почтовыми ящиками, как если бы они были локальными. В зависимости от реализации клиента IMAP и почтовой архитектуры, требуемой системным менеджером, пользователь может сохранять сообщения непосредственно на клиентской машине или сохранять их на сервере, или им предоставляется выбор.

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

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

IMAP поддерживает флаги на сервере, чтобы отслеживать состояние сообщения: например, было ли прочитано сообщение, предоставлен ли ответ, удалено ли письмо.

Что такое POP и IMAP и какой из них следует использовать для электронной почты?

Если вы когда-либо настраивали почтовый клиент или приложение, вы наверняка сталкивались с условиями портов POP3, SMTP и IMAP. Вы помните, какой из них вы выбрали и почему? Если вы не совсем уверены, что означают эти условия и как каждый влияет на вашу учетную запись электронной почты, то информация ниже прольет некоторый свет на этот вопрос. В статье объясняется, как работают POP и IMAP, и поможет вам решить, какой из них лучше всего соответствует вашим потребностям.

Исходным протоколом является POP. Он был создан в 1984 году как средство для загрузки электронных писем с удаленного сервера. IMAP был разработан в 1986 году для обеспечения удаленного доступа к электронным письмам, хранящимся на удаленном сервере. По сути, основное отличие двух протоколов заключается в том, что POP загружает электронные письма с сервера для постоянного локального хранилища, в то время как IMAP оставляет их на сервере и просто кэширует (временно хранит) письма локально. Другими словами, IMAP — это форма облачного хранилища.

Отличительные особенности POP и IMAP?

Эти два протокола лучше всего сравнивать, рассматривая их основные рабочие процессы.

Рабочий процесс POP:

  • подключение к серверу;
  • получение почты;
  • локальное хранение данных;
  • удаление корреспонденции с сервера;
  • отключение.

Поведение POP по умолчанию — это удаление почты с сервера. Однако большинство клиентов также предоставляют возможность оставить копию загруженной почты на сервере.

По умолчанию порты POP3:

  • порт 110 - незашифрованный порт;
  • порт 995 - порт SSL / TLS, также известный как POP3S.

Рабочий процесс IMAP:

  • подключение к серверу;
  • извлечение запрошенного пользователем контента и локальное кэширование (список новых писем, резюме сообщений или содержание выбранных писем);
  • обработка пользовательских изменений, например, маркировка прочитанных писем, удаление данных;
  • отключение.

Как вы можете видеть, рабочий процесс IMAP немного сложнее, чем POP. По сути, структуры папок и электронные письма хранятся на сервере, и только копии - локально. Как правило, эти локальные копии хранятся временно. Тем не менее, доступно хранение их на постоянной основе.

По умолчанию порты IMAP:

  • порт 143 - незашифрованный порт;
  • порт 993 - порт SSL / TLS, также известный как IMAPS.

Каковы преимущества POP?

Будучи исходным протоколом, POP следует упрощенной идее, что только один клиент требует доступа к почте на сервере и что письма лучше всего хранятся локально. Это приводит к следующим преимуществам:

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

В чем преимущества IMAP?

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

В результате IMAP имеет следующие преимущества:

  • почта, хранящаяся на удаленном сервере, доступна из нескольких мест;
  • для доступа к почте необходимо подключение к Интернету;
  • более быстрый обзор, поскольку загружаются только заголовки, пока контент не будет запрошен явно;
  • почта автоматически резервируется, если сервер управляется должным образом;
  • сохраняется местное пространство для хранения;
  • возможность хранить почту локально.

Какой протокол электронной почты является лучшим?

Выбор протокола зависит от ваших конкретных потребностей и текущей рабочей ситуации. Нижеследующие пункты должны помочь принять окончательное решение.

Выберите POP, если:

  • Вы хотите получить доступ к своей почте только с одного устройства.
  • Вам необходим постоянный доступ к вашей электронной почте, независимо от доступности Интернета.
  • У вас ограниченное хранение на сервере.

Выберите IMAP, если:

  • Вы хотите получить доступ к своей электронной почте с нескольких устройств.
  • У вас есть надежное и постоянное подключение к Интернету.
  • Вы хотите получить краткий обзор новых писем или писем на сервере.
  • Ваше местное хранилище ограничено.
  • Вы беспокоитесь о поддержке своих электронных писем.

Если у вас есть сомнения, обратитесь к IMAP. Это более современный протокол, который позволяет вам быть гибким, и ваша электронная почта автоматически резервируется на сервере. Кроме того, серверное пространство обычно не является проблемой в наши дни, и вы все равно сможете хранить важные электронные письма локально.

Ошибки почтового клиента

Если вы сталкиваетесь с ошибкой POP3, порт: 995, Secure (SSL) с номером 0x800C0133 при попытке проверить свой Gmail, то попробуйте сжать свои почтовые папки. В POP-клиенте выберите «Файл» > «Папка» > «Сжать все папки». Это должно устранить проблему.

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то