Администрирование сервера через интерфейс командной строки CLI

Администрирование через CLI выполняется путем введения команд. Доступ к CLI выполняется через TCP соединение по 106 порту через telnet.

Для подключения к CLI требуется выполнить из консоли ОС, на которой установлен сервер, команду:

telnet 127.0.0.1 106

После удачной попытки соединения с сервером для аутентификации введите команду:

auth login [login] [password]
  • login — логин аккаунта администратора сервера;

  • password — пароль от аккаунта администратора сервера.

При первой аутентификации используйте данные для аккаунта администратора, указанные в разделе Создание домена и аккаунта администратора сервера

Синтаксис

Название команды передается в виде строки без кавычек. Далее через пробелы следуют параметры — текстовые представления JSON-объектов. Необязательные параметры указаны внутри круглых скобок (). Вместо массива отдельных ключей ["key1","key2","key3"] для указания пути к настройке модуля или объекта может использоваться строка вида "key1.key2.key3".

Общие команды

QUIT
Заканчивает сессию и закрывает соединение.

SHUTDOWN
Инициирует остановку сервера.

INLINE
Переключает режим выдачи объектов в результатах команд между многострочным и компактным.

NOTIMEOUT
Устанавливает тайм-аут чтения в соединении в 365 дней.

HELP
Выводит список команд с возможностью фильтрации.

PING
Отвечает фиксированным сообщением.

RaiseMem
Приводит к неисправимой ошибке при выполнении программы с генерацией системного сигнала SIGSEGV. Необходимо для проверки создания отладочных образов памяти выполняемой программы (core dump).

SchemaDump "type"
Выдает описания полей для настроек по схеме type. Если type задан пустой строкой, выдается список известных схем.

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

MailModulesList
Выдает список инициализированных модулей обработки почты.

MailQueueList ["module_name"]
Выдает информацию о почтовой очереди модуля по его имени или общую очередь при отсутствии имени в запросе, где:

  • "module_name" — имя модуля.

Пример

MailQueueList "SMTP"

MailBatchList "module_name" [true]
Выдает информацию об ожидающих/активных блоках доставки очереди почтового модуля по его имени, где:

  • "module_name" — имя модуля.

Пример

MailBatchList "SMTP" [true]

ModuleReadConfig "module_name"
Выдает информацию с настройками модуля в виде словаря, где:

  • "module_name" — имя модуля.

Пример

Запросим информацию с настройками модуля SMTP:

ModuleReadConfig "SMTPI"
200 OK
{
  "Listener": {
    "MaxConnectionsPerAddress": 100,
    "MaxConnectionsPerNonClientAddress": -1,
    "Ports": [
      {
        "Address": "[::]:25",
        "InitialSecurity": "Off",
        "RestrictionData": "",
        "RestrictionType": "None"
      },
      {
        "Address": "[::]:465",
        "InitialSecurity": "On",
        "RestrictionData": "\n127.0.0.0/8\n",
        "RestrictionType": "None"
      },
      {
        "Address": "[::]:587",
        "InitialSecurity": "Off",
        "RestrictionData": "",
        "RestrictionType": "None"
      }
    ],
    "ReserveForClients": 10
  },
  "LogLevel": 5,
  "MaxChannels": 100,
  "MaxMessageSize": 10485760,
  "MaxProtocolErrors": 100,
  "PromptDelay": 0,
  "Workers": 10
}

ModuleUpdateConfig "module_name" keysToDelete keyValPairs
Обновляет настройки модуля, где:

  • keysToDelete — массив ключей для удаления из настроек (вместо них будут использоваться значения по умолчанию);

  • keyValPairs — массив вида ключ1,значение1,ключ2,значение2,…, по которому значения указанных ключей заменятся на новые.

ModuleSetLogLevel "module_name" value
Задает детализацию журналирования для модуля, где:

  • module_name — имя модуля;

  • value — числовое значение, которое соответствует уровню журналирования.

Значения для уровней журналирования value:

  • 0 — Критические ошибки;

  • 1 — Ошибки;

  • 2 — Информация;

  • 3 — Предупреждения;

  • 4 — Подробности;

  • 5 — Отладочный.

Пример

Для модуля IMAP установим уровень журналирования "Критические ошибки":

ModuleSetLogLevel "IMAP" 0
200 OK

ModuleGetSetting "module_name" "key"|["key1","key2",…​]
Выдает объект настроек "key" модуля с именем "module_name".

ModuleSetSetting "module_name" "key"|["key1","key2",…​] object
Устанавливает в значение object объект настроек "key" модуля с именем "module_name".

ModulDelSetting "module_name" "key"|["key1","key2",…​]
Удаляет объект настроек "key" модуля с именем "module_name", возвращая значение по умолчанию.

DigestList
Выдает список доступных методов хэширования.

CipherList
Выдает список доступных методов шифрования.

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

ThreadsList
Выдает список активных нитей исполнения.

ConnectionsList ("module" ("filter"))
Выдает список активных сетевых соединений. Если задано имя модуля, то выводится информация только о соединениях модуля. Если задан дополнительный строковый параметр, то выводится информация только о соединениях, чье описание содержит эту строку.

LogsList ("log_type")
Возвращает список лог файлов с размерами в байтах. Если тип логов не указан или указана пустая строка — возвращает список основных логов сервера. Тип лога может быть указан как "Mailbox", "Auth", "Settings", тогда команда вернет список логов папок, аутентификаций и настроек соответственно.

LogsRemove "log_type" ["log_name1" (,"log_name2", …​)]
Удаляет лог файлы указанного типа с именами (должны быть указаны без расширения), которые присутствуют в массиве. Тип логов либо пустая строка, тогда удаляются основные логи сервера, либо одна из строк "Mailbox", "Auth", "Settings", тогда команда удаляет логи папок, аутентификаций и настроек соответственно.

Maintenance [ "" | "domain.dom" | "user@domain.dom" ]*
Запускает задачу Maintenance для всего сервера, или для отдельного домена, или для отдельного аккаунта.

Задача на уровне аккаунта включает:

  • Очистку папки Корзины от старых сообщений;

  • Очистку папки Спам от старых сообщений;

  • Архивирование (перегруппировку) старых сообщений из папок INBOX и Отправленные;

  • Удаление старых сообщений из всех папок;

  • Архивирование (перегруппировку) старых календарных событий из главного календаря;

  • Удаление старых календарных событий из всех календарей.

