Модуль IMAP
В модуле IMAP CommuniGate Pro реализован IMAP-сервер. IMAP-серверы позволяют клиентским приложениям (почтовым программам) получать сообщения из папок пользователя, используя Интернет протокол IMAP4rev1 (RFC2060) через сети TCP/IP.
Протокол IMAP позволяет клиентским приложениям создавать дополнительные папки пользователя, передвигать сообщения между папками, осуществлять в папках поиск, отмечать сообщения в папках, загружать MIME-структуру и отдельные MIME-части сообщений, хранимых в папках пользователя.
IMAP-модуль CommuniGate Pro поддерживает как незашифрованные, так и безопасные (SSL/TLS) соединения.
Интернет-протокол доступа к сообщениям (IMAP)
Интернет-протокол доступа к сообщениям позволяет работать с сообщениями, хранящимися в папках на удалённых почтовых серверах, непосредственно с компьютеров клиентов. Компьютер, на котором запущено приложение — почтовая программа (почтовый клиент), устанавливает соединение с компьютером почтового сервера и сообщает ему имя пользователя и пароль. Если указанному пользователю предоставляется доступ, то почтовое приложение сможет отправлять на почтовый сервер команды. Команды протокола указывают серверу выдать список всех сообщений в папке, загрузить определённые сообщения или удалить их, найти сообщения с определёнными атрибутами, передвинуть сообщения между папками и т.д.
IMAP Модуль CommuniGate Pro поддерживает различные Интернет-стандарты (RFC) и имеет множество дополнительных уникальных возможностей.
Настройка модуля IMAP
Для настройки параметров модуля IMAP используйте веб-интерфейс администратора. Откройте страницу “доступ” в разделе “установки”:
Используйте эту настройку, чтобы указать, какую информацию модуль IMAP должен сохранять в журнале работы сервера. Обычно используется уровень “основное” (отчёты о передаче сообщений) или уровень “проблемы” (передача сообщений и не фатальные ошибки). В случае, если в работе модуля IMAP возникают проблемы, возможно, целесообразным будет увеличить детализацию до уровня “подробности” или “всё”: в этом случае в журнал работы сервера будет также записываться более подробная информация о работе модуля на уровне протокола или на уровне ссылок. Когда проблема решена, верните настройку “уровень журнала” в её обычное значение, иначе системный журнал будет очень быстро увеличивать свой размер.
Записи, помещённые модулем IMAP в журнал работы ссервера, имеют пометку “IMAP”.
Когда вы указываете ненулевое значение в настройке “максимальное число каналов”, модуль IMAP создаёт так называемый «приёмник». Модуль начинает принимать все IMAP-соединения, которые устанавливают клиенты для того, чтобы получать почту с вашего сервера. Эта настройка используется, чтобы ограничить число одновременных соединений, которое может принимать модуль IMAP. Если открыто предельное число соединений, то модуль будет отказывать в приёме новых соединений. В этом случае почтовые клиенты должны попытаться соединиться позднее.
По умолчанию, приёмник модуля IMAP принимает незашифрованные соединения на TCP-порт 143 и безопасные соединения на TCP-порт 993. Нажмите на ссылку “приёмник”, чтобы настроить порт приёмника IMAP.
Модуль IMAP поддерживает команду “STARTTLS”, которая позволяет почтовому клиенту устанавливать соединение в незащищённом режиме и затем переводить его в режим безопасного соединения.
Посылать 'Running' каждые
Если эта настройка не установлена в значение “никогда”, то модуль IMAP будет следить за длительностью выполнения операций APPEND, COPY и SEARCH. Если выполнение любой из этих операций превышает указанный здесь период времени, то модуль отправляет клиентскому приложению «непомеченный» ответ. Эта возможность может использоваться для того, чтобы предотвратить возникновение ситуации тайм-аута у клиентского приложения; также она помогает при работе в конфигурациях с различными NAT-устройствами, которые склонны закрывать соединение, если оно некоторое время неактивно.
Одновременный доступ
В отличие от множества других IMAP-серверов, «блокирующих» открытые папки, модуль IMAP-сервера CommuniGate Pro спроектирован таким образом, чтобы обеспечивать одновременный доступ к папке неограниченного числа клиентов.
Модуль IMAP использует менеджер папок CommuniGate Pro, что позволяет обеспечить одновременный доступ к папкам для всех типов поддерживаемых протоколов и клиентов. Дополнительную информацию смотрите в разделе “папки”.
Список прав доступа
Модуль IMAP поддерживает RFC2086 (ACL-расширение IMAP4). Это расширение протокола позволяет IMAP-пользователям предоставлять доступ к своим папкам другим пользователям.
Дополнительную информацию о списках прав доступа папки (ACL) смотрите в разделе “папки”.
Чтобы иметь возможность устанавливать права доступа, пользователь должен использовать современный IMAP-клиент, поддерживающий это расширение протокола. Если такой клиент отсутствует, то права доступа к папке можно задать через веб-интерфейс пользователя.
Чужие (общие) и публичные папки
CommuniGate Pro позволяет пользователям получать доступ к папкам других пользователей. Дополнительную информацию смотрите в разделе “папки”.
Множество популярных IMAP клиентов не поддерживают эту возможность. Однако, для почтовых программ IMAP, использующих «подписку» на папки, существует решение, позволяющее обойти это ограничение. Подписка — это список имён папок, который почтовая программа хранит на сервере. Обычно, почтовые программы создают список подписки во время первоначальной настройки. Впоследствии отображаются только те папки, которые включены в список подписки.
Используя различные IMAP-клиенты или веб-интерфейс пользователя, пользователь может добавить имя чужой папки (как, например ~sales/processed или ~public/news/company) в свою подписку. Это приведёт к тому, что IMAP-клиенты будут показывать чужую папку наряду с обычными папками пользователя, и пользователь сможет работать с этой чужой папкой.
Некоторые IMAP-клиенты вообще не поддерживают работу с чужими папками. Чтобы эти клиенты получили доступ к совместно используемым папками других пользователей, может использоваться механизм псевдонима папки.
Аутентификация пользователя
Модуль IMAP позволяет пользователям использовать все методы аутентификации, поддерживаемые сервером CommuniGate Pro.
Если опция “объявлять об небезопасных методах” выключена и соединение не зашифровано с помощью SSL/TLS, то сервер добавляет ключевое слово LOGINDISABLED в список поддерживаемых возможностей аутентификации.
Непочтовые папки
Модуль IMAP CommuniGate Pro обеспечивает доступ к папкам всех классов (календарь, контакты и т.д.). Некоторые клиенты и/или пользователи могут быть поставлены в затруднительное положение, если они сталкиваются с непочтовыми папками.
Эти модули включают непочтовые папки в ответ IMAP-команды “LIST”, если:
Пользователь включил настройку не-почтовые папки видны в IMAP, или
команда IMAP “LIST” имеет расширение CLASS, или
была выполнена команда IMAP “ENABLE EXTENSIONS”.
Предупреждения
Модуль IMAP CommuniGate Pro проверяет наличие сообщений с предупреждениями, отправленных аутентифицированному пользователю. Предупреждающие сообщения передаются клиентской почтовой программе через стандартный код ответа IMAP [ALERT].
Модуль IMAP CommuniGate Pro проверяет наличие предупреждений сразу после аутентификации пользователя и может обнаруживать новые предупреждения и отсылать их пользователю в любое время в течение IMAP-сессии.
Перенаправление аутентификации
Модуль IMAP поддерживает RFC2221 (перенаправление аутентификации).
Как было объяснено в разделе “доступ”, все адреса пользователей, заданные в клиентских почтовых программах, обрабатываются через маршрутизатор.
Если имя пользователя перенаправляется на внешний Интернет-адрес (обслуживаемый SMTP-модулем), то модуль IMAP возвращает отрицательный ответ и перенаправляет клиента на аутентификацию на внешнем сервере. Если IMAP-клиент поддерживает направления на аутентификацию, то он автоматически переключится на новый адрес.
Пример:
Пользователь j.smith перешёл с вашего сервера на сервер othercompany.com как пользователь John. Чтобы перенаправлять всю почту пользователя, вы создали запись псевдонима в таблице маршрутизатора:
<j.smith> = John@othercompany.com
Теперь, если пользователь попытается зайти на ваш сервер как j.smith, то сервер будет отвергать это имя пользователя, но при этом будет выдавать направление на аутентификацию:
1234 NO [REFERRAL IMAP://John;AUTH=*@othercompany.com/] account has been moved to a remote system
Если клиентская почтовая программа поддерживает направления на аутентификацию, то она автоматически попытается соединиться с сервером othercompany.com как пользователь John.
Мониторинг активности IMAP
Вы можете наблюдать за активностью IMAP-модуля через веб-интерфейс администратора. Чтобы открыть страницы наблюдения за IMAP, нажмите на ссылку “доступ” в разделе “наблюдение”:
ID
Это поле содержит числовой идентификационный номер IMAP-сессии. В журнале CommuniGate Pro эта сессия отмечается как IMAP-nnnnn, где nnnnn — это идентификационный номер сессии.
Адрес
Это поле содержит IP-адрес присоединившегося клиента.
Пользователь
Это поле содержит имя пользователя (после успешной аутентификации).
Подсоединён
Это поле содержит время соединения (время, в течение которого открыта эта TCP/IP-сессия).
Состояние
Это поле содержит или имя текущей операции, или, если никакой операции не производится, текущее состояние сессии (Authenticating, Selected и т.д.).
Обрабатывает
Если есть какая-нибудь активная IMAP-операция, то это поле содержит время, прошедшее с момента начала операции.
Если IMAP соединение используется для MAPI-сессии, то это строка отображается на зелёном фоне.
Активность модуля IMAP можно наблюдать с помощью элементов статистики CommuniGate Pro.
Подробности реализации IMAP
В IMAP-модуле CommuniGate Pro реализовано множество расширений протокола IMAP. Реализация некоторых из этих расширений в CommuniGate Pro имеет свои особенности.
QUOTA
Каждый пользователь имеет свою корневую квоту.
NAMESPACE
Стандартный префикс «имени пользователя» в CommuniGate Pro .
UNSELECT
Эта команда IMAP эквивалентна команде “CLOSE”, но она не удаляет сообщения, отмеченные как \Deleted
Дополнительные расширения IMAP
В IMAP-модуле CommuniGate Pro реализованы также несколько расширений, не являющихся частью IMAP-стандарта и не включённые в существующие стандарты расширения IMAP.
COPY
После имени папки назначения может быть указан параметр ENCRYPTED certificateData, где certificateData — либо PKI сертификат в кодировке base64, либо символ звёздочка (*), ссылающийся на личный S/MIME сертификат аутентифицированного пользователя.
Копируемые сообщения будут S/MIME-зашифрованными при помощи указанного сертификата.
STATUS
Команда STATUS может использовать следующие дополнительные имена элементов данных:
INTERNALSIZE
Элемент данных, включаемый в ответ — число. Это число указывает размер папки (в том виде, как она хранится на сервере). Этот размер близок, но не обязательно совпадает с суммой значений атрибута RFC822.SIZE для всех сообщений, хранящихся в папке.
OLDEST
Элемент данных, включенных в ответ — строка типа date_time. Она указывает INTERNALDATE самого старого сообщения в папке. Если в папке нет сообщений, этот элемент данных в ответ не включается.
UNSEENMEDIA
Элемент данных, включаемый в ответ — число сообщений, которые имеют установленный флаг Media, но не имеют флага Seen.
Пример:
A001 STATUS mailbox (UNSEEN OLDEST INTERNALSIZE UNSEENMEDIA)* STATUS mailbox (UNSEEN 14 OLDEST "23-Feb-2002 07:59:42 +0000" INTERNALSIZE 2345678 UNSEENMEDIA 1)A001 OK completed
LIST
Наряду с опциями, описанными в расширении LISTEXT, команда LIST может использовать следующие дополнительные опции:
UIDVALIDITY, CLASS, MESSAGES, UIDNEXT, UNSEEN, INTERNALSIZE, OLDEST, UNSEENMEDIA
Элементы данных, включаемые в ответ, имеют следующий формат:
\option_name(option_value)
Пример:
A001 LIST (CHILDREN CLASS UNSEEN INTERNALSIZE) "" "ma%"* LIST (\HasNoChildren CLASS("IPF.Contact") \UNSEEN(14) \INTERNALSIZE(2345678) \Unmarked) mailboxA001 OK completed
APPEND
Команда APPEND может использовать дополнительные опции:
REPLACESUID(number)
Если указано это расширение, то после добавления нового сообщения в папку сообщение с указанным UID будет удалено (если оно существовало). Добавление и удаление выполняются одной транзакцией.
CHECKOLDEXISTS
Расширение должно использоваться совместно с расширением REPLACESUID. Когда оно указано, новое сообщение добавляется в папку назначения, только если там существует сообщение с UID, указанным с расширением REPLACESUID. Иначе генерируется ошибка.
Пример:
A001 APPEND "Черновики" (\Seen \Draft) "20-JAN-2010" (REPLACESUID) CHECKOLDEXISTS) {3450}"+ Send the Message Сообщение
Дополнительные флаги сообщений
Так же поддерживаются IMAP-флаги сообщений
$MDN, $
$Media, что позволяет совершать операции с этими флагами сообщений. С помощью добавления флага $
ENABLE EXTENSIONS
После выполнения этой команды IMAP:
сообщения со специальным флагом сообщений $Service станут видимыми;
непочтовые папки станут видимыми.