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

Протокол IMAP

Команда CREATE

Команда CREATE используется для создания нового почтового ящика на сервере IMAP. Имя и местоположение новых почтовых ящиков определяются в соответствии с общими спецификациями ОС Linux. В рабочем каталоге пользователя создается новый почтовый ящик с именем, но без задания местоположения, так как оно известно каталогу $HOME клиента. Например, если рабочий каталог клиента находится в /home/riley и клиент задает команду CREATE для создания нового почтового ящика stuff/junk, то вновь созданный ящик на почтовом сервере под управлением ОС Linux будет иметь путь /home/riley/stuff/junk. В этом примере вы видите, как используется знак разделителя /. Однако это не является общим для всех серверов IMAP.

Папки или почтовые ящики?

Некоторые программы IMAP-клиенты используют термин папка по отношению к новым почтовым ящикам. Многие из них позволяют пользователям также создавать их с определенным уровнем вложенности, так что будьте осторожны при создании новых папок (почтовых ящиков). С ростом длины пути к почтовому ящику становится все трудней обслуживать его.

В листинге 7.5 представлен пример сеанса IMAP по созданию нового почтового ящика, который затем делается активным.

1 [alex@shadrach alex]$ ls -l
2 total 0
3 [alex@shadrach alex]$ telnet localhost 143
4 Trying 127.0.0.1...
5 Connected to localhost.
6 Escape character is '^]'.
7 * OK localhost IMAP4rev1 V12.250 server ready
8 a1 LOGIN alex drums
9 a1 OK LOGIN completed
10 a2 CREATE stuff/junk
11 a2 OK CREATE completed
12 a3 SELECT stuff/junk
13 * 0 EXISTS
14 * 0 RECENT
15 * OK [UIDVALIDITY 936998958] DID validity status
16 * OK [UIDNEXT 1] Predicted next UID
17 * FLAGS (\Answered VFlagged \Deleted \Draft \Seen)
18 * OK [PERMANENTFLAGS (\* \Answered \Flagged \Deleted \Draft \Seen)] Permanent fs
19 a3 OK [READ-WRITE] SELECT completed
20 a4 LOGOUT
21 * BYE shadrah.smallorg.org IMAP4rev1 server terminating connection
22 a4 OK LOGOUT completed
23 Connection closed by foreign host.
24 [alex@shadrach alex]$ ls -lR
25 .:
26 total 1
27 drwx------ 2 alex alex 1024 Sep 10 16:29 stuff
28
29 stuff:
30 total 1
31 -rw------ 1 alex alex 516 Sep 10 16:29 junk
32 [alex@shadrach alex]$
Листинг 7.5. Пример сеанса IMAP с использованием команды CREATE

В строке 1 показано, как пользователь alex задает команду просмотра в своем рабочем каталоге. В строке 3 он устанавливает соединение с локальным сервером IMAP с помощью telnet. После регистрации на сервере он задает команду CREATE в строке 10 для создания нового почтового ящика в системе. В строке 11 вы видите положительный ответ сервера, который сигнализирует о том, что новый почтовый ящик был создан. Затем пользователь alex пытается получить доступ к новому ящику через команду SELECT (строка 12). В строках 13–19 показан ответ сервера IMAP с информацией о новом почтовом ящике (в нем отсутствуют как новые, так и старые сообщения). После того как пользователь alex убедился в работоспособности нового почтового ящика, он завершает сеанс работы с сервером IMAP. И завершает приведенный пример еще одна попытка нашего героя получить сведения о своем рабочем каталоге в строке 24. На этот раз в строках 25–31 показаны новый подкаталог с именем stuff и новый файл в нем с именем junk. Обратите внимание, что новый почтовый ящик является файлом, а не каталогом. Сообщения, помещенные в этот почтовый ящик, будут просто добавляться в этот файл.

Команда DELETE