Работа с доменами

DomainsList
Выдает список зарегистрированных доменов в виде словаря с числовыми ключами: ключ — это UID домена, значение — это основное имя домена. Если указать фильтр поиска filter, то будет произведена фильтрация по наличию подстроки как в основном доменном имени, так и в псевдониме.

Пример

Запросим список всех доменов на сервере:

DomainsList
200 OK
{
  "\/N 3": "admin.dom",
  "\/N 58": "domen.msk"

DomainCreate "string"
Инициирует создание домена с основным именем "string".

Пример

Создадим домен с именем test.dom:

DomainCreate "test.dom"
200 OK
57

При создании домена кроме имени ему присваивается числовой идентификатор domainUID. В примере создан домен с именем test.dom и domainUID — 57.

DomainRemove "string"|domainUID
Инициирует удаление домена с именем "string" или числовым идентификатором domainUID.

Пример

При удалении домена можно использовать его имя test.dom:

DomainRemove "test.dom"
200 OK

или его числовой идентификатор domainUID 57:

DomainRemove 57
200 OK

DomaneRename "string1"|domainUID "string2"
Инициирует переименование (смену основного имени) домена, где:

  • "string1"|domainUID — имя домена или его числовой идентификатор;

  • "string2" — новое имя домена.

При смене имени домена его числовой идентификатор не изменится.

Пример

Для переименования домена с именем domen.msk и domainUID=58 можно указать его имя domen.msk:

DomainRename "domen.msk" "domen.dom"
200 OK

или его числовой идентификатор domainUID 58:

DomainRename 58 "domen.dom"
200 OK

DomainGetID "string"
Выдает идентификатор домена domainUID по его имени "string".

Пример

DomainGetID "domen.dom"
58

Домен с именем domen.dom имеет идентификатор домена domainUID, равный 58.

DomainListNames "string"|domainUID
Выдает список всех имен домена по его имени "string" или числовому идентификатору domainUID.

Пример

DomainListNames "domen.dom"
200 OK
[
  {
    "domen.dom": 255
  },
  {
    "domen2.dom": 255
  }
]

DomainAddName "string1"|domainUID "string2" [flag]
Инициирует добавление имени "string2" с необязательным (его значение по умолчанию равно 255) флагом flag` домену с именем "string1" или числовым идентификатором domainUID.

Пример

DomainAddName "domen.dom" "domen2.dom"

или

DomainAddName 58 "domen2.dom"

DomainDelName "string1"
Инициирует удаление имени "string1" у домена с таким именем.

DomainUseName "string1"
Имя "string1" должно принадлежать домену и по выполнении команды становится основным (первым в списке присвоенных домену).

DomainMoveName "string1"|domainUID "string2"
Инициирует атомарный перенос имени "string2" домену с именем "string1" или числовым идентификатором domainUID.

DomainGetFlags "string"
Выдает флаги применения для имени домена "string".

DomainSetFlag "string" flag
Задает флаги применения flag для имени домена "string".

DomainReadConfig "string"|domainUID
Выдает объект настроек домена с именем "string" или числовым идентификатором domainUID.

DomainGetSetting "string"|domainUID "key"|["key1","key2",…​]
Выдает объект настроек "key" домена с именем "string" или числовым идентификатором domainUID.

DomainSetSetting "string"|domainUID "key"|["key1","key2",…​] object
Устанавливает в значение object` объект настроек "key" домена с именем "string" или числовым идентификатором domainUID.

DomainDelSetting "string"|domainUID "key"|["key1","key2",…​]
Удаляет объект настроек "key" домена с именем "string" или числовым идентификатором domainUID, возвращая значение по умолчанию.

DomainUpdateConfig "string"|domainUID keysToDelete keyValPairs
Обновляет настройки домена, где:

  • "domainName" — имя домена;

  • domainUID — числовой идентификатор домена;

  • keysToDelete — масив ключей для удаления из настроек (вместо них будут использоваться значения по умолчанию);

  • keyValPairs — массив вида ключ1,значение1,ключ2,значение2,… , по которому значения указанных ключей заменятся на новые.

DomainsDefaults (true|false)
Выдает объект настроек по умолчанию для локальных доменов.

  • Если дополнительно передан параметр true, то словарь содержит описания полей.

  • Если дополнительный параметр установлен в false, то выдается объект настроек без учета жестко заданных в программе.

DomainsGetDefault "key"|["key1","key2",…​]
Выдает объект настроек по умолчанию для локальных доменов "key".

DomainsSetDefault "key"|["key1","key2",…​] object
Устанавливает в значение object объект настроек по умолчанию для локальных доменов "key".

DomainsDelDefault "key"|["key1","key2",…​]
Удаляет объект настроек "key" из настроек локальных доменов по умолчанию, возвращая значение по умолчанию.

DomainsUpdatedDefs keysToDelete keyValPairs
Обновляет настройки по умолчанию для локальных доменов, где:

  • keysToDelete — масив ключей для удаления из настроек (вместо них будут использоваться значения по умолчанию);

  • keyValPairs — массив вида ключ1,значение1,ключ2,значение2,…​, по которому значения указанных ключей заменятся на новые.

Работа с объектами в доменах

Первым параметром всегда является либо имя домена domainName, либо идентификатор домена domainUID.

ObjectList "domainName"|domainUID
Выдает список зарегистрированных в домене объектов в виде словаря с числовыми ключами: ключ — UID объекта, значение — основное имя объекта.

ForwarderCreate "domainName"|domainUID "fwdname" "destination"
Инициирует создание объекта "переадреасатор" с основным именем "fwdname" для перенаправления в "destination".

GroupCreate "domainName"|domainUID "grpname"
Инициирует создание объекта "группа" с основным именем "grpname".

ObjectRemove "domainName"|domainUID "objname"|accountUID
Инициирует удаление объекта с именем "objname" или числовым идентификатором objectUID.

ObjectRename "domainName"|domainUID "objName"|objectUID "newName"
Инициирует переименование (смену основного имени) объекта с именем "objname" или числовым идентификатором objectUID в "newName".

ObjectGetID "domainName"|domainUID "objname"
Выдает UID объекта по его имени "objname".

ObjectListNames "domainName"|domainUID "objname"|objectUID
Выдает список всех имен объекта по его имени "objname" или числовому идентификатору "objectUID".

ObjectAddName "domainName"|domainUID "objname"|objectUID "newname" [flag]
Инициирует добавление имени "newname" с необязательным (его значение по умолчанию равно 255) флагом flag объекту с именем "objname" или числовым идентификатором objectUID.

ObjectDelName "domainName"|domainUID "objname"
Инициирует удаление имени "objname" у объекта с таким именем.

ObjectUseName "accountName"
Имя "accountName" должно принадлежать объекту и по выполнении команды становится основным (первым в списке присвоенных объекту).

ObjectMoveName "domainName"|domainUID "accountName"|accountUID "movedname"
Инициирует атомарный перенос имени "movedname" объекту с именем "accountName" или числовым идентификатором accountUID.

ObjectGetFlags "domainName"|domainUID "string"
Выдает флаги применения для имени объекта "string".

ObjectSetFlags "domainName"|domainUID "string" flag
Задает флаги применения flag для имени объекта "string".

ObjectReadConfig "domainName"|domainUID "objname"|objectUID
Выдает объект настроек объекта с именем "objname" или числовым идентификатором objectUID.

ObjectGetSetting "domainName"|domainUID "objname"|objectUID "key"|["key1","key2",…​]
Выдает объект настроек "key" объекта с именем "objname" или числовым идентификатором objectUID.

ObjectSetSetting "domainName"|domainUID "objname"|objectUID "key"|["key1","key2",…​] object
Устанавливает в значение object объект настроек "key" объекта с именем "objname" или числовым идентификатором objectUID.

ObjectHasInList "domainname"|domainUID "objname"|objUID "key"|["key1","key2",…​] object
Проверяет присутствие значения object` в списке объекта настроек "key" объекта с именем "objname" или числовым идентификатором objUID.

ObjectAddToList "domname"|domUID "objname"|objUID "key"|["key1","key2",…​] object
Добавляет значение object в список объекта настроек "key" объекта с именем "objname" или числовым идентификатором objUID.

ObjectDelInList "domname"|domUID "objname"|objUID "key"|["key1","key2",…​] object
Удаляет значение object из списка объекта настроек "key"` объекта с именем "objname" или числовым идентификатором objUID.

ObjectDelSetting "domainName"|domainUID "objname"|objectUID "key"|["key1","key2",…​]
Удаляет объект настроек "key" объекта с именем "objname" или числовым идентификатором objectUID, возвращая значение по умолчанию.

ObjectUpdateConfig "domainName"|domainUID "objname"|objectUID keysToDelete keyValPairs
Обновляет настройки объекта с именем "objname" или числовым идентификатором objectUID в домене с именем "domainName" или числовым идентификатором domainUID.

  • keysToDelete — масив ключей для удаления из настроек (вместо них будут использоваться значения по умолчанию);

  • keyValPairs — массив вида ключ1,значение1,ключ2,значение2,… , по которому значения указанных ключей заменятся на новые.

Работа с аккаунтами

AccountCreate "domainName"|domainUID "accountName"
Инициирует создание объекта "учетная запись" с основным именем "accountName".

AccountsDefaultProfileCreate "domainName"|domainUID|null "profile_name"
Создает профиль по умолчанию в домене с именем "domainName" или числовым идентификатором domainUID.

Если вместо идентификатора домена передан null, то именованный блок настроек по умолчанию создается на уровне сервера (могут быть изменены на уровне домена).

Профиль с именем "profileName" создается с пустым словарем настроек.

AccountsDefaultProfileRemove "domainName"|domainUID|null "profile_name"
Удаляет профиль по умолчанию "profile_name" в домене с именем "domainName" или числовым идентификатором domainUID.

Если вместо идентификатора домена передан null, то именованный блок настроек по умолчанию удаляется на уровне сервера.

AccountsDefaultProfileList "domainName"|domainUID|null (true)
Выводит список всех профилей по умолчанию в домене с именем "domainName" или числовым идентификатором domainUID.

Если задан дополнительный параметр true, то выдается список доступных профилей без учета наследования от умолчаний старших уровней.

AccountSetPassword "domainName"|domainUID "accountName"|accountUID "string" ["tag"]
Задает пароль объекта "учетная запись" в значение "string", дополнительно может быть указана метка пароля "tag" (пустая строка для основного пароля).

AccountSetPassword "domen.dom" "user1" "12345"
204 OK

AccountVerifyPWD "domainName"|domainUID "accountName"|accountUID "string" ("tag")
Проверяет пароль объекта "учетная запись" на соответствие "string", дополнительно может быть указана метка пароля "tag" (пустая строка для основного пароля).

AccountGetPassword "domainName"|domainUID "accountName"|accountUID ["tag"]
Извлекает пароль объекта "учетная запись" по метке пароля "tag" (пустая строка для основного пароля).

AccountsDefaults "domainName"|domainUID|null ("profile_name") (true|false)
Выдает объект настроек по умолчанию для аккаунтов в домене с именем "domainName" или числовым идентификатором domainUID.

  • Если вместо идентификатора домена передан null, то зачитываются настройки по умолчанию на уровне сервера (могут быть изменены на уровне домена).

  • Если передано имя профиля "profile_name"`, то выдается именованный блок настроек с таким именем (профиль настроек по умолчанию).

  • Если дополнительно передан параметр true, то словарь содержит описания полей, если же он false, то выдаются настройки без применения настроек по умолчанию более высокого уровня.

AccountsGetDefault "domainName"|domainUID|null "key"|["key1","key2",…​] ("profile_name")
Выдает объект настроек по умолчанию для аккаунтов в домене с именем "domainName" или числовым идентификатором domainUID.

  • Если вместо идентификатора домена передан null, то зачитывается настройка по умолчанию на уровне сервера (может быть изменена на уровне домена).

  • Если передано имя профиля "profile_name", то настройка сначала ищется в именованном блоке настроек с таким именем.

AccountsSetDefault "domainName"|domainUID|null "key"|["key1","key2",…​] object ("profile_name")
Устанавливает в значение object объект настроек по умолчанию для аккаунтов в домене с именем "domainName" или числовым идентификатором domainUID.

  • Если вместо идентификатора домена передан null, то устанавливается настройка по умолчанию на уровне сервера (может быть изменена на уровне домена).

  • Если передано имя профиля "profile_name", то настройка изменяется в именованном блоке настроек с таким именем.

AccountsDelDefault "domainName"|domainUID|null "key"|["key1","key2",…​] ("profile_name")
Удаляет объект настроек "key" по умолчанию для аккаунтов в домене с именем "domainName" или числовым идентификатором domainUID.

  • Если вместо идентификатора домена передан null, то удаляется настройка по умолчанию на уровне сервера.

  • Если передано имя профиля "profile_name", то настройка удаляется из именованного блока настроек с таким именем.

AccountsUpdateDefs "domainName"|domainUID|null keysToDelete keyValPairs ("profile_name")
Обновляет настройки по умолчанию для аккаунтов в домене с именем "domainName" или числовым идентификатором domainUID.

Если вместо идентификатора домена передан null, то изменяются настройки по умолчанию на уровне сервера (может быть изменена на уровне домена).

  • keysToDelete — масив ключей для удаления из настроек (вместо них будут использоваться значения по умолчанию);

  • keyValPairs — массив вида ключ1,значение1,ключ2,значение2,…​, по которому значения указанных ключей заменятся на новые. Если передано имя профиля "profile_name", то настройки изменяются в именованном блоке настроек с таким именем.

AccountListNamespaces "domainName"|domainUID "accountName"|accountUID
Выдает список пространств имен почтовых папок у данного аккаунта.

AccountListMailboxes "domainName"|domainUID "accountName"|accountUID "name_space"
Выдает список почтовых папок аккаунта, в том числе доступных из других аккаунтов.

Параметр "name_space" может быть пустой строчкой (для своих папок) или в формате "~user@domain/" для расшареных папок из другого аккаунта.

Если "name_space" содержит (или не содержит) доступные на показ для этого аккунта папки, то он будет автоматически добавлен в список (удален из списка) пространств имен почтовых папок этого аккаунта.

Для проверки используется команда AccountListNamespaces.

Пример

AccountListMailboxes "domain.dom" "user" "~shared@domain.dom/"

AccountGetMailStorageSize "domainName"|domainUID "accountName"|accountUID (true)
Выдает размер почты (сумму размеров всех папок) в аккаунте. С параметром true выполняет пересчет размеров папок.

Работа с группами

GroupListMembers "domainName"|domainUID "group_name"|group_UID (true ("filter"))
Выдает список членов группы.

С параметром true выдает почтовые адреса членов (иначе — канонические имена для локальных членов группы).

С помощью filter можно ограничить список членами, подпадающими под шаблон.

Если вместо группы передать идентификатор аккаунта, то выдается список групп, в которых участвует этот аккаунт.

GroupAddAccount "domainName"|domainUID "group_name"|group_UID "address" (true)
Добавляет "address" в список членов группы.

С параметром true добавляется почтовый адрес (иначе — для локальных членов группы запоминаются их UID).

GroupDelAccount "domainName"|domainUID "group_name"|group_UID "address" (true)
Удаляет "address" из списка членов группы.

С параметром true поиск ведется по "address" с применением маршрутизации по почтовому адресу.

GroupHasAccount "domainName"|domainUID "group_name"|group_UID "address" (true)
Возвращает имя (или адрес — с параметром true) члена группы по "address".

GroupGetOwner "domainName"|domainUID "group_name"|group_UID
Возвращает имя владельца группы, если оно задано для группы. Владелец имеет возможность управлять группой, не имея административных прав.

GroupSetOwner "domainName"|domainUID "group_name"|group_UID "address"
Задает имя владельца группы. Владелец имеет возможность управлять группой, не имея административных прав.

Работа с папками

Первым параметром команд всегда является либо имя домена domainName, либо идентификатор домена domainUID. Вторым параметром всегда является либо имя аккаунта accountName, либо идентификатор аккаунта accountUID.

MailBoxesList "domainName"|domainUID "accountName"|accountUID optMode ["class"]
Выдает словарь всех папок аккаунта. Ключи словаря — полные имена папок, построенные в зависимости от последнего необязательного параметра:

  • 0 — имена в UTF-8

  • 1 — имена в модифицированной кодировке UTF-7

  • 2 — имена поддиректорий в директории аккаунта

MailboxCreate "domainName"|domainUID "accountName"|accountUID "fullName" ("class")
Создает новую папку с именем "fullName" и классом "class" (если данный параметр не существует, то используется класс mail). Поддерживаемые значения class: mail, calendar.

Все варианты имени Inbox корневой папки приводятся к верхнему регистру INBOX.

Пример

MailboxCreate "domen.dom" "user1" "INBOX" "mail"
200 OK
{
  "mode": 3,
  "name": "INBOX",
  "parent": 0,
  "type": 0,
  "uid": 1
}

MailboxRename "domainName"|domainUID "accountName"|accountUID "oldFullName" "newFullName"
Переименовывает папку с полным именем "path/oldName" в имя "path/newName". Часть "path" меняться не должна.

Пример

MailboxRename "test.dom" "user1" "Sent" "Отправленные"
200 OK

MailboxRemove "domainName"|domainUID "accountName"|accountUID "fullName"
Удаляет папку с полным именем "path/name" вместе со всеми вложенными папками.

MailboxGetACL "domainName"|domainUID "accountName"|accountUID "fullName"
Выдает ACL папки в виде словаря. Папка может быть задана в виде "~user@domain/mailbox". Для выдачи корневого ACL аккаунта нужно указать имя папки как пустую строку для себя, или "~user@domain/" для другого аккаунта.

MailboxUpdateACL "domainName"|domainUID "accountName"|accountUID "fullName" "identifier" ("modifier")
Меняет элемент "identifier" в ACL папки.

  • Если "modifier" не указан, или это пустая строка, то "identifier" удаляется из ACL.

  • Если "modifier" начинается с символов + и -, тогда новые права соответственно добавляются или удаляются из старых.

  • Если все права удалены, то "identifier" удаляется из ACL.

  • Если "modifier" начинается с '*', то устанавливаются все права.

Папка может быть задана в виде "~user@domain/mailbox".

MboxGetInfo "domname"|domUID "accname"|accUID "mailboxname" "settingskey"
Выдает значение метаданных почтовой папки mailboxname по ключу settingskey.

MboxSetInfo "domname"|domUID "accname"|accUID "mailboxname" "settingskey" (object)
Устанавливает метаданных почтовой папки mailboxname по ключу settingskey в значение object. Если значение object не указано, ключ settingskey будет удален из метаданных.

ObjectGetInfo "domname"|domUID "accname"|accUID "settingskey"
Выдает значение метаданных объекта по ключу settingskey.

ObjectSetInfo "domname"|domUID "accname"|accUID "settingskey" (object)
Устанавливает метаданных объекта по ключу settingskey в значение object. Если значение object не указано, ключ settingskey будет удален из метаданных.

ObjectIncInfo "domname"|domUID "accname"|accUID "settingskey" "delta" "limitkey"
Увеличивает значение обычного счетчика в метаданных объекта по ключу settingskey на значение delta в соответствии с пределом, установленным в настройках объекта по ключу limitkey.

ObjectIncTimedInfo "domname"|domUID "accname"|accUID "settingskey" "delta" "limitkey"
Увеличивает значение счетчика с ограничением по времени в метаданных объекта по ключу `settingskey
на значение delta в соответствии с пределом, установленным в настройках объекта по ключу limitkey.

MailboxGetMyRights "domainName"|domainUID "accountName"|accountUID "fullName"
Выдает права аккаунта на папку в виде строки. Папка может быть задана в виде "~user@domain/mailbox".

CalendarGetACL "domainName"|domainUID "accountName"|accountUID "fullName"
Выдает ACL календаря с именем fullName в виде словаря. Имя календаря может быть задано как ~user@domain/Calendar. Для выдачи корневого ACL нужно указать имя календаря как пустую строку для себя или ~user@domain/ для другого аккаунта.

CalendarUpdateACL "domainName"|domainUID "accountName"|accountUID "fullName" "identifier" ("modifier")
Меняет элемент identifier в ACL календаря. Имя календаря может быть задано как ~user@domain/Calendar.

  • Если "modifier" не указан, или это пустая строка, то "identifier" удаляется из ACL.

  • Если "modifier" начинается с символов + и -, тогда новые права соответственно добавляются или удаляются из старых.

  • Если все права удалены, то "identifier" удаляется из ACL.

  • Если "modifier" начинается с '*', то устанавливаются все права.

CalendarGetMyRights "domainName"|domainUID "accountName"|accountUID "fullName"
Выдает права аккаунта на календарь в виде строки. Имя календаря может быть задано как ~user@domain/Calendar.

Работа с административными правами

RolesList "dom.name"|domUID|null
Выдает список административных ролей (именованных наборов прав) для домена или всего сервера (если первым параметром указан null).

RoleCreate "dom.name"|domUID|null "role" ([rights])
Создает административную роль для домена или всего сервера (если первым параметром указан null) с именем role и набором прав из массива rights.

RoleRemove "dom.name"|domUID|null "role"
Создает административную роль домена или всего сервера (если первым параметром указан null) с именем role.

RoleGet "dom.name"|domUID|null "role"
Выдает список административных прав для роли role в домене или во всем сервере (если первым параметром указан null).

RoleUpdate "dom.name"|domUID|null "role" [rghtsDel] [rghtsAdd]
Изменяет административную роль для домена или всего сервера (если первым параметром указан null) с именем role, удаляя из нее права из массива rghtsDel и добавляя права из массива rghtsAdd.

AdminsList "dom.name"|domUID|null
Выдает список административных аккаунтов для домена или всего сервера (если первым параметром указан null).

AdminCreate "dom.name"|domUID|null "user@domain" ([rights])
Для домена или всего сервера (если первым параметром указан null) дает административные права из массива rights пользователю "user\@domain"`.

AdminRemove "dom.name"|domUID|null "user@domain"
Удаляет администратора "user\@domain" из списка администраторов домена или всего сервера (если первым параметром указан null).

AdminInfo "dom.name"|domUID|null "user@domain"
Выдает список административных прав и ролей для для роли администратора "user\@domain" в домене или во всем сервере (если первым параметром указан null).

AdminUpdate "dom.name"|domUID|null "user@domain" [rghtsDel] [rghtsAdd]
Изменяет административные права и роли администратора "user\@domain" в домене или во всем сервере (если первым параметром указан null), удаляя из нее права из массива "rghtsDel" и добавляя права из массива "rghtsAdd".

*AccountGetRights "domainname"|domUID "accountname"|accUID
Выдает список административных прав, выданных аккаунту на общесерверном (по пустому ключу) и домменом (ключ с UID домена) уровнях.

Работа со справочником

В зависимости от настроек справочник может обращаться к тому или иному серверу (postgres,ldap, …).

DirectoryFind "base_dn" "scope" "filter" "fields" "sorting" "cookie" limit
Выдает список записей справочника соответствующих запросу:

  • base_dn — базовый DN;

  • scope — тип поиска ( base — запись с указанным DN; one — непосредственные дочерние записи для указанного DN; sub — все дочерние записи для указанного DN);

  • filter — фильтр формата (=). Значение может содержать * (любое число любых символов) и ? (один любой символ). Для объединения нескольких условий используются (&(…​)(…​)) (выполнение всех условий) или (|(…​)(…​)) (выполнение хотя бы одного из условий). (м.б. пустым);

  • fields — атрибуты для получения по каждой записи (массив строк). * — все доступные атрибуты;

  • sorting — сортировка результатов в формате [+-]. Первый символ определяет направление сортировки. (м.б. пустым);

  • cookie — текст, возвращенный последней записью предыдущего результата, для загрузки следующей страницы (м.б. пустым);

  • limit — максимальное число записей в ответе (1..500, м.б. пустым, тогда = 100).

DirectoryAdd "dn" "{attributes}"
Добавляет запись с указанным dn и заданными атрибутами в формате json.

DirectoryUpdate "dn" "{changed_attributes}" "server"`
Обновляет/объединяет атрибуты записи с указанным dn заданными атрибутами в формате json.

DirectoryMove "dn" "new_dn"
Переименовывает/перемещает запись с указанным "dn" в запись с "new_dn".

DirectoryRemove "dn"
Удаляет запись с указанным "dn".

Работа со справочником в PostgreSQL

PgDirectoryFind "base_dn" "scope" "filter" ["field"(,"field"…​)] "sorting" "cookie" limit "server"
Выдает список записей справочника, хранимого в БД, соответствующих запросу:

  • base_dn — базовый dn;

  • scope — тип поиска (base — запись с указанным dn; one — непосредственные дочерние записи для указанного dn, sub — все дочерние записи для указанного dn);

  • filter — фильтр формата (<поле>=<значение>). Значение может содержать * (любое число любых символов) и ? (один любой символ). Для объединения нескольких условий используются (&(…​)(…​)) (выполнение всех условий) или (|(…​)(…​)) (выполнение хотя бы одного из условий). (м.б. пустым);

  • fields — атрибуты для получения по каждой записи (массив строк). * — все доступные атрибуты;

  • sorting — сортировка результатов в формате [+-]<название атрибута>. Первый символ определяет направление сортировки. (м.б. пустым);

  • cookie — текст, возвращенный последней записью предыдущего результата, для загрузки следующей страницы (м.б. пустым);

  • limit — максимальное число записей в ответе (1..500, м.б. пустым, тогда = 100);

  • server — URI с параметрами доступа к серверу вида postgres://user:pass@host:port/db.

PgDirectoryAdd "dn" "attributes" "server"
Добавляет запись с указанным dn и заданными атрибутами в формате json. server — URI с параметрами доступа к серверу вида postgres://user:pass@host:port/db.

PgDirectoryUpdate "dn" "changed_attributes" "server"
Обновляет/объединяет атрибуты записи с указанным "dn" заданными атрибутами в формате json.

"server" — URI с параметрами доступа к серверу вида postgres://user:pass@host:port/db.

PgDirectoryMove "dn" "new_dn" "server"
Переименовывает/перемещает запись с указанным "dn" в запись с "new_dn".

"server" — URI с параметрами доступа к серверу вида postgres://user:pass@host:port/db.

PgDirectoryRemove "dn" "server"
Удаляет запись с указанным "dn".

"server" — URI с параметрами доступа к серверу вида postgres://user:pass@host:port/db.

Клиент LDAP

LdapClientSearch "base_dn" "scope" "deref" "filter" ["field"(,"field"…​)] "attrsonly|all" size.limit time.limit "sorting" "cookie" "server"
Выдает список записей "server", соответствующих запросу:

  • base_dn — базовый dn;

  • scope — тип поиска ( base — запись с указанным dn, one — непосредственные дочерние записи для указанного dn, sub — все дочерние записи для указанного dn);

  • deref — тип разыменования ссылок ( never — никогда, always — всегда, searching — разыменовывать при определении дочерних объектов, finding — разыменовывать при определении базового объекта);

  • filter — фильтр формата (<поле>=<значение>). Значение может содержать * (любое число любых символов) и ? (один любой символ). Для объединения нескольких условий используются (&(…​)(…​)) (выполнение всех условий) или (|(…​)(…​)) (выполнение хотя бы одного из условий). (м.б. пустым);

  • fields — атрибуты для получения по каждой записи (массив строк);

  • attrsonly|all — выдавать только названия атрибутов (attrsonly) или также их значения (all);

  • size.limit — максимальное число записей в ответе (1..500, м.б. пустым, тогда = 100);

  • time.limit — максимальное время выполнения запроса LDAP-сервером;

  • sorting — сортировка результатов в формате [+-]<название атрибута>. Первый символ определяет направление сортировки. (м.б. пустым);

  • cookie — текст, возвращенный последней записью предыдущего результата, для загрузки следующей страницы (м.б. пустым). Игнорируется при size.limit == 0;

  • server — URI с параметрами доступа к серверу вида ldap://user:pass@host:port.

Работа с сессиями

SessiinList
Выдает список словарей сессий, каждый из которых содержит поля:

  • token — токен;

  • tsCreated — время создания;

  • tsActivity — время последнего доступа к сессии;

  • remoteAddress — IP-адрес, с которого была открыта сессия (при наличии);

  • clientAddress — IP-адрес за прокси-сервером (из HTTP-заголовка X-Forwarded-For), с которого была открыта сессия (при наличии);

  • authAccount — имя аутентифицированного пользователя (при наличии).

SessionCreate "domname"|domUID "accname"|accUID
Создает новую сессию для объекта "учетная запись" с именем "accname" или числовым идентификатором accUID в домене с именем "domname" или числовым идентификатором domUID. Результат выполнения содержит токен сессии.

SessionClose "string"
Закрывает сессию с токеном "string".

SessionGetInfo "string"
Выдает объект данных сессии с токеном "string".

SessionUpdateInfo "string" object
Обновляет/объединяет объект данных сессии с токеном "string" с объектом object.

SessionSendEvent "string" object
Направляет в сессию с токеном "string" объект события object.

Работа с правилами обработки почты

RulesListOptions "dom.name"|domUID|null "objname"|objUID|null "operations"|"conditions"|"actions"|"actionsext"
Выдает список операций, условий и действий для правил на уровне:

  • сервера (первые два параметра null);

  • домена (первый параметр — имя или UID домена, второй — null);

  • объекта (в первых двух параметрах заданы имена или UID домена и объекта в нем).

По ключу "actionsext" выдается словарь, где ключами являются названия действий, а значением:

  • null- для нейтральных действий, которые могут применяться неограниченно с другими в любом порядке;

  • true — для "терминирующих" действий, после которых невозможны любые другие действия;

  • false — для действий, с которыми неприменимы любые другие действия.

RulesList "dom.name"|domUID|null "objname"|objUID|null
Выдает список правил на уровне:

  • сервера (первые два параметра null);

  • домена (первый параметр — имя или UID домена, второй — null);

  • объекта (в первых двух параметрах заданы имена или UID домена и объекта в нем).

RuleGet "dom.name"|domUID|null "objname"|objUID|null "rulename"
Выдает конфигурацию правила "rulename" на уровне:

  • сервера (первые два параметра null);

  • домена (первый параметр — имя или UID домена, второй — null);

  • объекта (в первых двух параметрах заданы имена или UID домена и объекта в нем).

RuleDel "dom.name"|domUID|null "objname"|objUID|null "rulename"
Удаляет конфигурацию правила "rulename" на уровне:

  • сервера (первые два параметра null);

  • домена (первый параметр — имя или UID домена, второй — null);

  • объекта (в первых двух параметрах заданы имена или UID домена и объекта в нем).

RuleAdd "dom.name"|domUID|null "objname"|objUID|null "rulename" {rule:params}
Создает конфигурацию правила "rulename" согласно содержимому объекта {rule:params} на уровне:

  • сервера (первые два параметра null):

  • домена (первый параметр — имя или UID домена, второй — null):

  • объекта (в первых двух параметрах заданы имена или UID домена и объекта в нем).

RuleSet "dom.name"|domUID|null "objname"|objUID|null "rulename" {rule:params}
Изменяет конфигурацию правила "rulename" согласно содержимому объекта {rule:params} на уровне:

  • сервера (первые два параметра null);

  • домена (первый параметр — имя или UID домена, второй — null);

  • объекта (в первых двух параметрах заданы имена или UID домена и объекта в нем).

Передачей ключа "name" с новым значением имени правила можно правило переименовать.

Работа с плагинами

PluginList
Выдает весь список плагинов вместе с настройками и статусом (запущен, остановлен и т.д.).

PluginAdd "type" "name" {plugin:settings}
Создает плагин типа "type" и c именем "name", настройки плагина указываются в словаре {plugin:settings}.

PluginDel "type" "name"
Удаляет плагин типа "type" и c именем "name".

PluginStart "type" "name"
Выполняет попытку запуска плагина типа "type" и c именем "name".

PluginStop "type" "name"
Выполняет попытку остановки плагина типа "type" и c именем "name".

Работа с хранилищем некорректных файлов

Хранилище некорректных файлов содержит файлы, при обработке которых возникли ошибки и которые могут быть полезны при отладке и доработке сервера.

DefectedFileList
Получить список файлов в хранилище.

DefectedFileGet "name"
Получить содержимое указанного файла в base64.

DefectedFileClear
Очистить хранилище.

Работа с белыми и черными списками сетевых адресов

GetWhitelisted "IP address block"
Выдает белый список сетевых адресов, в качестве параметра принимает блок адресов в CIDR нотации.

Пример

GetWhiteListed "0.0.0.0/0"

В этом примере будут выведены все адреса из белого списка.

GetBlacklisted "IP address block"
Выдает черный список сетевых адресов, в качестве параметра принимает блок адресов в CIDR нотации.

Пример

GetBlackListed "0.0.0.0/0"

В этом примере будут выведены все адреса из черного списка.

SetWhitelisted "IP address"["IP address 1","IP address 2",…​]
Добавляет сетевые адреса в белый список, данные адреса не могут быть заблокированы в течение интервала времени, устанавливаемого в файле настроек. Если ранее адреса находились в черном списке, то они из него извлекаются. Если адреса уже находятся в белом списке, то время их нахождения в нем пролонгируется.

SetBlacklisted "IP address"["IP address 1","IP address 2",…​]
Добавляет сетевые адреса в черный список. Данные адреса будут заблокированы в течение интервала времени, устанавливаемого в файле настроек. Если ранее адреса находились в белом списке, то они из него извлекаются. Если адреса уже находятся в черном списке, то время их нахождения в нем пролонгируется.

DelWhitelisted "IP address"["IP address 1","IP address 2",…​]
Удаляет сетевые адреса из белого списка.

DelBlacklisted "IP address"["IP address 1","IP address 2",…​]
Удаляет сетевые адреса из черного списка.

Работа с календарями

CalendarUpdate "domain" "account" "calendar_mailbox" "calendar_object" "action"
Создает или обновляет календарную запись для указанного аккаунта в соответствии с объектом (VCALENDAR или специальное представление).

action = publish|cancel|accept|decline|force_publish|force_cancel|import. Все остальное = publish.

force_publish и force_cancel игнорируют проверку на версию события (sequence,dtstamp). import — только сохраняют событие без выполнения дополнительных действий (уведомления, обновление dtstamp, …​)

При пустом calendar_mailbox используется ящик по умолчанию для аккаунта.

CalendarSearch "domain" "account" "calendar_mailbox" "from" "till" "reference" count_before count_after "jump"|"vcal"|"raw"
Считывает все актуальные записи в календаре указанного аккаунта за заданный интервал времени.

Хранимая информация разбивается на отдельные события в соответствии с правилами повторения (rrule).
Вывести не более count_before до и count_after после времени reference.
Последний параметр опциональный и указывает на желаемый формат выдачи результатов.
При пустом calendar_mailbox используется ящик по умолчанию для аккаунта.

CalendarShow "domain" "account" "calendar_mailbox" "calendar_uid"|message_id "jump"|"vcal"|"raw"
Считывает информацию по календарному событию с заданным UID или из сообщения с заданным номером.

Хранимая информация возвращается в неизмененном виде. Последний параметр опциональный и указывает на желаемый формат выдачи результатов.

При пустом calendar_mailbox используется ящик по умолчанию для аккаунта.

CalendarSetAlarm "domain" "account" "calendar_mailbox" "calendar_uid" "calendar_recurrence" "alarm"
Заменяет напоминания для указанного календарного события аккаунта заданным (сокращенный VCALENDAR (VCALENDAR и VALARM) или специальное представление). При задани пустого списка — удаляет напоминания для события.

При пустом calendar_mailbox используется ящик по умолчанию для аккаунта.

CalendarFreeBusy "domain" "account" "calendar_mailbox" "from" "till" "jump"|"vcal"|"raw"
Считывает времена занятости в календаре указанного аккаунта за заданный интервал времени. Последний параметр опциональный и указывает на желаемый формат выдачи результатов.

При пустом calendar_mailbox используется ящик по умолчанию для аккаунта.

Интервал времени для поиска должен находиться в пределах [текущее время;текущее время + 30 дней]

CalendarProposal "domain" "account" "proposal_mailbox" proposal_message_id "calendar_mailbox" "calendar_uid" "recurrence_id" "accept"|"decline"
Применяет или отвергает предложение в календарное событие по события с calendar_uid и recurrence_id (опционально), которое хранится в письме proposal_message_id ящика proposal_mailbox.

При пустом calendar_mailbox используется ящик по умолчанию для аккаунта.

Работа с контактами

ContactsUpdate "domain" "account" "contacts_mailbox" "contacts_object"
Создает или обновляет запись по контакту для указанного аккаунта в соответствии с объектом (RFC или JUMP). При пустом contacts_mailbox используется ящик по умолчанию для аккаунта.

ContactsSearch "domain" "account" "contacts_mailbox" "search_uri" max_count "jump"|"rfc"|"raw"
Считывает все контакты указанного аккаунта в соответствии с запросом.

Формат запроса (search_uri): vcard://?uid=<uid>&fn=<fn_part>&email=<email_part>&title=<title_part>&name=<name_part>. Все поля запроса опциональные. Вывести не более max_count записей. Последний параметр указывает на желаемый формат выдачи результатов. При пустом contacts_mailbox используется ящик по умолчанию для аккаунта.

ContactsRemove "domain" "account" "contacts_mailbox" "vcard_uid"|message_id
Удаляет контакт с указанным UID vcard_uid или хранимый в указанном письме в заданном аккаунте message_id. При пустом contacts_mailbox используется ящик по умолчанию для аккаунта.

Работа с профилями SMTP-Input

smtpiProfilesList ("name") (true|false)

  • Если задан параметр "name", то выдает профиль SMTP-Input с этим именем в виде словаря.

  • Если не задан, то выдает все профили SMTP-Input в виде словаря.

  • Если дополнительно указан параметр true, то словарь с настройками содержит описание полей.

  • Если дополнительный параметр задан false, то словарь не содержит настроект по-умолчанию.

smtpiProfilesUpdate param1 ( param2 ( param3 ))
Обновляет профили SMTP-Input.

  • param1 = словарь — заменяет все профили

  • param1 = строка, param2 = словарь — заменяет содержимое профиля с именем param1 на param2

  • param1 = строка, param2 = null — удаляет профиль с именем param1

  • param1 = строка, param2 = строка, param3 = словарь — заменяет в профиле с именем * param1 элемент с именем param2 на объект param3

  • param1 = строка, param2 = строка, param3 = null — удаляет в профиле с именем param1 элемент с именем param2

Работа с профилями SMTP-Output

SMTPOProfilesList ("name") (true|false)

  • Если параметры не заданы, то возвращаются все профили SMTP-Output в виде словаря, в котором ключом является название профиля, а значением — словарь с его настройками без унаследованных умолчаний.

  • Если задан параметр name, то возвращается словарь с настройками профиля SMTP-Output с указанным именем с унаследованными настройками по-умолчанию.

  • Если дополнительно указан параметр true, то словарь с настройками содержит описание полей.

  • Если дополнительный параметр задан false, то словарь не содержит настроек по-умолчанию.

SMTPOProfilesUpdate param1 ( param2 ( param3 ))
Обновляет профили SMTP-Output.

  • Если param1 — словарь, заменяет содержимое всех профилей SMTP-Output, соответственно словарь в параметре должен иметь ожидаемый сервером формат.

  • Если param1 — строка, а param2 — словарь, содержимое профиля с именем param1 заменяется на содержимое param2.

  • Если param1 — строка, а param2 — null, профиль с именем param1 удаляется.

  • Если param1 — строка, param2 — строка, а param3 — допустимый объект настроек, в профиле с именем param1 элемент с именем param2 заменяется на объект param3.

  • Если param1 — строка, param2 — строка, а param3 указан как null, в профиле с именем param1 удаляется элемент с именем param2.

Работа со списками адресов

AddressListCheck "IP address" "address list as text"
Проверяет наличие адреса в списке.

Результат (число):

  • 1 = адрес включен в список;

  • 0 = не включен;

  • -1 = исключен;

  • -2 = ошибка: неизвестный вложенный список;

  • -3 = ошибка: слишком глубокая вложенность.

Также может вернуть ошибку "500 Bad format for an IP address".

Примеры:

AddressListCheck "10.0.0.1" "#NATed\n!10.0.0.2"
AddressListCheck "178.177.53.210" "#@*iva.ru"

AddressListGet ("name")
Если задан параметр name, то выдает список адресов с этим именем в виде строки. Если не задан, то выдает все именованные списки адресов в виде словаря.

Есть специальные имена, которые не выдаются в общем списке именованных адресов, но которые можно получить и изменить по-отдельности:

  • $BLOCKED  — "заблокированные";

  • $UNBLOCKABLE — "неблокируемые" или "белый список"; -$DEBUG  — "адреса под отладкой".

Пример: AddressListGet "LAN"

AddressListUpdate param1 ( param2 )
Обновляет списки адресов.

  • param1 = словарь — заменяет все именованные списки содержимым словаря;

  • param1 = строка, param2 = строка — заменяет содержимое списка с именем param1 на содержимое строки param2;

  • param1 = строка, param2 = null — удаляет список с именем param1.

Пример: AddressListUpdate "LAN_2" "10.1.1.0/8 ; сегмент2\n!10.1.1.2 ; исключение"

Работа с планировщиком задач

TaskSchedule "Param1" "Param2" ("Param3" ("Param4"))
Добавляет задание в расписание.

  • Param1 = строка с названием запланированного действия;

  • Param2 = время, в формате объекта времени, на которое запланировано выполнение действия;

  • Param3 = периодичность, в формате объекта продолжительности времени, с которой действие должно повторяться;

  • Param4 = любой объект, который необходимо передать для выполнения действия в качестве аргумента.

Примеры:

TaskSchedule "WriteToLog" "\/T 2025-08-27T11:00:00.000Z" 600000000
TaskSchedule "WriteToLog" "\/T 2025-08-27T11:00:00.000Z" "\/D 10m"
TaskSchedule "Maintenance" "\/T 2025-09-26T01:00:00.000Z" "\/D 24h" "*"

TaskCance TaskUID
Извлекает задание из расписания, в качестве параметра принимает уникальный идентификатор задания.

TasksList ("Param1" ("Param2"))
Возвращает список запланированных заданий.

  • Param1 = время, в формате объекта времени, начиная с которого будет сформирован список заданий;

  • Param2 = максимальное количество запланированных заданий в результате запроса.

Пример:

TasksList "\/T 2025-08-27T11:00:00.000Z" 100

HttpRequest "uri" "method" "body"
Выполняет HTTP-запрос к указанному адресу с заданными методом и телом и возвращает ответ.