Протокол POP3 (Post Office Protocol)



Общие сведения

 

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

           

 

1) Клиент начинает работать с установки TCP-соединения на порт 110. На этом порту должен быть сервер, который прослушивает соединение;

 

 


2) Когда соединение установлено, сервер посылает клиенту приглашение;

 

 

 


3) После этого клиент и сервер обмениваются информацией, пока соединение не будет закрыто или прервано.

 

Формат команд

 

 – клиент посылает команды, состоящие из ключевых слов, через пробел идут аргументы;

– длина ключевых слов составляет 3–4 символа;

– максимальная длина одного аргумента – 40 символов;

– каждая команда должна завершаться символами CRLF;

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

 

Состояния сеанса

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

Авторизация

Клиент проходит процедуру аутентификации.

Транзакция

Клиент получает информацию о состоянии почтового ящика, принимает и удаляет почту.

Обновление

Сервер удаляет выбранные письма и закрывает соединение.

 

 

Команды протокола POP3

 

Команда Аргументы Назначение Ограничения Возможные ответы
APOP [имя] [digest] Служит для передачи серверу имени пользователя и зашифрованного пароля (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 a b
TOP [сообщение] [количество строк] Сервер возвращает заголовки указанного сообщения, пустую строку и указанное количество первых строк тела сообщения. Доступна после успешной идентификации * +OK n octets * -ERR no such message
QUIT Переводит POP3-сервер в состояние update (обновления). В этом режиме сервер удаляет сообщения, помеченные к удалению, и завершает POP3 сессию. +OK

 

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

 

S: <Сервер ожидает входящие соединения на порту 110>

C: <подключаетсяксерверу>

S: +OKPOP3 serverready<1896.697170952@dbc.mtview.ca.us>

C: APOP mrose c4c9334bac560ecc979e58001b3e22fb

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: <сервер передаёт сообщение 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: <продолжает ждать входящие соединения>

 

ПротоколIMAP (InternetMessageAccessProtocol)

Общие сведения

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

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

Преимущества IMAP перед POP3

IMAPобладает следующими преимуществами:

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

· одновременный доступ нескольких клиентов к ящику;

· предоставление клиенту возможности отслеживать изменения, вносимые другими клиентами, которые подключены одновременно с ним;

· клиент имеет возможность отслеживать состояние сообщения (прочитано, отправлен ответ, удалено и т. д.), данные о флагах хранятся на сервере;

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

· можно использовать расширение IMAP4 Access Control List (ACL) Extension для управления правами доступа к ящикам.


 

Общая схема взаимодействия

 

 

 

Состояния сеанса

 

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

· неаутентифицированное состояние (Not Authenticated State): клиент должен пройти процедуру аутентификации прежде, чем сможет выполнять большинство команд;

· аутентифицированное состояние (Authenticated State): клиент аутентифицирован и должен выбрать почтовый ящик, прежде чем сможет работать с отдельными сообщениями;

· выбранное состояние (Selected State): почтовый ящик выбран;

· состояние выхода (Logout State): сеанс завершается.

 

Схема переходов между состояниями сеанса IMAP представлена на рисунке ниже.

 

Переходы, обозначенные цифрами:

1 – соединение без предварительной аутентификации;

2 – соединение с предварительной аутентификацией;

3 – отвергнутое соединение;

4 – успешная аутентификация;

5 – успешное выполнение команды SELECT или EXAMINE;

6 – команда CLOSE или неудачное завершение команды SELECT или EXAMINE;

7 – команда LOGOUT или потеря связи.

 

Команды протокола IMAP

Команда Аргументы Флаги Назначение Ограничения
CAPABILITY   Перечисляет возможности, поддерживаемые сервером  
NOOP   Сервер ничего не делает. Всегда отвечает положительно.  
LOGOUT   Закрывает соединение  
AUTHENTICATE [механизм]   Запрашивает альтернативный метод проверки аутентичности  
LOGIN [имя][пароль]   Указывает имя пользователя и пароль для аутентификации с передачей открытым текстом  
SELECT [имя ящика]   Открывает почтовый ящик

Доступна после успешной идентификации

EXAMINE [имя ящика]   Открывает почтовый ящик в режиме «только для чтения»
CREATE [имя объекта]   Создает новый почтовый ящик
DELETE [имя объекта]   Удаляет почтовый ящик
RENAME [имя_ящика] [новое_имя_ящика]   Изменяет имя почтового ящика
SUBSCRIBE [имя ящика]   Добавляет почтовый ящик в перечень активных
UNSUBSCRIBE [имя ящика]   Удаляет почтовый ящик из перечня активных
LIST [путь к ящику] [имя ящика]   Отображает указанные имена почтовых ящиков, выбирая из полного набора имен
LSUB [путь к ящику] [имя ящика]   Отображает указанные имена почтовых ящиков, выбирая из набора активных
STATUS [имя ящика] (имена элементов)   Отображает состояние почтового ящика
APPEND [имя_ящика] (флаги_сообщения) [метка_времени сообщение]   \ Seen – прочитано; \ Answered – написан ответ; \ Flagged – срочное; \ Deleted – помечено для удаления; \ Draft – черновик; \Recent – новое сообщение Добавляет сообщение в конец указанного почтового ящика
CHECK   Команда производит проверку выбранного почтового ящика, характер которой зависит от реализации программного обеспечения сервера.
CLOSE   Закрывает почтовый ящик и стирает все сообщения, отмеченные для удаления
EXPUNGE   Стирает из текущего почтового ящика все сообщения, отмеченные для удаления
SEARCH [кодировка] [критерий поиска]   Отображает все сообщения почтового ящика, соответствующие критерию поиска
FETCH [от_№сообщения : до_№сообщения] [имя_элемента_сообщения_или_макрос]   Извлекает сообщение из почтового ящика
STORE [от_№сообщения : до_№сообщения] [имя_элемента_данных] (список_флагов)   FLAGS – изменяет значения указанных флагов, кроме флага \Recent; FLAGS.SILENT – аналогично FLAGS, значения флагов не возвращаются; +FLAGS – устанавливает значения указанных флагов; +FLAGS.SILENT – аналогично +FLAGS, значения флагов не возвращаются; –FLAGS – сбрасывает значения указанных флагов; –FLAGS.SILENT – аналогично –FLAGS, значения флагов не возвращаются; Изменяет сообщение в почтовом ящике
COPY [от_№сообщения : до_№сообщения] [имя ящика]   Копирует указанные сообщения в конец указанного почтового ящика
UID [команда] [аргументы]   Находит сообщение по уникальному идентификатору

Пример сеанса

Условие: клиент помечает двенадцатое сообщение для удаления и завершает сеанс.

S: * OKIMAP4rev1 ServiceReady

C: A001 login mrc secret

S: A001 OK LOGIN completed

C: A002 select inbox

S: * 18 EXISTS

S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)

