РД 45.134-2000, часть 4
Реализации должны кодировать бинарные данные в текстовую форму, такую как BASE64, перед выполнением передачи. Строка, включающая символы CTL, также может считаться бинарной.
3.2. Атрибуты почтовых сообщений
3.2.1. Уникальный номер почтового сообщения (UID), порядковый номер почтового сообщения и идентификатор валидности
Длина уникального идентификатора должна составлять 32 бита.
Длина идентификатора валидности должна составлять 32 бита.
UID должны выделяться в строго возрастающем порядке для вновь поступающих сообщений. Два соседних UID могут отличаться более, чем на 1. UID могут сохраняться неизменными для различных сессий. В случае, если UID не сохраняется для различных сессий, вновь выделяемые UID должны быть больше, чем UID, использованные предыдущими сессиями.
При удалении почтового ящика и создании почтового ящика с таким же именем, идентификатор валидности нового почтового ящика должен быть отличным от предыдущего.
Два соседних порядковых номера сообщения должны отличаться точно на 1. Порядковые номера сообщений могут изменяться в течение сессии.
3.2.2. Флаги почтового сообщения
Должны быть реализованы флаги:
\Seen
\Answered
\Flagged
\Deleted
\Draft
\Recent
Могут быть реализованы дополнительные флаги.
3 .3. Команды
Сообщения, направляемые от клиента серверу, называются командами.
Формат команд приведен в п.5.
Список команд с описанием назначения приведен в табл.1.
Таблица 1
Список команд.
Команда |
CAPABILITY |
Аргументы |
- |
Описание |
Запрашивает список возможностей, поддерживаемых сервером. Сервер должен ответить единственным ответом CAPABILIT Y без тега с указанием "IMAP4rev1", в качестве одной из возможностей в списке, а затем ответом OK с тегом. Выдаваемый список не должен зависеть от состояния или клиента. |
Возможные ответы без тега |
Обязательный ответ без тега: CAPABILITY |
Возможные ответы с тегом |
OK - команда выполнена BAD - неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Любое состояние |
|
|
Команда |
NOOP |
Аргументы |
- |
Описание |
Нет операции. |
Возможные ответы без тега |
- |
Возможные ответы с тегом |
OK - команда выполнена BAD - неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Любое состояние |
Команда |
LOGOUT |
Аргументы |
- |
Описание |
Команда информирует сервер, что клиент хочет закрыть соединение. |
Возможные ответы без тега |
Обязательный ответ без тега: BYE |
Возможные ответы с тегом |
OK - команда выполнена BAD - неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Любое состояние |
Команда |
AUTHENTICATE < am> |
Аргументы |
am - название механизма идентификации |
Описание |
По этой команде сервер начинает процесс идентификации в соответствии с указанным механизмом по RFC 1731 [6] . Сервер может также согласовать механизм дополнительной защиты для последующих взаимодействий протокола. Если механизм идентификации не поддерживается, сервер должен ответить NO и отклонить команду. При успешной идентификации выдается сообщение OK, и сервер переходит в состояние Authenticated. |
Возможные ответы без тега |
Могут быть запрошены данные продолжения |
Возможные ответы с тегом |
OK - идентификация выполнена NO - идентификация не выполнена, механизм идентификации не поддерживается BAD - неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Not-Authenticated |
Команда |
LOGIN < user> < pass> |
Аргументы |
user - идентификатор клиента pass – пароль |
Описание |
Идентификация клиента и пересылка серверу незакодированного текстового пароля. |
Возможные ответы без тега |
|
Возможные ответы с тегом |
OK - идентификация выполнена, состояние authenticated NO - идентификация не выполнена BAD - неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Not-Authenticated |
Команда |
SELECT < mn> |
Аргументы |
mn - имя почтового ящика |
Описание |
Команда выбирает почтовый ящик для доступа к его сообщениям. Если клиенту разрешено модифицировать почтовый ящик, сервер может в ответе с тегом OK перед текстом указать код ответа "[READ-WRITE]" Если клиенту не разрешено модифицировать почтовый ящик, сервер должен в ответе с тегом OK перед текстом указать код ответа "[READ-ONLY]" |
Возможные ответы без тега |
Обязательные ответы без тега: FLAGS, EXISTS, RECENT Необязательные ответы ОК без тега: UNSEEN, PERMANENTFLAGS |
Возможные ответы с тегом |
OK - выбор выполнен, состояние selected NO - ошибка выбора, состояние authenticated BAD – неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Authenticated, Selected |
Команда |
EXAMINE < mn> |
Аргументы |
mn - имя почтового ящика |
Описание |
Команда EXAMINE является идентичной команде SELECT. Выбранный почтовый ящик всегда открывается без разрешения модификации (READ-ONLY). |
Возможные ответы без тега |
Обязательные: FLAGS, EXISTS, RECENT Необязательные ответы OK: UNSEEN, PERMANENTFLAGS |
Возможные ответы с тегом |
OK - команда выполнена, состояние selected NO - ошибка выбора, состояние authenticated BAD – неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Authenticated, Selected |
Команда |
CREATE < mn> |
Аргументы |
mn - имя почтового ящика |
Описание |
Создание почтового ящика с заданным именем. В случае, если клиент намерен создать иерархический почтовый ящик, после имени почтового ящика может следовать символ отделения уровня иерархии. Сервер, для которого не требуется подобный символ, должен его игнорировать. Если символ отделения уровня иерархии появляется внутри имени почтового ящика, сервер может создавать почтовые ящики (несколько почтовых ящиков) таким образом, чтобы их структура соответствовала заданному имени. Например, при попытке создать ящик "foo/bar/zap" (символ “ /" является отделителем иерархии) сервер создает иерархические ящики foo/, foo/bar и foo/bar/zap. Если новый почтовый ящик создается с таким же именем, как и ранее удаленный почтовый ящик, сервер должен выделить для нового ящика идентификационный номер больший, чем номера предыдущих ящиков с таким же именем, если только новый ящик не имеет другое уникальное значение валидности идентификатора. |
Возможные ответы без тега |
- |
Возможные ответы с тегом |
OK - команда выполнена NO - ошибка создания BAD – неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Authenticated, Selected |
Команда |
DELETE < mn> |
Аргументы |
mn - имя почтового ящика |
Описание |
Удаление почтового ящика. Команда не должна удалять ящики низших иерархических имен при удалении ящика высшего иерархического имени. (Удаление foo не должно удалить foo/bar) . Является ошибкой попытка удаления ящика высших иерархических имен, клиентом почтового ящика имеющего низшие иерархические имена и атрибут /Noselect. Команда может удалять ящики высшего иерархического имени без атрибута /Noselect. При этом все сообщения из данного почтового ящика удаляются и устанавливается атрибут /Noselect. |
Возможные ответы без тега |
- |
Возможные ответы с тегом |
OK - команда выполнена NO - ошибка удаления BAD – неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Authenticated, Selected |
Команда |
RENAME < exmn> < newmn> |
Аргументы |
exmn – существующее имя с почтового ящика newmn - новое имя почтового ящика |
Описание |
Изменяет имя почтового ящика. Ошибкой является попытка переименования несуществующего почтового ящика или попытка назначения существующего имени. Низшие иерархические имена должны переименовываться. При переименовании почтового ящика INBOX должен быть создан почтовый ящик с новым именем и в него перенесены все сообщения из ящика INBOX, а ящик INBOX должен после выполнения команды остаться пустым. При поддержке сервером низших иерархических имен в ящике INBOX после команды переименования INBOX низшие иерархические имена должны оставаться неизмененными. |
Возможные ответы без тега |
- |
Возможные ответы с тегом |
OK - команда выполнена NO - ошибка удаления BAD – неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Authenticated, Selected |
Команда |
SUBSCRIBE < mb> |
Аргументы |
mb - почтовый ящик |
Описание |
Добавляет заданное имя почтового ящика к набору активных (подписанных) почтовых ящиков. Сервер может выполнять проверку существования почтового ящика перед занесением его в активный список. Сервер не должен в одностороннем порядке удалять имя почтового ящика из списка активных в случае, если ящика с таким именем больше не существует. |
Возможные ответы без тега |
- |
Возможные ответы с тегом |
OK - команда выполнена NO - ошибка выполнения команды BAD - неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Authenticated, Selected |
Команда |
UNSUBSCRIBE < mb> |
Аргументы |
mb - почтовый ящик |
Описание |
Удаляет заданное имя почтового ящика из списка активных (подписанных) почтовых ящиков. |
Возможные ответы без тега |
- |
Возможные ответы с тегом |
OK - команда выполнена NO - ошибка выполнения команды BAD - неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Authenticated, Selected |
Команда |
LIST < rn> < mn> |
Аргументы |
rn - ссылочное имя mn - шаблон имени почтового ящика |
Описание |
Возвращает подмножество имен полного множества имен, доступных для клиента и удовлетворяющих сочетанию ссылочного имени и шаблона Почтового ящика. Пустое ссылочное имя показывает, что необходимо взять имя почтового ящика, выбранного командой SELECT. Возвращаемые имена почтовых ящиков должны удовлетворять шаблону. При пустом шаблоне имени почтового ящика должно быть возвращено корневое имя от ссылочного име- ни. |
Возможные ответы без тега |
LIST |
Возможные ответы с тегом |
OK - команда выполнена NO - ошибка выполнения команды BAD – неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Authenticated, Selected |
Команда |
LSUB < rn> < mn> |
Аргументы |
rn - ссылочное имя mn - шаблон имени почтового ящика |
Описание |
Возвращает подмножество имен полного множества имен, занесенных в список активных для клиента и удовлетворяющих сочетанию ссылочного имени и шаблона почтового ящика. Сервер может проверять существование почтовых ящиков, соответствующих возвращаемым именам, и помечать несуществующие ящики флагом \Noselect. Сервер не должен удалять из возвращаемого списка имена, соответствующие несуществующим почтовым ящикам. |
Возможные ответы без тега |
LSUB |
Возможные ответы с тегом |
OK - команда выполнена NO - ошибка выполнения команды BAD – неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Authenticated, Selected |
Команда |
STATUS < mn> < data> |
Аргументы |
mn - имя почтового ящика data - имена пунктов данных статуса |
Описание |
Команда статуса запрашивает статус указанного почтового ящика. Она не должна влиять на состояние сообщений в указанном ящике (в частности, не должна сбрасывать флаг \Recent). Команда позволяет проверить статус почтового ящика, отличного от выбранного командой SELECT. Имена пунктов данных статуса могут быть: MESSAGES – количество сообщений в почтовом ящике RECENT – количество сообщений с выставленным флагом \Recent UIDNEXT – следующее значение UID, которое будет выделено новому сообщению в данном почтовом ящике. UIDVALIDITY – значение валидности уникального идентификатора для почтового ящика. UNSEEN - количество сообщений, в которых не установлен флаг \Seen . |
Возможные ответы без тега |
STATUS |
Возможные ответы с тегом |
OK – команда выполнена NO – ошибка выполнения команды BAD - неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Authenticated, Selected |
Команда |
APPEND < mn> [< flags> ] [< date> /< time> ] < ml> |
Аргументы |
mn - имя почтового ящика flags - список в скобках флагов date - строка дата/время ml - литерал сообщения |
Описание |
Команда добавляет аргумент ml в качестве нового сообщения в конец обозначенного почтового ящика. Аргумент ml должен иметь формат, согласно RFC 822 [2] . В сообщении разрешены восьмибитные символы. Если сервер не может правильно сохранить восьмибитные символы, то в сервере должно быть осуществлено преобразование восьмибитных символов в семибитный код, соответствующий MIME-IMB, а также выполнено и обратное преобразование. Список флагов результирующего сообщения должен соответствовать аргументу flags. По умолчанию список флагов результирующего сообщения должен быть пуст. Если указан аргумент date, внутренняя дата сообщения должна быть установлена согласно указанному значению. По умолчанию устанавливается текущая дата и время. Частичное добавление в случае возникновения ошибки запрещено. При отсутствии указанного почтового ящика сервер не должен автоматически его создавать. В этом случае, а также в случае если нет никаких причин, по которым почтовый ящик с указанным именем не может быть создан, сервер должен в ответ с тегом NO включить код ответа [TRYCREATE].
|
Возможные ответы без тега |
- |
Возможные ответы с тегом |
OK - команда выполнена NO - ошибка выполнения команды BAD - неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Authenticated, Selected |
Команда |
CHECK |
Аргументы |
- |
Описание |
Команда запрашивает контрольную точку текущего почтового ящика. Если команда не реализована, она должна выполняться подобно NOOP. |
Возможные ответы без тега |
- |
Возможные ответы с тегом |
OK - команда выполнена BAD - неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Selected |
Команда |
CLOSE |
Аргументы |
- |
Описание |
Команда удаляет из текущего выбранного почтового ящика все сообщения, имеющие флаг \Deleted, и переводит сервер в состояние authenticated. Команда игнорируется без выдачи сообщения об ошибке, если почтовый ящик открыт в режиме READ-ONLY. |
Возможные ответы без тега |
- |
Возможные ответы с тегом |
OK - команда выполнена, состояние authenticated NO - ошибка закрытия BAD - неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Selected |
Команда |
EXPUNGE |
Аргументы |
- |
Описание |
Команда удаляет из текущего выбранного почтового ящика все сообщения, имеющие флаг \Deleted. Перед выдачей ответа OK для каждого удаленного сообщения высылается ответ EXPUNGE. |
Возможные ответы без тега |
EXPUNGE |
Возможные ответы с тегом |
OK - команда выполнена NO - ошибка выполнения команды BAD - неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Selected |
Команда |
SEARCH [< CHARSET> ] < sc> |
Аргументы |
CHARSET - спецификация набора символов sc - критерий поиска (несколько критериев) |
Описание |
Выполняет поиск сообщений, удовлетворяющих критерию поиска. Критерий поиска состоит из одного или более ключей поиска. При наличии нескольких ключей поиска, результат является функцией пересечения (AND) всех сообщений, удовлетворяющих ключам. Ключом поиска является список в скобках ключей поиска. Сервер может исключить из области поиска части тела сообщения с типами содержимого, отличными от типов TEXT или MESSAGE. CHARSET характеризует кодовый набор строк, из которых состоит критерий поиска. Обязательной является поддержка ASCII. Если сервер не поддерживает запрошенный кодовый набор, он должен ответить NO с тегом. Во всех ключах поиска, использующих в качестве условия строку, считается, что ключ удовлетворен, если строка ключа является подстрокой поля сообщения. Должно использоваться сравнение, независимое от регистра символов. Определены следующие ключи: <message set> - список номеров сообщений ALL - все сообщения в почтовом ящике ANSWERED - сообщения с флагом \Answered BCC <строка> - сообщение, содержащее указанную строку в поле BCC конверта BEFORE <дата> - сообщения, внутренняя дата которых является более ранней, чем указанная. BODY <строка> - сообщение, содержащее указанную строку в теле сообщения CC <строка> - сообщение, содержащее указанную строку в поле BCC конверта DELETED - сообщения с флагом \Deleted DRAFT - сообщения с флагом \Draft FLAGGED - сообщения с флагом \Flagged FROM <строка> - сообщение, содержащее указанную строку в поле From конверта HEADER <имя поля> <строка> - сообщение, указанное поле заголовка которого, содержит указанную строку KEYWORD <флаг> - Сообщения с указанным набором ключевых слов LARGER <n> - Сообщения с размером по RFC-822 [2] , большим чем n октет NEW - сообщения с флагом \Recent, но без флага \Seen (= RECENT UNSEEN) NOT <ключ поиска> = сообщения, не удовлетворяющие указанному ключу поиска OLD - сообщения без флага \Recent ON <дата> - сообщения с внутренней датой, входящей в указанный промежуток OR <ключ поиска1> <ключ поиска1> - сообщения, удовлетворяющие любому ключу поиска RECENT - сообщения с флагом \Recent SEEN - сообщения с флагом \Seen SENTBEFORE <дата> - сообщения с датой заголовка более ранней, чем указанная SENTON <дата> - сообщения с датой заголовка, соответствующей указанной SENTSINCE <дата> - сообщения с датой заголовка, более поздней или соответствующей указанной SINCE <дата> - сообщения с внутренней датой, более поздней или соответствующей указанной SMALLER <n> - сообщения с размером по RFC-822 [2] , меньшим чем n октет SUBJECT <строка> - сообщение, содержащее указанную строку в поле Subject конверта TEXT <строка> - сообщение, содержащее указанную строку в заголовке или теле сообщения TO <строка> - сообщение, содержащее указанную строку в поле TO конверта UID <message set> - сообщение c UID, равным указанному UNANSWERED - сообщения без флага \Answered UNDELETED - сообщения без флага \Deleted UNDRAFT - сообщения без флага \Draft UNFLAGGED - сообщения без флага \Flagged UNKEYWORD <флаг> - сообщения, в которых нет указанных ключевых слов UNSEEN - сообщения без флага \Seen |
Возможные ответы без тега |
SEARCH |
Возможные ответы с тегом |
OK - команда выполнена NO - ошибка выполнения команды BAD - неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Selected |
Команда |
FETCH < ms> < items> |
Аргументы |
ms - набор сообщений items - имена элементов данных сообщеня |
Описание |
Запрос данных, связанных с сообщением в почтовом ящике. Элементами запрашиваемых данных могут быть единственный атом или список в скобках. Могут быть реализованы элементы: ALL - эквивалентно набору FLAGS INTERNALDATE RFC822.SIZE ENVELOPE BODY - нерасширяемая форма BODYSTRUCTURE BODY [<секция>]<<частичный>> - текст отдельной секции тела сообщения. Секция - набор определителей части. Определитель части – номер части или одно из следующих значений: HEADER, HEADER.FIELDS, HEADER.FIELDS.NOT, MIME, TEXT. Пустой аргумент секции ссылается на сообщение целиком, включая заголовок. Аргумент <частичный> позволяет выбрать произвольный отрезок выбранной части с точностью до октета. Если <частичный> указывает вне текста, возвращается пустая строка. Если указываемый отрезок частично выходит за пределы текста, возвращается накрываемый отрезок текста. При выполнении устанавливается флаг \Seen. BODY.PEEK [<секция>]<<частичный>> - подобно TEXT, но при выполнении флаг \Seen не устанавливается. BODYSTRUCTURE - структура сообщения согласно RFC 2045 [8] . ENVELOPE - Структура конверта сообщения. FAST - эквивалентно набору FLAGS INTERDATE RFC822.SIZE FLAGS - флаги, установленные для данного сообщения FULL - эквивалентно набору FLAGS INTERDATE RFC822.SIZE ENVELOPE BODY INTERNALDATE - внутренняя дата сообщения RFC822 - эквивалентно BODY[], хотя синтаксис возвращаемого ответа отличен RFC822.HEADER - эквивалентно BODY.PEEK[HEADER], хотя синтаксис возвращаемого ответа отличен RFC822.SIZE - размер сообщения по RFC 822 [2] RFC822.TEXT - эквивалентно BODY[TEXT], хотя синтаксис возвращаемого ответа отличен UID – UID сообщения |
Возможные ответы без тега |
FETCH |
Возможные ответы с тегом |
OK – команда выполнена NO – ошибка выполнения команды BAD - неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Selected |
Команда |
STORE < ms> < md> < value> |
Аргументы |
ms - набор сообщений md - имя элемента данных почтового сообщения value - значение элемента данных почтового сообщения |
Описание |
Изменяет данные, связанные с сообщением в почтовом ящике. Обновленные значения данных возвращаются ответом FETCH. Если после имени элемента данных стоит слово .SILENT, ответ без тега FETCH не должен высылаться сервером. Должны быть реализованы аргументы: FLAGS < список флагов> - Удаляет старый список флагов сообщения и создает новый список флагов FLAGS.SILENT < список флагов> +FLAGS < список флагов> - добавляет указанные флаги к существующему списку +FLAGS.SILENT < список флагов> -FLAGS < список флагов> - Удаляет указанные флаги из списка флагов сообщения -FLAGS.SILENT < список флагов> |
Возможные ответы без тега |
FETCH |
Возможные ответы с тегом |
OK - команда выполнена NO - ошибка закрытия BAD - неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Selected |
Команда |
COPY < ms> < mn> |
Аргументы |
Ms - набор сообщений Mn - имя почтового ящика |
Описание |
Команда копирует определенное сообщение в конец указанного ящика адресата. Флаги и внутренняя дата должны быть сохранены. Если указанного почтового ящика не существует, сервер может создать почтовый ящик автоматически. Если сервер не создал почтовый ящик, но может создать ящик с таким именем, он должен отправить ответ NO с тегом и кодом ответа [TRYCREATE]. В случае неудачного выполнения команды, сервер должен вернуть почтовый ящик в состояние, идентичное тому, что было до выполнения команды. |
Возможные ответы без тега |
- |
Возможные ответы с тегом |
OK - команда выполнена NO - ошибка закрытия BAD - неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Selected |
Команда |
UID < cn> < ca> |
Аргументы |
cn - имя команды ca - аргументы команды |
Описание |
Команда UID имеет две формы. В первой форме первым аргументом является команда COPY, FETCH или STORE, а вторым аргументом - аргументы указанной команды. Однако в аргументе набора сообщений нужно указывать не последовательные номера сообщений, а UID. Во второй форме команда UID отрабатывает команду SEARCH с соответствующими аргументами. Аргументы интерпретируются так же, как и в команде SEARCH, однако номера, возвращаемые в ответе SEARCH, будут UID вместо порядковых номеров сообщений. |
Возможные ответы без тега |
FETCH, SEARCH |
Возможные ответы с тегом |
OK - команда выполнена NO - ошибка закрытия BAD – неизвестная команда или ошибка в аргументах |
Разрешенные состояния |
Selected |
3.4. Ответы
Сообщения, направляемые от сервера клиенту, называются ответами.
Существуют три формы ответов сервера:
ответы статуса
данные сервера
запрос продолжения команды
Ответы статуса могут быть:
с тегом
без тега
Ответы с тегом показывают результат выполнения команды клиента: статус OK, NO, BAD.
В ответе без тега на месте тега находится символ "*". Ответами статуса без тега могут быть ответ приветствия или ответы статуса, не показывающие результаты выполнения какой-либо команды.
В запросах продолжения команды вместо тега находится символ "+". Эти запросы посылаются клиенту, чтобы показать, что неполная команда принята, и сервер готов принять остаток команды.
3.4.1. Ответы статуса
Ответами статуса являются: OK, BAD, NO, PREAUTH, BYE.
Ответы OK, BAD, NO могут быть с тегом и без тега.
Ответы PREAUTH и BYE всегда с тегом.
Ответы статуса могут включать код ответа. Код ответа состоит из данных внутри квадратных скобок в форме атома. Возможны аргументы, отделенные пробелом.
Список кодов ответа приведен в табл. 2. Все дополнительные коды ответов, реализованные в сервере, должны начинаться с буквы X.
Таблица 2
Список кодов ответа.
Код ответа: |
Описание |
ALERT |
Текст, предназначенный для чтения человеком-клиентом, составленный таким образом, чтобы привлечь внимание клиента. |
NEWNAME |
Ошибка выполнения команд SELECT или EXAMINE в связи с тем, что почтовый ящик с указанным именем больше не существует, так как был переименован. |
PARSE |
Текст, предназначенный для чтения человеком-клиентом и показывающий ошибку разбора заголовка RFC822 [2] или заголовка MIME-IMB сообщения. |
PERMANENTFLAGS |
За данным кодом следует список в скобках, содержащий список флагов, которые клиент может изменить. Список PERMANENTFLAGS может включать в себя специальный флаг \*, говорящий о возможности создания новых ключевых слов путем попыток сохранить данные флаги в почтовом ящике. |
READ-ONLY |
Почтовый ящик выбран в режиме только для чтения. |
READ-WRITE |
Почтовый ящик выбран как доступный для изменений. |
TRYCREATE |
Ошибка выполнения команд APPEND или COPY в связи с тем, что указанный почтовый ящик назначения не существует. |
UIDVALIDITY |
За данным кодом следует десятичное число, указывающее значение валидности UID. |
UNSEEN |
За данным кодом следует десятичное число, показывающее номер первого сообщения без флага \Seen. |
В табл. 3 приведен список ответов статуса. Все сообщения статуса должны содержать текст, предназначенный для чтения человеком-клиентом и содержащий информацию, соответствующую назначению сообщения.
Таблица 3
Список ответов статуса.
Ответ: |
Описание |
OK |
Указывает на информационное сообщение, поступившее от сервера. Если присутствует тег, ответ указывает на успешное выполнение соответствующей команды. Ответ без тега может использоваться в качестве приветствия. |
NO |
Указывает на сообщение об ошибке работы сервера. Если присутствует тег, ответ указывает на ошибку выполнения соответствующей команды. Сообщение без тега является предупреждением и не указывает на то, что команда не выполнена. |
BAD |
Указывает на сообщение ошибки, поступившее от сервера. . Если присутствует тег, ответ указывает на ошибку протокольного уровня в команде клиента, на которую указывает тег. |
PREAUTH |
Может использоваться в качестве приветствия. Указывает на установление преидентифицированного соединения. |
BYE |
Указывает на процесс закрытия соединения. Посылается сервером в случаях: - нормального закрытия соединения по команде LOGOUT - в случае внезапного закрытия соединения сервером (например, в случае останова сервера) - в случае разрыва соединения по таймеру неактивности - при установлении соединения в качестве приветствия, показывающего, что сервер не желает установить соединение в клиентом. |