Опубликован: 10.10.2007 | Уровень: специалист | Доступ: платный
Лекция 4:

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

Команды клиента в состоянии выбор сделан

В состоянии выбор сделан разрешены команды, которые манипулируют сообщениями в почтовом ящике. Помимо универсальных команд (CAPABILITY, NOOP и LOGOUT), а также команд режима аутентификации (SELECT, EXAMINE, CREATE, DELETE, RENAME, SUBSCRIBE, UNSUBSCRIBE, LIST, LSUB, STATUS и APPEND), в данном режиме доступны следующие команды: CHECK, CLOSE, EXPUNGE, SEARCH, FETCH, STORE, COPY и UID.

Команда CHECK

Аргументы: отсутствуют.
Отклики: Команда не требует какого-либо специального отклика;
Результат: OK проверка завершена;
BAD команда неизвестна или неверен аргумент.

Команда CHECK осуществляет проверку выбранного почтового ящика. Проверка относится к любым характеристикам, зависящим от реализации (например, выявление положения почтового ящика в памяти сервера и на диске). Если сервер не поддерживает таких возможностей, команда эквивалентна NOOP.

Не существует гарантии, что в результате CHECK будет прислан немаркированный отклик. Для проверки поступления новой почты следует использовать команду NOOP, а не CHECK.

Команда CLOSE

Аргументы: отсутствуют.
Отклики: команда не требует какого-либо специального отклика.
Результат: OK команда выполнена, система в состоянии "аутентификация выполнена";
NO команда не прошла, никакого ящика не выбрано;
BAD команда неизвестна или неверен аргумент.

Команда CLOSE навечно удаляет из выбранного почтового ящика все сообщения, помеченные флагом \Deleted, и возвращает систему в состояние "аутентификация выполнена". Никакого немаркированного отклика EXPUNGE не посылается.

Никаких сообщений не удаляется и никаких флагов ошибки не возвращается, если почтовый ящик был выбран командой EXAMINE или находился в режиме "только для чтения".

Даже если почтовый ящик выбран, команды SELECT, EXAMINE или LOGOUT могут быть использованы без предварительного исполнения команды CLOSE. Команды SELECT, EXAMINE и LOGOUT безоговорочно закрывают выбранный в данный момент почтовый ящик без удаления сообщений. Однако когда удалено много сообщений, последовательность CLOSE-LOGOUT или CLOSE-SELECT значительно быстрее, чем EXPUNGE-LOGOUT или EXPUNGE-SELECT, так как здесь не посылается никаких немаркированных откликов EXPUNGE (которые клиент, вероятно, проигнорирует).

Команда EXPUNGE

Аргументы: отсутствуют.
Отклики: немаркированные отклики: EXPUNGE.
Результат: OK команда успешно завершена;
NO команда не прошла: стирание не выполнено (например, запрещено);
BAD команда неизвестна или неверен аргумент.

Команда EXPUNGE навечно удаляет из выбранного почтового ящика все сообщения, которые помечены флагами \Deleted. Прежде чем выдать клиенту сигнал OK, посылается немаркированный отклик EXPUNGE для каждого из удаляемых сообщений.

Пример:

C: A202 EXPUNGE
S: * 3 EXPUNGE
S: * 3 EXPUNGE
S: * 5 EXPUNGE
S: * 8 EXPUNGE
S: A202 OK EXPUNGE completed

Замечание: в этом примере сообщения 3, 4, 7 и 11 имеют установленный флаг \Deleted. Следует учитывать, что после каждого удаления сообщения перенумеруются.

Команда SEARCH

Аргументы: опционны, [CHARSET]-спецификация.
Критерии поиска (один или более).
Отклики: необходим немаркированный отклик: SEARCH.
Результат: OK поиск завершен;
NO ошибка: поиск для данного набора символов [CHARSET] или критериев невозможен;
BAD команда неизвестна или неверен аргумент.

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

Когда специфицировано несколько ключей, результатом является (функция AND) совокупность всех сообщений, отвечающая заданным критериям. Например, критерий DELETED FROM "SMITH" SINCE 1-Feb-1994 относится ко всем стертым сообщениям от Смита, которые были положены в почтовый ящик после 1-го февраля 1994.

Опционная спецификация [CHARSET] состоит из слова "CHARSET", за которым следует зарегистрированное наименование символьного набора [CHARSET]. Он включает в себя [CHARSET] строк, которые используются в качестве критерия отбора. Транспортное кодирование содержимого [MIME-IMB] и строки [MIME-HDRS] в [RFC-822]/[MIME-IMB] заголовках должны декодироваться перед сравнением текста в представлении [CHARSET], отличном от US-ASCII. US-ASCII должно поддерживаться всегда, но могут применяться и другие символьные наборы. Если сервер не поддерживает специфицированный набор символов [CHARSET], он должен вернуть маркированный отклик NO (но не BAD).

