Команды управления сеансом.

Команда AUTHENTICATE.

AUTHENTICATE {механизм} [начальные данные]

Команда AUTHENTICATE определяет механизм аутентификации SASL (RFC 4422). Если сервер поддерживает запрошенный механизм, он выполняет обмен данными протокола аутентификации для идентификации и аутентификации пользователя. Если запрошенный механизм аутентификации не поддерживается, то сервер отклоняет команду AUTHENTICATE отправляя ответ NO. Список доступных механизмов объявляется в возможности SASL.

Обмен протокола аутентификации состоит из серии запросов (challenges) сервера и ответов клиента, которые специфичны для выбранного механизма аутентификации. Запрос сервера состоит из литеральной строки за которой следует CRLF. Содержимое строки представляет собой данные SASL закодированные в base-64. Ответ клиента состоит из строки (как токен, в кавычках или литеральной) данных SASL закодированной в base-64 за которой следует CRLF. Если клиент хочет отменить обмен данными аутентификации, он отправляет строку содержащую один символ "*". Если сервер получает такой ответ, он отклоняет команду AUTHENTICATE отправив ответ NO.

Необязательный аргумент с начальными данными команды AUTHENTICATE используется для сокращения количества обмена данными если выбранный механизм аутентификации предусматривает начальную отправку данных клиентом.

Если выполнение команды AUTHENTICATE завершилось ответом сервера NO (UNSUPPORTED) "Unsupported authorization mechanism", то клиент может попробовать другой механизм аутентификации выполнив ещё одну команду AUTHENTICATE. Другими словами, клиент может запрашивать типы аутентификации в порядке убывания предпочтения.

При успешной аутентификации сервер отправляет *-строку начинающуюся с аргумента USER. Второй аргумент сообщает уровень привилегий пользователя: user, oper или admin. Это значение зависит от наличия установленных флагов пользователя ADMIN и OPER. Третий аргумент содержит полное имя пользователя в кавычках, включая доменную часть в формате user@domain. Затем следует ответ OK. После этого сессия переводится в аутентифицированное состояние в котором доступны соответствующие команды.

Команда UNAUTHENTICATE.

Команда UNAUTHENTICATE переводит сессию в не-аутентифицированное состояние. Команда не имеет аргументов и доступна только в аутентифицированном состоянии.

Команда STARTTLS.

Поддержка команды STARTTLS опциональна. Перед использованием этой команды клиент должен проанализировать объявленные возможности сервера.

Команда STARTTLS запрашивает начало согласования TLS. Согласование начинается сразу после CRLF в ответе OK. Клиент не должен посылать другие команды до получения ответа на команду и завершения согласования.

Команда STARTTLS доступна только в не-аутентифицированном состоянии сессии и только если согласование TLS ещё не производилось.

При успешном выполнении команды, после согласования TLS, сервер посылает список возможностей и ответ OK.

Команда LOGOUT.

Клиент отправляет команду LOGOUT когда сеанс закончен. Сервер посылает ответ BYE и закрывает соединение TCP. После получения ответа BYE клиент также должен закрыть соединение TCP.

Команда CAPABILITY.

Команда CAPABILITY запрашивает возможности сервера. Эта команда может быть послана клиентом на любой стадии.

В ответ на команду сервер посылает список возможностей и ответ OK.

Команда NOOP.

Команда NOOP не выполняет никаких действий кроме возврата ответа OK. Эта команда доступна на любом этапе и может использоваться клиентом для проверки соединения во время бездействия и для сброса таймера простоя на сервере для предотвращения закрытия сессии сервером по таймауту.