WeBinstruments

Инструментарий для веб-мастеров

 

Техподдержка и
сопровождение
сайтов


на сайте на всех сайтах для веб разработчиков везде
 
 Скрипты
  PHP скрипты   
  Flash скрипты   
  Javascript скрипты   

 Софт
  Инструменты SEO   
  Разработка сайтов   
  Серверное ПО   

 Документация
  MySQL   
  PHP   
  HTML   
  Протоколы и сервисы Internet   

 Статьи
  PHP   
  MySQL   
  Сервер   
  еще...   

 Услуги и сервисы
  Домены   
  Хостинги   
  Блоки для сайта   

 Новости


 Контакты
  icq: 158325531
  email:
  все контакты: здесь




Atom все поступления
Раздел Новости
Раздел Услуги и сервисы
Раздел Статьи
Раздел Файлы
комментарии

Главная / Файлы / Документация / Протоколы и сервисы Internet / Описание почтового протокола POP3


Описание почтового протокола POP3

29.08.2007


Краткое, но достаточно емкое описание почтового протокола POP3.

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

Команды POP3 состоят из ключевых слов, за некоторыми следует один или более аргументов. Все команды заканчиваются парой CRLF (в Visual Basic константа vbCrLf). Ключевые слова и аргументы состоят из печатаемых ASCII символов. Ключевое слово и аргументы разделены одиночным пробелом. Ключевое слово состоит от 3-х до 4-х символов, а аргумент может быть длиной до 40-ка символов.

Ответы в POP3 состоят из индикатора состояния и ключевого слова, за которым может следовать дополнительная информация. Ответ заканчивается парой CRLF. Существует только два индикатора состояния: "+OK" - положительный и "-ERR" - отрицательный.

Ответы на некоторые команды могут состоять из нескольких строк. В этих случаях каждая строка разделена парой CRLF, а конец ответа заканчивается ASCII символом 46 (".") и парой CRLF.

POP3 сессия состоит из нескольких режимов. Как только соединение с сервером было установлено и сервер отправил приглашение, то сессия переходит в режим авторизации. В этом режиме клиент должен идентифицировать себя на сервере. После успешной идентификации сессия переходит в режим транзакции. В этом режиме клиент запрашивает сервер выполнить определённые команды. Когда клиент отправляет команду QUIT, сессия переходит в режим обновления. В этом режиме POP3 сервер освобождает все занятые ресурсы и завершает работу. После этого TCP соединение закрывается.

Список команд pop3, которые посылаются серверу после соединения:

Команда pop3 СинтаксисОписание
USER name

С: USER frated

S: -ERR sorry, no mailbox for frated here

ИЛИ

С: USER mrose

S: +OK mrose is a real hoopy frood

Когда РОРЗ -сессия находится в состоянии аутентификации (AUTHORIZATION), и клиент должен зарегистрировать себя на РОРЗ -сервере. Это может быть выполнено либо с помощью команд USER и PASS — ввод открытых пользовательского идентификатора и пароля (именно этот способ используется чаще), либо командой АРОР — аутентификация цифровой подписью, на базе секретного ключа. Любой РОРЗ -сервер должен поддерживать хотя бы один из механизмов аутентификации.

Аргументом — "name" является строка, идентифицирующая почтовый ящик системы. Этот идентификатор должен быть уникальным в данной почтовой системе РОРЗ -сервера. Если ответом на эту команду является строка индикатора "+OK", клиент может отправлять команду PASS — ввод пароля или QUIT — завершить сессию. Если ответом является строка "-ERR", клиент может либо повторить команду USER, либо закрыть сессию

PASS string

С: USER mrose

S: +OK mrose is a real hoopy frood

С: PASS secret

S: -ERR maildrop already locked

ИЛИ

С: USER mrose

S: +OK mrose is a real hoopy frood

C: PASS secret

S: +OK mrose's maildrop has 2 messages (320 octets)

Аргументом команды является строка пароля данного почтового ящика. После получения команды PASS, РОРЗ -сервер, на основании аргументов команд USER и PASS, определяет возможность доступа к заданному почтовому ящику. Если РОРЗ -сервер ответил "+OK", это означает, что аутентификация клиента прошла успешно и он может работать со своим почтовым ящиком, т. е. сессия переходит в состояние TRANSACTION. Если РОРЗ- сервер ответил "-ERR", то либо был введен неверный пароль, либо не найден указанный почтовый ящик
STAT

Формат ответа: "+ОК nn mm", где nn — количество сообщений, mm — их общий объем:

С: STAT

S: +ОК 2 320

В этом примере РОРЗ -сервер сообщает, что в данном почтовом ящике находятся два сообщения общим объемом 320 байт.

После того как клиент успешно прошел процедуру аутентификации в РОРЗ- сервере, и РОРЗ- сервер "закрыл" определенный почтовый ящик только для использования данным клиентом (для тех, кто работал с базами данных, это называется EXCLUSIVE ACCESS LOCK), РОРЗ- сессия переходит в режим TRANSACTION, и клиент может начать работу со своей почтой

Команда STAT (без аргументов) используется для просмотра состояния текущего почтового ящика.

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