S: * 2 RECENT

S: * OK Message 17 is the first unseen message

S: * OK UIDs valid

S: A002 OK SELECT completed

C: A003 fetch 12 full

S: * 12 FETCH (FLAGS (\Seen) INTERNALDATE "17-Jul-1996 02:44:25 -0700" RFC822.SIZE 4286 ENVELOPE ("Wed, 17 Jul 1996 02:23:25 -0700 (PDT)" "IMAP4rev1 WG mtg summary and minutes" (("Terry Gray" NIL "gray" "cac.washington.edu")) (("Terry Gray" NIL "gray" "cac.washington.edu")) (("Terry Gray" NIL "gray" "cac.washington.edu")) ((NIL NIL "imap" "cac.washington.edu")) ((NIL NIL "minutes" "CNRI.Reston.VA.US") ("John Klensin" NIL "KLENSIN" "MIT.EDU")) NIL NIL "<B27397-0100000@cac.washington.edu>") BODY ("TEXT" "PLAIN" ("CHARSET" "US-ASCII") NIL NIL "7BIT" 3028 92))

S: A003 OK FETCH completed

C: A004 fetch 12 body

S: * 12 FETCH (BODY {342}

S: Date: Wed, 17 Jul 1996 02:23:25 -0700 (PDT)

S: From: Terry Gray gray@cac.washington.edu

S: Subject: IMAP4rev1 WG mtg summary and minutes

S: To: imap@cac.Washington.edu

S: Cc: minutes@CNRI.Reston.VA.US, John Klensin KLENSIN@MIT.EDU

S: Message-Id: B27397-0100000@cac.washington.edu

S: MIME-Version: 1.0

S: Content-Type: TEXT/PLAIN; CHARSET=US-ASCII

S:

S: )

S: A004 OK FETCH completed

C: A005 store 12 +flags \deleted

S: * 12 FETCH (FLAGS (\Seen \Deleted))

S: A005 OK +FLAGS completed

C: A006 logout

S: * BYE IMAP4rev1 server terminating connection

S: A006 OK LOGOUT completed

 


Дата добавления: 2018-08-06; просмотров: 321; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!