3. Состояния сервера и команды
Сервер IMAP4rev1 может находиться в одном из 4 состояний. Большая часть команд применима в любом из состояний сервера. Если клиент пытается использовать недоступную в данном состоянии сервера команду, возникает протокольная ошибка и сервер возвращает отклик BAD или NO (в зависимости от реализации сервера).
3.1. Состояние Non-Authenticated
В этом состоянии клиент ДОЛЖЕН свои полномочия прежде, чем передавать какие-либо команды. Это состояние является первым после организации соединения, если соединение не аутентифицировано заранее.
3.2. Состояние Authenticated
В этом состоянии полномочия клиента уже проверены и клиент ДОЛЖЕН выбрать почтовый ящик для работы, прежде, чем подавать серверу какие-либо команды для работы с сообщениями. Это состояние возникает при организации сеанса клиентом с предварительной аутентификацией или после предъявления клиентом корректных полномочий, а также после ошибок при выборе почтового ящика.
3.3. Состояние Selected
В этом состоянии уже выбран почтовый ящик для работы.
3.4. Состояние Logout
В этом состоянии соединение завершается и сервер разрывает связь. Данное состояние может вводиться по запросу клиента или по инициативе сервера.
+--------------------------------------+ | начало соединения и приветствие | +--------------------------------------+ || (1) || (2) || (3) VV || || +-----------------+ || || |non-authenticated| || || +-----------------+ || || || (7) || (4) || || || VV VV || || +----------------+ || || | authenticated |<=++ || || +----------------+ || || || || (7) || (5) || (6) || || || VV || || || || +--------+ || || || || |selected|==++ || || || +--------+ || || || || (7) || VV VV VV VV +--------------------------------------+ | logout и завершение соединения | +--------------------------------------+
- (1) Соединение без предварительной аутентификации (приветствие OK)
- (2) Соединение с предварительной аутентификацией (приветствие PREAUTH)
- (3) Отвергнутое соединение (приветствие BYE)
- (4) Успешное выполнение команды LOGIN или AUTHENTICATE
- (5) Успешное выполнение команды SELECT или EXAMINE
- (6) Команда CLOSE или ошибка при выполнении команды SELECT или EXAMINE
- (7) Команда LOGOUT, отключение (shutdown) сервера или разрыв соединения.