Для всех ключей поиска, которые используют строки, сообщение соответствует ключу, если строка является частью строки поля в сообщении. Соответствие не должно зависеть от набора строчными или прописными символами. Стандартными ключами поиска являются следующие слова и выражения (таблица 1.11).

Таблица 1.11.
<набор сообщений> Сообщения с номерами, соответствующими специфицированному набору номеров
ALL Все сообщения в почтовом ящике. Ключ отбора по умолчанию для применения команд AND
ANSWERED Сообщения с установленным флагом \Answered
BCC <строка> Сообщения, которые содержат специфицированную строку в поле BCC структуры заголовка сообщения
BEFORE <дата> Сообщения, чьи внутренние даты раньше указанной
BODY <строка> Сообщения, которые содержат специфицированную строку в теле сообщения
CC <строка> Сообщения, которые содержат специфицированную строку в CC поле заголовка
DELETED Сообщения с установленным флагом \Deleted
DRAFT Сообщения с установленным флагом \Draft
FLAGGED Сообщения c установленным флагом \Flagged
FROM <строка> Сообщения, которые содержат специфицированную строку в поле FROM заголовка
HEADER <имя поля><строка> Сообщения, которые содержат заголовок со специфицированным именем поля (в соответствии с [RFC-822]) и специфицированную строку в теле данного поля.
KEYWORD <флаг> Сообщения со специфицированным ключевыми словами.
LARGER <n> Сообщения с размером [RFC-822] больше, чем специфицированное число октетов
NEW Сообщения, которые имеют установленный флаг \Recent, но не имеют флага \Seen. Это функционально эквивалентно "(RECENT UNSEEN)"
NOT <ключ поиска> Сообщения, которые не содержат специфицированного ключевого слова
OLD Сообщения, которые не имеют флага \Recent. "NOT RECENT" (противоположно "NOT NEW")
ON <дата> Сообщения, чья внутренняя дата соответствует специфицированному значению даты
OR <ключ поиска 1> <ключ поиска 2> Сообщения, которые соответствуют любому из ключевых слов поиска
RECENT Сообщения, которые имеют установленный флаг\Recent.
SEEN Сообщения, которые имеют установленный флаг\Seen
SENTBEFORE <дата> Сообщения, чье содержимое заголовка соответствует дате ранее специфицированного значения [RFC-822]
SENTON <дата> Сообщения, чье содержимое заголовка соответствует специфицированной дате [RFC-822]
SENTSINCE <дата> Сообщения, чье содержимое заголовка соответствует [RFC-822]: специфицированному значению даты или позже.
SINCE <дата> Сообщения, чья внутренняя дата соответствует или позже специфицированного значения
SMALLER <n> Сообщения с размером [RFC-822] меньше, чем специфицированное число октетов
SUBJECT <строка> Сообщения, которое содержит специфицированную строку в поле SUBJECT заголовка
TEXT <строка> Сообщения, которые содержат специфицированную строку в заголовке или теле сообщения
TO <строка> Сообщения, которые содержат специфицированную строку в поле заголовка TO
UID <набор сообщений> Сообщения с уникальными идентификаторами, соответствующими заданному значению идентификатора
UNANSWERED Сообщения, которые не имеют флага \Answered
UNDELETED Сообщения, которые не имеют флага \Deleted
UNDRAFT Сообщения, которые не имеют флага \Draft
UNFLAGGED Сообщения, которые не имеют флага \Flagged
UNKEYWORD <флаг> Сообщения, которые не содержат заданных ключевых слов
UNSEEN Сообщения, которые не имеют флага \Seen

Пример:

C: A282 SEARCH FLAGGED SINCE 1-Feb-1994 NOT FROM "Smith"
S: * SEARCH 2 84 882
S: A282 OK SEARCH completed
Наталья Шульга
Наталья Шульга

Курс "информационная безопасность" .

Можно ли на него записаться на ПЕРЕПОДГОТОВКУ по данному курсу? Выдается ли диплом в бумажном варианте и высылается ли он по почте?

Нияз Сабиров
Нияз Сабиров

Здравствуйте. А уточните, пожалуйста, по какой причине стоимость изменилась? Была стоимость в 1 рубль, стала в 9900 рублей.

Антон Шавергин
Антон Шавергин
Россия
Степан Крупа
Степан Крупа
Украина, Львів, СЗШ №65, 2012