Глава 7. Протокол управления.
Пред. |  | След.

# Глава 7. Протокол управления.

Данный раздел описывает протокол Manjary Management Protocol (`MMP`) предназначенный для получения информации и управления серверами Manjary. Этот протокол позволяет пользователям изменять свои данные, менять пароли, производить поиск в адресной книге. Администраторам и операторам доменов предоставляется функционал для выполнения различных задач по администрированию сервера и доступ к последним записям журнала.

`MMP` имеет много общего с протоколом `ManageSieve` (RFC 5804), а также похож на `IMAP4` (RFC 9051).

## Введение.

### Команды и ответы.

Сеанс MMP состоит из из установления клиент-серверного соединения, начального приветствия от сервера и клент-серверного взаимодействия. Эти клиент-серверные взаимодействия состоят из команды от клиента, серии ответов сервера с данными (необязательно) и серверного ответа с результатом выполнения.

Все взаимодействия передаваемые клиентом и сервером имеют форму строк которые заканчиваются CRLF. Приёмник протокола клиента или сервера MMP либо считывает строку, либо считывает последовательность известного количества октетов, за которой следует строка.

### Синтаксис.

`MMP` - это протокол ориентированный на строки и работающий над `TCP`.

Каждая команда посылаемая клиентом состоит из имени, за которым следует ноль или более аргументов, завершающихся символами CRLF (`0x0D` `0x0A`). Аргументы отделяются символом пробела (`0x20`).

В ответ на команду сервер возвращает ноль или более строк[2] данных и одну строку[2] с результатом выполнения команды. Строки данных начинаются с символа '*' (`0x2A`) и пробела (`0x20`) за которыми следуют аргументы специфичные для выполняемой команды. Далее в тексте для обозначения таких строк используется выражение *-строка или *-ответ. Последняя строка ответа начинается с результата выполнения OK, NO или BYE за которым следует ноль или более аргументов. Результат OK сообщает клиенту об успешном выполнении команды. Результаты NO и BYE обычно сопровождаются одним или двумя аргументами - если первый аргумент заключён в круглые скобки, он содержит информацию об отказе предназначенную для машинного разбора. В настоящей версии протокола это только одно из ключевых слов. Далее, в ответе указывается текстовая строка в кавычках которая может быть прочитана человеком для понимания причин отказа.[2]

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

Аргументы команд посылаемых клиентом и аргументы ответов сервера разделяются пробелами и могут быть представлены в трёх видах: 1. Последовательность символов не являющихся пробелами, табуляциями или переводами строк. 2. Строка заключённая в двойные кавычки. В этом виде строка может содержать пробелы и табуляции, но не переводы строк. Символ двойных кавычек являющийся частью строки и символ "\" экранируются предшествующим символом "\". 3. В виде данных объявленной длинны - литералов. Литералы могут использоваться для передачи любых данных. Такой аргумент состоит из указания количества окетов в фигурных скобках, CRLF и последовательности окетов. При передаче летерала от клиента серверу выполняется следующий сценарий: клиент посылает число означающее количество окетов в фигурных скобках и CRLF, дожидается ответа сервера в виде строки начинающейся с символа "+" и заканчивающейся CRLF, затем клиент отправляет содержимое литерала. Возможен другой сценарий при котором клиент указывает количество окетов завершающееся символом "+" перед закрывающей фигурной скобкой. При этом сервер не отвечает строкой начинающейся с символа "+" и сразу готов принять содержимое. Литералы отправляемые сервером не содержат символа "+" перед закрывающей скобкой и содержимое следует сразу после CRLF. Работа с данными в виде литералов показана в примерах.

Имена команд содержат только 7-ми битные символы ASCII. Аргументы представленные в любом виде могут содержать символы uncode в кодировке UTF-8.

### Возможности сервера.

Список возможностей отправляется сразу после подключения клиента или после успешного выполнения команды STARTTLS. Возможности могут измениться после успешного выполнения STARTTLS, AUTHENTICATE и UNAUTHENTICATE. Клиент может запросить текущие возможности послав команду CAPABILITY.

Возможности перечисляются в *-строках. Первый аргумент каждой строки - регистронезависимое название возможности. Остальные агрументы в строке необязательны и являются значениями связанными с возможностью.

В настоящее время определены следующие возможности:

VERSION

  Версия протокола `MMP`. Номер версии указывается в аргументе представленном строкой в кавычках. Текущая версия протокола - 1.0

STARTTLS

  Доступно согласование безопасного соединения командой STARTTLS. Эта возможность объявляется только если безопасное соединение ещё не установлено. Не имеет аргументов.

COMMAND-SET

  Названия доступных наборов команд. Второй аргумент - строка в кавычках в которой перечислены названия наборов команд разделённые пробелом.

SASL

  Список доступных механизмов SASL. Второй аргумент - строка в кавычках в которой перечислены названия механизмов.

[2] Строка ответа может содержать литерал, который в свою очередь может содержать переводы строк. Ответ всегда заканчивается переводом строки который не относится к литералу.

Пред. |  | След.
Глава 6. Миграция с сервера Weasel. | Начало | Команды.