2014-02-05 2 views
0

Есть ли какая-либо команда IMAP, которая может помочь определить текущий выбранный почтовый ящик.Как определить уже выбранный почтовый ящик с помощью команд IMAP?

Использование: Предположим, что есть прокси-сервер, который кэширует IMAP-соединение, когда клиенты подключаются, клиентам не нужно тратить время на выбор почтового ящика, если он уже выбран.

+2

Я не верю. IMAP имеет строго определенный конечный автомат, и клиенту необходимо отслеживать состояние. Переход от NON-AUTHENTICA TED для SELECTED - это неверный переход состояния. – Max

ответ

3

Вы ошибаетесь в государственной машине RFC3501, как сказал Макс. Вы не можете «закончить», уже выбранный в любой почтовый ящик. Если бы что-то подобное произошло, прокси-сервер IMAP был бы безнадежно сломан и не было бы разумного способа его использования.

См. IMAP state machine from RFC3501. В рамках протокола IMAP после установления соединения состояние может быть только когда-либо одним из «аутентифицированных», «не прошедших проверку подлинности» и «выхода из системы». Невозможно сразу ввести выбранное состояние.

Если вы добавите «IMAP-прокси» к изображению, то он не может кэшировать IMAP-соединения таким образом или вы не можете разговаривать с IMAP своим прокси-сервером. Несмотря на то, что IMAP может быть легко использован в качестве протокола, который вы можете использовать здесь, то есть с помощью нескольких расширений для выполнения именно того, что вы хотели бы сделать, это не будет IMAP, как определено RFC3501.

Теперь, безусловно, возможно иметь прокси-сервер перед вашими серверами IMAP, которые могли бы помочь, например. Накладные расходы TLS. Однако, если это ваша настройка, ваш прокси-сервер IMAP должен убедиться, что почтовый ящик не выбран во время повторного использования соединения. Вам также придется изобретать некоторый метод повторной проверки подлинности, но теперь это вне сферы действия.

Для получения более подробной информации о том, почему она разработана таким образом, обязательно прочтите how the SELECT command works. В IMAP определенные данные почтовых ящиков передаются во время обработки SELECT, и эти данные очень важны для обеспечения того, чтобы и клиент, и сервер совместно использовали хорошо синхронизированное представление состояния почтового ящика. Если ваш клиент внезапно перешел в выбранное состояние, вам придется получить эти метаданные каким-либо другим способом (и обратите внимание, что этот «другой способ» явно запрещен, то есть вы should not issue STATUS on the currently selected mailbox. С достаточно современным сервером IMAP, то есть с поддержкой CONDSTORE или QRESYNC расширения, требования еще более важны.

в общем, протокол IMAP делает не выгоду от прокси в пути большинство людей ожидают, что делать. Если вы на самом деле нужно использовать один, возможно, вы можете поделиться больше информации о том, что приводит вас к такому выводу.

+0

Надеюсь, вы не получили моего вопроса. Я уточню, скажем, прокси-сервер IMAP может кэшировать соединение до 5 минут. Таким образом, клиент сначала подключается к прокси-серверу, прокси-сервер открывает соединение, затем регистрируется и выбирает входящие. Теперь, в течение 5 минут, если один и тот же клиент подключится к прокси-серверу, не нужно снова открывать соединение, потому что соединение находится в состоянии «Аутентифицировано» и «Выбранное состояние». Это экономит несколько секунд (10-30 секунд). Здесь возникает единственная проблема: когда второй раз клиент подключается, он не знает, какой почтовый ящик выбран. Вот как мы попадаем в «уже выбранное» состояние. – Jeevan

+0

Я добавил гораздо больше подробностей к моему ответу; надеюсь, что вы найдете его более ясным. –

Смежные вопросы