LIST [msg]

С: LIST

S: +ОК 2 messages (320 octets)

S: 1 120

S: 2 200

S: .

ИЛИ

С: LIST 2

S: +ОК 2 200

ИЛИ

С: LIST 3

S: -ERR no such message, only 2 messages in maildrop

Команда LIST может передаваться как с аргументом msg — номером сообщения, так и без аргумента.

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

RETR msg

С: RETR 1

S: +ОК 120 octets

S: <text message>

S: .

Используется для передачи клиенту запрашиваемого сообщения. Аргумент команды — номер сообщения. Если запрашиваемого сообщения нет, возвращается отрицательный индикатор "-ERR".
DELE msg

С: DELE 1

S: +ОК message 1 deleted

ИЛИ

С: DELE 2

S: -ERR message 2 already deleted

Аргумент команды— номер сообщения. Сообщения, помеченные на удаление, реально удаляются только после закрытия транзакции при отправке команды QUIT.
NOOP

С: NOOP

S: +ОК

Для проверки состояния соединения с РОРЗ- сервером используется команда NOOP. При активном соединении ответом на нее будет положительный индикатор "+ОК":
RSET

С: RSET

S: +OK maildrop has 2 messages (320 octets)

Для отката транзакции внутри сессии используется команда RSET (без аргументов). Если пользователь случайно пометил на удаление какие-либо сообщения, он может убрать эти пометки, отправив эту команду:
TOP msg n

С ТОР 1 10

S +OK

S <header>

S <blank>

S <message body>

S .

По этой команде пользователь может получить "n" первых строк сообщения с номером "msg". РОРЗ- сервер по запросу клиента отправляет заголовок сообщения, затем пустую строку, затем требуемое количество строк сообщения (если количество строк в сообщении меньше указанного в параметре "n", пользователю передается все сообщение).
АРОР name digest

S: +OK РОРЗ server ready 1896.697170952@dbc.mtview.ca.us

С: АРОР mrose c4c9334bac560ecc979e58001b3e22fb

S: +OK maildrop has 1 message (369 octets)

 

Алгоритм на основании открытого ключа "tanstaaf и временной метки

< 1896.697170952@dbc.rnt.view.ca.us> построил шифрованную строку "c4c9334bac560ecc979e5800Ib3e22fb".

Команда аутентификации пользователя АРОР не входит в список обязательно реализуемых команд РОРЗ -сервера. Эта команда предоставляет значительно больший (по сравнению с командами USER или PASS) уровень защиты аутентификации пользователя при открытии сессии AUTHORIZATION и используется только тогда, когда к обеспечению конфиденциальности доступа к информации почтовых ящиков предъявляются повышенные требования. Эта команда может быть передана клиентом РОРЗ -сервера после получения приветственного сообщения или после ошибки обработки команд USER/PASS.

Аргументами команды являются: name — имя пользователя (то же, что и в команде USER), digest — шифрованная (по алгоритму MD5) строка пароля. Применяемый здесь алгоритм необратимого шифрования для построения секретного ключа использует открытый ключ и временную метку. Временные метки передаются хосту клиента вместе с сообщением приветствия. Например, для UNIX-машин временная метка может иметь вид: <process-ID.clock@hostname>, где process-ID — это идентификатор процесса, clock — состояние таймера на момент установления соединения, hostname — имя компьютера РОРЗ -сервера. Этот механизм позволяет достичь очень высокой степени защищенности. Далее показан пример работы команды АРОР

QUIT

С: QUIT

S: +ОК dewey POP3 server signing off

К командам состояния AUTHORIZATION может относиться команда закрытия РОРЗ- сессии — QUIT, если она была отправлена в режиме AUTHORIZATION (например, при вводе неправильного пароля или идентификатора пользователя):

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

Пример работы с POP сервером

S: <wait for connection on TCP port 110>

C: <open connection>

S: +OK РОРЗ server ready

С: USER mrose

S: +OK mrose is a real hoopy frood

С: PASS secret

S: +OK mrose's maildrop has 2 messages (320 octets)

С: STAT

S: +OK 2 320

С: LIST

S: +OK 2 messages (320 octets)

S: 1 120

S: 2 200

S: .

С: RETR 1

S: +OK 120 octets

S: <the РОРЗ server sends message 1>

S: .

С: DELE 1

S: +OK message 1 deleted

С: RETR 2

S: +OK 200 octets

S: <the РОРЗ server sends message 2>

S: .

С: DELE 2

S: +OK message 2 deleted

С: QUIT

S: +OK dewey РОРЗ server signing off (maildrop empty)

С: <close connection>

S: <wait for next connection>




Комментарии

RSS комментарии


13.02.2009 Алексей
Подскажите, почему после прочтения сообщения командой RETR их больше не видно? Их можно как-то вернуть?



25.05.2009 оюн
РОРЗ server ready



28.05.2009 дарья
класс!!! то что нужно ребёнку!!!



Добавить свой комментарий


Ваше имя(* обязательно)


Текст сообщения(* обязательно)









 
 
  запомнить

 
Copyright © 2003-2017 WeBi Constructor
Rambler's Top100