Сервер IMAP 4.1 находится в одном из четырех состояний. Большинство команд допустимо только во вполне определенных состояниях. Если клиент пытается реализовать команду в неправильном состоянии, это рассматривается как протокольная ошибка. В этом случае сервер откликнется командой bad или no в зависимости от реализации конкретной программы.
В состоянии без аутентификации клиент должен предоставить имя и пароль, прежде чем станет доступно большинство команд. Переход в это состояние производится при установлении соединения, если только для данного соединения не была проведена предварительная аутентификация.
В состоянии аутентификации клиент идентифицирован и должен выбрать почтовый ящик, прежде чем ему станут доступны команды для работы с сообщениями. Переход в это состояние происходит при установлении соединение с предварительной аутентификацией, когда выданы все необходимые идентификационные данные или при ошибочном выборе почтового ящика.
В состояние выбора система попадает, когда успешно осуществлен выбор почтового ящика. В состояние выхода система попадает при прерывании соединения в результате запроса клиента или вследствие независимого решения сервера.
Рис. 4.4.14.2.1. Схема состояний для протокола IMAP
(1) Cоединение без предварительной аутентификации (отклик OK)
(2) Cоединение с предварительной аутентификацией (отклик PREAUTH)
(3) Соединение отвергнуто (отклик BYE)
(4) Успешное завершение команды LOGIN или AUTHENTICATE
(5) Успешное завершение команды SELECT или EXAMINE
(6) Выполнение команды CLOSE, или неудачная команда SELECT или EXAMINE
(7) Выполнение команды LOGOUT, закрытие сервера, или прерывание соединения