RFC: 2060
Оригинал: Internet Message Access Protocol v.4 rev.1
Другие версии: RFC 1730, RFC 3501
Категория: Предложенный стандарт
Дата публикации:
Автор:
Перевод: Николай Малых

6.3.8. Команда LIST

Аргументы:база, имя почтового ящика (возможны шаблоны)
Отклик:непомеченный отклик LIST
Результат:OK — список получен
NO — отказ — невозможно вернуть список с заданной базой или именем
BAD — команда не поддерживается или некорректны аргументы

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

Данные по команде LIST следует возвращать быстро лишних задержек. Например, не следует выполнять расчет состояний \Marked или \Unmarked и выполнять другие действия — если каждое имя потребует 1 сек., то на обработку 1200 будет потрачено 20 минут!

Пустая база ("") reference name argument indicates that the имя почтового ящика is interpreted as by SELECT. Возвращаемые имена почтовых ящиков ДОЛЖНЫ соответствовать указанному шаблону имени. Непустая ссылка задает имя почтового ящика или уровень иерархии и контекст, в котором интерпретируется имя почтового ящика (в зависимости от реализации).

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

База и имя почтового ящика преобразуются (в зависимости от реализации) в каноническую форму с однозначным представлением иерархии слева направо. Возвращаемое имя почтового ящика будет иметь эту форму.

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

Первые три строки показывают реализацию в контексте базы. Отметим, что ~smith/Mail не следует преобразовать во что-либо иное, типа /u2/users/smith/Mail, поскольку клиент не сможет определить, что интерпретация происходила в контексте базы.

БазаИмя почтового ящикаИнтерпретация
~smith/Mail/foo.*~smith/Mail/foo.*
archive/%archive/%
#news.comp.mail.*#news.comp.mail.*
~smith/Mail//usr/doc/foo/usr/doc/foo
archive/~fred/Mail/*~fred/Mail/*

Символ "*" является шаблоном и соответствует любым символам (в произвольном количестве) в этой позиции. Символ "%" подобен "*", но не соответствует разделителям уровней иерархии. Если символ "%" указан последним в шаблоне имени почтового ящика, возвращаются также соответствующие уровни иерархии. Если эти уровни не являются почтовыми ящиками, которые можно выбрать, возвращается атрибут \Noselect (см. описание отклика LIST).

Серверам разрешается «прятать» доступные почтовые ящики при использовании шаблонов в некоторых ситуациях. Например, серверы на основе UNIX могут ограничивать действие шаблона "*" так, чтобы начальный символ "/" не давал соответствия.

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

Пример:  C: A101 LIST "" ""
         S: * LIST (\Noselect) "/" ""
         S: A101 OK LIST Completed
         C: A102 LIST #news.comp.mail.misc ""
         S: * LIST (\Noselect) "." #news.
         S: A102 OK LIST Completed
         C: A103 LIST /usr/staff/jones ""
         S: * LIST (\Noselect) "/" /
         S: A103 OK LIST Completed
         C: A202 LIST ~/Mail/ %
         S: * LIST (\Noselect) "/" ~/Mail/foo
         S: * LIST () "/" ~/Mail/meetings
         S: A202 OK LIST completed
2007 - 2017 © Русские переводы RFC, IETF, ISOC.