Команда DELETE применяется к почтовым ящикам, а не к сообщениям. Сервер IMAP при получении этой команды попытается удалить почтовый ящик с именем, указанным в качестве аргумента команды. В аргументе команды можно использовать стандартное описание путей ОС Linux, со знаком разделителя /, если только они не находятся в каталоге $HOME. Сообщения из удаленных почтовых ящиков восстановлению не подлежат и теряются вместе с ящиками.

Команда RENAME

С помощью команды RENAME клиент может изменить имя почтового ящика. При этом возможно применение двух параметров. Первый параметр — собственно имя почтового ящика, который требуется переименовать. И второй параметр — новое имя почтового ящика. Для обоих параметров действительны стандартные методы задания путей в ОС Linux. Помните, что пути без знака разделителя / относятся только к рабочему каталогу пользователя $HOME, под которым была произведена регистрация в системе (на сервере). В листинге 7.6 приведен пример переименования почтового ящика.

1 [alex@shadrach alex]$ ls -lR
2 .:
3 total 1
4 drwx------ 2 alex alex 1024 Sep 10 16:48 stuff
5
6 stuff:
7 total 1
8 -rw------- 1 alex alex 918 Sep 10 16:44 junk
9 [alex@shadrach alex]$ telnet localhost 143
10 Trying 127.0.0.1...
11 Connected to localhost.
12 Escape character is '^]'.
13 * OK localhost IMAP4rev1 V12.250 server ready
14 a1 login alex drums
15 a1 OK LOGIN completed
16 a2 rename stuff/junk newbox
17 a2 OK RENAME completed
18 a3 select newbox
19 * 1 EXISTS 2B • B RECENT
21 * OK [UIDVALIDITY 936998958] UID validity status
22 * OK [UIDNEXT 2] Predicted next UID
23 * FLAGS (\Answered \Flagged \Deleted VDraft \Seen)
24 * OK [PERMANENTFLAGS (\* \Answered \Flagged \Deleted \Draft \Seen)] Permanent flags
25 a3 OK [READ-WRITE] SELECT completed
26 a4 logout
27 * BYE shadrach.smallorg.org IMAP4rev1 server terminating connection
28 a4 OK LOGOUT completed
29 Connection closed by foreign host.
30 [alex@shadrach alexl$ ls -lR
31 .:
32 total 2
33 -rw------- 1 alex alex 918 Sep 10 16:44 newbox
34 drwx------ 2 alex alex 1024 Sep 12 13:59 stuff
35
36 stuff:
37 total 0
38 [alex@shadrach alex]$
Листинг 7.6. Пример сеанса IMAP с использованием команды RENAME

В строке 1 пользователь alex задает команду на просмотр содержимого своего рабочего каталога. Как и в предыдущем примере, у него имеется почтовый ящик stuff/junk, который находится в подкаталоге stuff в файле junk. В строке 9 пользователь alex устанавливает IMAP-соединение с localhost. После выполнения всех формальностей, в строке 16 он задает команду RENAME для переименования своего ящика с именем stuff/junk в newbox. Строка 17 отображает положительный ответ сервера IMAP на эту команду. В строке 18 пользователь alex пытается сделать переименованный почтовый ящик активным для чего выдает команду SELECT. Сервер отвечает на нее сведениями о содержимом нового ящика. Обратите внимание на строку 19. Дело в том, что alex предварительно сохранил в почтовом ящике stuff/junk сообщение. И теперь, как видите, переименованный почтовый ящик newbox также содержит одно сообщение. Таким образом, можно сделать вывод, что переименование не влияет на содержимое почтового ящика. После завершения сеанса IMAP alex повторно выполняет просмотр рабочего каталога. К его и нашему удивлению подкаталог с именем stuff все еще здесь, но файл junk уже обнулен. Давайте попробуем разобраться, что же произошло. Сервер IMAP удалил файл с именем junk из подкаталога stuff, но сам подкаталог удален не был. В строке 33 показано, что был создан новый почтовый ящик с именем newbox.

Valentin Diduk
Valentin Diduk
Украина, одесса, кпи, 2010
Евгений Олабин
Евгений Олабин
Беларусь, Гродно