Украина, одесса, кпи, 2010 |
Протокол 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.