IVA ДОКУМЕНТАЦИЯ ОБНОВЛЕНИЯ

IVA Mail Studio. Руководство оператора

Введение

Пошаговое руководство по работе с программой — клиентом протокола CMD сервера IVA Mail, который раньше использовался через telnet или nc. Предполагается, что у вас есть административная учётная запись на сервере и вы знаете, какую команду хотите выполнить; опыт работы именно с этим клиентом не требуется.

Установка

Установка не требуется. Скопируйте папку релиза в любое место и запустите:

IvaMailStudio.exe

В переданной вам папке находится:

Файл Описание

IvaMailStudio.exe

Файл программы, больше для запуска ничего не нужно.

README.en.txt

Краткое руководство на английском.

README.ru.txt

Краткое руководство на русском.

profiles.sample.json

Пример заполненного файла конфигурации.

example-script.txt

Заготовка для раздела "Выполнить сценарий".

docs\FEATURES.ru.html

Описание возможностей программы.

docs\MANUAL.ru.html

Руководство оператора.

docs\FEATURES.html

Описание возможностей программы на английском языке.

docs\MANUAL.html

Руководство оператора на английском языке.

При первом запуске список серверов пуст, о чём программа и сообщает:

Первый запуск: серверы ещё не добавлены.
Первый запуск: серверы ещё не добавлены

Добавление сервера

  1. Нажмите Добавить сервер.

  2. Заполните форму.

  3. Нажмите Сохранить.

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

Отображаемое имя

Название, под которым сервер будет виден в боковой панели. На сервер не передаётся.

Узел

Имя или адрес сервера.

Порт

8106 при использовании TLS, 106 без него.

Пользователь, Пароль

Административная учётная запись. Пароль хранится в зашифрованном виде см. Файлы и переносимость.

Использовать TLS

Неявный TLS, устанавливается до приветствия сервера. Рекомендуется оставлять включённым, если нет причин отказываться от него.

Проверять сертификат сервера

При открытии формы выключено: в кластерах IVA Mail обычно используются самоподписанные сертификаты. Включите для сервера с сертификатом, проверяемым по цепочке. Пока проверка отключена, боковая панель будет специально об этом напоминать.

Аутентификация

См. ниже.

Отправлять NOTIMEOUT

При открытии формы включено. Запрашивает у сервера тайм-аут чтения на 365 дней, чтобы сеанс, оставленный открытым на ночь, не разрывался.

Показывать рукопожатие

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

Отображение

Начальные настройки отображения для этого сервера: компактный вывод (действует в режиме «Текст», поэтому не виден, пока результат не переключён в него), сырые данные, подсветка, приходят ли результаты свёрнутыми и открывается ли каждый результат текстом, а не деревом. При открытии формы свёртывание включено. Компактный вывод, сырые данные, подсветка и свёртывание переключаются и во время сеанса — в заголовке терминала; выбор «дерево или текст» задаётся только здесь, и это то место, куда стоит зайти, если несколько следующих ответов нужны текстом, а потом снова деревом.

Выбор способа аутентификации

Значение Описание

LOGIN

Пароль передаётся по сети в открытом виде, так, как набран.

CRAM-MD5

По сети передаётся только хеш пароля.

DIGEST-MD5

То же, а сервер дополнительно подтверждает свою подлинность.

APOP

По сети передаётся только хеш.

Если подключение происходит без TLS, замените LOGIN на один из этих способов. Они защищают только пароль, а не весь остальной сеанс, и потому не заменяют TLS, но сделать это стоит. Сервер поддерживает все четыре способа.

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

Подключение

Выберите сервер в боковой панели и нажмите Подключиться.

Ещё до подключения на карточке сервера видно, каким будет соединение:

Жёлтая строка описывает текущие настройки профиля
Жёлтая строка описывает текущие настройки профиля, а не сообщает о неисправности

Возможные варианты в зависимости от настроек профиля.:

  • TLS, сертификат проверяется;

  • TLS, сертификат НЕ проверяется;

  • без TLS — пароль передаётся открыто;

  • без TLS — пароль защищён, трафик нет.

После подключения открывается терминал с итогом того, что произошло:

В строке состояния — сервер и номер сборки
В строке состояния — сервер и номер сборки, который он сообщил при подключении
Несколько серверов одновременно. Добавьте столько серверов, сколько нужно, и подключите все. Ctrl + Tab переключает между ними, Ctrl + 1…9 — переходит к нужному. У каждого сервера свой терминал, свой журнал и своё дерево объектов.

Профили: несколько списков адресов

Профиль — это именованный список серверов. В одной копии программы их может быть сколько угодно: продуктив, тестовый стенд, кластер заказчика. Открыт всегда ровно один. Выбор профиля находится вверху панели серверов, над тем списком, который он называет.

Выбор другого профиля полностью заменяет список серверов под ним.
Выбор другого профиля полностью заменяет список серверов под ним
При переключении серверы прежнего профиля отключаются. Сервер доступен только из того профиля, в котором он указан, поэтому его сеансы закрываются, а не остаются работать за списком, которого больше не видно. Если что-то подключено, программа сообщает, сколько сеансов будет закрыто, и ждёт подтверждения.
Кнопка Что делает

Создать

Создаёт пустой профиль и открывает его. Прежние серверы остаются в своём профиле.

Переименовать

Меняет имя открытого профиля. На серверы внутри это не влияет.

Удалить

Убирает профиль и перечисленные в нём серверы из файла настроек. На самих серверах ничего не меняется. Последний профиль удалить нельзя. Один профиль всегда должен быть открыт.

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

У каждого профиля свои серверы и на экране только они.
У каждого профиля свои серверы и на экране только они

Копирование сервера в другой профиль

  1. Нажмите Изменить на карточке сервера.

  2. Внизу формы, в поле Скопировать этот сервер также в, выберите профиль.

  3. Нажмите Сохранить.

Сервер остаётся на месте, копия переносится вместе с паролем. Повторное копирование того же сервера в тот же профиль отклоняется: это один и тот же сервер в двух списках, а не два разных. Поле появляется только тогда, когда есть куда копировать.

Профили или --data-dir

И то и другое даёт несколько наборов серверов, но отвечает на разные вопросы. Профили переключаются во время работы и используют общий файл настроек и общую папку transcripts\. Ключ --data-dir Файлы и переносимость задаётся при запуске и разделяет всё, включая журналы сеансов. Профили удобны, когда нужно «на минуту заглянуть в соседний кластер», --data-dir — когда конфигурации вообще не должны пересекаться.

Импорт серверов из файла

Кнопка Импорт из JSON под списком серверов читает файл profiles.json и добавляет описанные в нём серверы в открытый профиль. Принимаются оба формата.

Файл Где он обычно лежит

Старого клиента

dist\profiles.json рядом с его исполняемым файлом.

Этой программы

profiles.json рядом с той копией, которой он принадлежит: другая установка, резервная копия, файл коллеги.

Серверы и сохранённые пароли переносятся без изменений, исходный файл не изменяется. Поэтому обе программы могут работать параллельно, пока идёт переход, а повторный импорт того же файла ничего не добавляет.

В файле этой программы может быть несколько профилей. Все серверы из него попадают в открытый профиль: ничего не создаётся и не перестраивается без вашего ведома, а в строке состояния указано, из скольких профилей они пришли.

Файл, который не является списком серверов, отклоняется с объяснением причины. Программа сначала проверяет, что это действительно такой файл, и только потом что-либо из него читает — вместо того чтобы принять любой разбираемый JSON и показать серверы без имени и адреса.

Две прежние настройки поменяли смысл при переходе со старого клиента. Флажки inline и noescape раньше влияли на то, что присылает сервер. Теперь это только настройки отображения на стороне клиента: соединение само согласовывает нужные ему режимы, а форматирование выполняется здесь. Функциональность при этом не теряется.

Сохранённые пароли зашифрованы для одной машины и одной учётной записи Windows, поэтому файл, импортированный с другого компьютера, приносит список серверов, но пароли придётся ввести заново. См. Файлы и переносимость.

Выполнение команды

Наберите команду в поле внизу и нажмите Enter.

Начните набирать — появятся подходящие команды. Список приходит с того сервера, к которому вы подключены, поэтому всегда соответствует именно его набору команд.

Автодополнение — по списку команд подключённого сервера.
Автодополнение — по списку команд подключённого сервера
Быстрые клавиши Что делают

Up Down

Перемещение по списку либо по истории команд, когда список закрыт.

Space

Принять выделенное имя команды.

Esc

Закрыть список.

Tab

Перемещение по списку, пока он открыт.

Строка подсказки

Под полем ввода отображается сигнатура команды — та, что сообщил сам сервер:

Сигнатура набираемой команды.
Сигнатура набираемой команды

А для большинства команд ещё и краткое описание того, что она делает:

Сигнатура и описание вместе.
Сигнатура и описание вместе

Серый текст после курсора — подсказка. Он показывает форму того, что может идти дальше, а не конкретное значение, поэтому сам по себе не подставляется.

Tab — значение аргументов

Когда список закрыт, Tab запрашивает у сервера, что может стоять в набираемом аргументе:

  • имена доменов;

  • имена объектов;

  • имена модулей;

  • ключи настроек объекта или модуля;

  • фиксированные варианты из сигнатуры самой команды, например true, false и null.

Такие обращения к серверу попадают в журнал сеанса, как и любые другие команды, но в терминале не отображаются, если не включён показ рукопожатия: их отправляет программа от вашего имени, а не вы сами.

Прочитать результат

Каждый результат остаётся на строке, которая его вызвала. Отдельной панели «последний результат» нет, поэтому ничего никуда не перенаправляется и ничего нельзя случайно закрыть и потерять.

Результат отображается на своей строке в виде дерева.
Результат отображается на своей строке в виде дерева

Дерево, Текст и Таблица

У каждого результата свои кнопки просмотра, поэтому переключение одного не влияет на остальные.

Кнопка просмотра Описание

Дерево

Сворачиваемая структура. У закрытых веток показывается превью первых полей.

Текст

Ответ в виде текста — отформатированный или как есть.

Таблица

Доступна только для набора однородных записей. Открывается в отдельном окне.

Щелчок по корню сворачивает весь результат:

Результат свёрнут до корня.
Результат свёрнут до корня

Щелчок по ветке раскрывает её на месте:

Ветка раскрыта на месте: превью в заголовке уступает место содержимому.
Ветка раскрыта на месте: превью в заголовке уступает место содержимому

Или переключитесь на текстовый вид:

Тот же результат текстом.
Тот же результат текстом

Окно таблицы

Сортировка и фильтр — в отдельном окне.
Сортировка и фильтр — в отдельном окне
  • Щелчок по заголовку колонки сортирует по ней, повторный щелчок меняет порядок на обратный.

  • Поле фильтра сужает список; счётчик выше показывает, сколько строк отображено из скольких.

  • Закрытие окна ничего не меняет — результат по-прежнему на своей строке.

Кнопки в заголовке

Кнопка Описание

Подсветка

Подкрашивает коды состояния и содержимое ответов. При выключении всё отображается одним цветом.

Свернуть

Держит каждый результат закрытым до верхней строки — как уже полученные, так и последующие. Повторное нажатие при включённом свёртывании, если какое-то дерево было раскрыто вручную, сворачивает его и оставляет режим включённым; режим выключается только тогда, когда раскрывать уже нечего. Сервер может открываться сразу с включённым свёртыванием — Подключение.

Форматировать/ Как есть

Определяет вид результата в режиме Текст. На результат, показанный деревом, не влияет.

Поиск

Поиск по журналу — см. Поиск по журналу.

Кнопка "Свернуть" после того
Кнопка "Свернуть" после того, как одна команда по десятку учётных записей заполнила окно
Подсветка отключена.
Ни одна из этих кнопок не перестраивает журнал. Переключение подсветки или режима «Форматировать / Как есть» не влияет на уже свёрнутые ветки и положение прокрутки: каждый результат остаётся в том виде, в который вы его поставили.

Ошибки

Ответ 4xx или 5xx — обычный результат, а не разрыв соединения. Он отображается цветной строкой, и сеанс остаётся рабочим.

Отказ сервера отражён в журнале
Отказ сервера отражён в журнале, сеанс не прерван

Поиск по журналу

Нажмите Ctrl + F либо кнопку Поиск.

Переход к первому совпадению
Переход к первому совпадению, найденный фрагмент отмечен
  • Поиск идёт и по строкам статуса, и по содержимому ответов.

  • Найденный результат отображается под вызвавшей его командой — иначе несколько результатов с одинаковым 200 OK было бы невозможно отличить друг от друга.

  • Enter/Shift + Enter либо стрелки рядом с полем переводят между совпадениями.

  • При закрытии поиска положение прокрутки сохраняется — программа не возвращается вас вниз.

Экспорт журнала

Нажмите Экспорт журнала в заголовке. Экспортируется журнал выбранного сервера. Формат определяется расширением файла:

Расширение Формат

.json

JSON.

.csv

CSV — каждое поле в кавычках, с маркером порядка байтов, чтобы кириллица корректно открывалась в Excel.

.log .txt

Обычный текст.

Любой экспорт содержит исходный ответ сервера в том виде, в каком он был получен, независимо от того, что отображается на экране. Кроме того, журнал сеанса постоянно записывается в transcripts\ — см. Файлы и переносимость.

Просмотр объектов

Откройте вкладку Объекты.

Сначала загружается список доменов.
Сначала загружается список доменов

Раскройте домен — и его объекты будут запрошены именно в этот момент, а не заранее для всех доменов сразу.

В строке — имя объекта
В строке — имя объекта, его отображаемое имя (если задано), тип и UID
  • Фильтры Все типы / Учётные записи / Группы / Ресурсы ограничивают то, что запрашивается у сервера. Это параметр запроса, а не скрытие строк на клиенте, поэтому фильтрация большого домена происходит быстро.

  • Кнопка Обновить или клавиша F5 заново запрашивает данные с сервера.

Фильтр по одному типу объектов.
Фильтр по одному типу объектов

Настройки объекта

Выберите один объект — его настройки отобразятся рядом с деревом.

У каждой настройки — значение
У каждой настройки — значение, тип и происхождение значения
Отметка Что означает

задано здесь

Значение задано непосредственно на этом объекте.

наследуется

На объекте не задано. Значение берётся с ближайшего уровня, где оно задано: домена, сервера или кластера. Какого именно, сервер не сообщает.

не задано

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

только чтение

Сервер не примет изменение этого значения.

(чтение недоступно)

Сервер не раскрывает значение. Так отображаются, например, пароли.

По умолчанию панель открывается в режиме Только заданные здесь, поскольку именно это обычно и требуется при просмотре объекта. Снимите флажок, чтобы увидеть полную картину:

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

У доменов есть собственные настройки; они запрашиваются отдельной командой и отображаются так же:

Настройки домена.
Настройки домен
Панель только отображает настройки, но не изменяет их. Чтобы изменить значение, используйте веб-панель администрирования сервера либо выполните соответствующую команду в терминале — в этом случае журнал зафиксирует, что именно было отправлено и что пришло в ответ.

Поиск объектов по имени

Введите значение в верхнем поле и нажмите Enter либо Найти.

Совпадения отмечены
Совпадения отмечены, домены с находками раскрыты, домены без находок скрыты
  • Поиск ведётся по именам и псевдонимам во всех доменах.

  • Стрелки переводят между найденными, счётчик показывает "N в M доменах".

Ввод текста сам по себе ничего не меняет — каждый поиск обращается к серверу и выполняется только тогда, когда вы его запросили.

Поиск объектов по параметру

Этот поиск работает не по имени, а по значению параметра — то есть отвечает на вопросы вида «у каких объектов задан такой-то параметр и какое у него значение».

Наберите имя параметра во втором поле — например, IsAdmin, чтобы найти учётные записи с признаком администратора, — и нажмите Enter либо Найти.

Все объекты
Все объекты, задающие указанный параметр, с тем значением, которое у каждого стоит

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

Домены тоже участвуют в поиске — по собственному имени и по собственным настройкам: домен — такой же объект с конфигурацией, как и остальные. Найденный домен остаётся в дереве, даже если внутри него ничего не нашлось, и его можно выделить и выполнить над ним команду наравне с прочими результатами.

Что именно находится: объекты, которые задают параметр на себе, а не те, что наследуют его с уровня выше. Параметр, который никто не задаёт, и параметр, введённый с опечаткой, дают одинаково пустой результат. Если поиск ничего не находит, в первую очередь проверьте написание.

На большом сервере поиск занимает время, поскольку выполняется отдельной командой на каждый домен:

  • Кнопка Найти недоступна, пока поиск выполняется.

  • Стоп останавливает поиск после текущего домена, сохраняя уже найденное.

  • Сбросить прерывает поиск, очищает поля и возвращает дерево к исходному виду.

Результат поиска — обычное выделение, поэтому его можно сразу использовать в разделах Создание, переименование, удаление или Одна команда, много объектов.

Создание, переименование, удаление

Кнопки под деревом действуют на выбранный домен или объект.

Кнопка Описание

Новая учётная запись, Новая группа

Создаёт объект в выбранном домене. Программа запросит имя.

Переименовать

Переименовывает выбранный объект на сервере.

Удалить

Удаляет выбранный объект вместе с его хранилищем.

Каждое из этих действий сначала запрашивает подтверждение и точно указывает, что произойдёт — объект, его тип, UID и домен. Об удалении отдельно сказано, что отменить его нельзя, потому что это действительно так.

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

Выделения и сохранённые группы

Выберите несколько объектов в дереве — полоса над кнопками покажет, что именно выделено.

В полосе показано количество объектов и их тип.
В полосе показано количество объектов и их тип

В выделении могут быть объекты только одного типа. Если после учётных записей выбрать группу, выделение заменится, а не объединится с прежним. Следующее, что происходит с выделением, — это выполнение команды, а команда, подходящая учётной записи, редко подходит группе.

Сохранение выделения

Команда Сохранить как группу… присваивает выделению имя и сохраняет его вместе с профилем сервера. Позже такую группу можно выбрать из списка Сохранённые группы, команда Удалить группу удаляет запись.

Применённая сохранённая группа: в полосе видно
Применённая сохранённая группа: в полосе видно, из какой группы взято выделение

Сохранённая группа — это список объектов, который хранится в профиле клиента. Это не группа на сервере: такую создаёт кнопка Новая группа.

Кнопка Снять очищает выделение. Вместе с ним очищается и панель настроек.

Одна команда, много объектов

  1. Выберите объекты — вручную, из сохранённой группы или по результату поиска (Поиск объектов по имени, Поиск объектов по параметру).

  2. Перейдите на вкладку Терминал. Полоса над полем ввода показывает, что выделение сохранилось.

  3. Наберите команду, которую нужно выполнить для каждого из выбранных объектов.

  4. Нажмите Выполнить над выбранными и подтвердите действие.

Выделение переходит вместе с вами в терминале.
Выделение переходит вместе с вами в терминале

Как подставляются аргументы

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

Что видно в журнале

Каждая отправленная команда фиксируется по имени объекта, поэтому понятно, к какому ответу она относится. Результаты отображаются свёрнутыми.

Когда останавливается

При первом отказе сервера. В итоге сообщается, сколько команд из скольких выполнено успешно.

Кнопка Снять выделение на той же полосе сбрасывает объекты, выбранные во вкладке «Объекты».

Выполнить на нескольких серверах

  1. Подключите нужные серверы.

  2. Наберите команду в поле ввода терминала — с тем же автодополнением и подсказками, что и для любой другой команды.

  3. Нажмите Выполнить на… в заголовке.

  4. Отметьте серверы. Есть кнопки Отметить все и Снять все.Выбор серверов намеренно оставлен за вами, поскольку при одновременном подключении к промышленному серверу и тестовым стендам «все» — редко то, что нужно.

  5. Нажмите Выполнить.

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

Сравнить ответы

Если ответы разошлись, в итоге предлагается кнопка Сравнить.

Сравнение выполняется по содержимому ответа, а не по строке статуса: два сервера, одинаково ответившие 200 OK, — это как раз тот случай, когда важно увидеть различие в данных.

Окно построено по параметрам. Каждый различающийся параметр указан по точечному пути (Router.Limits.Max, ciphers[1]), а под ним — каждое значение по одному разу, с перечнем серверов, которые его дали, и их количеством; первым идёт значение, с которым согласно большинство. Поэтому параметр, по которому двадцать серверов разошлись на два значения, — это две строки, а не двадцать, и вопрос, ради которого окно открывают, — кто отличается и чем, — виден прямо в структуре таблицы.

Два различающихся параметра на четырёх серверах
Два различающихся параметра на четырёх серверах, сгруппированные по значению
Столбец Что в нём

Параметр

Точечный путь, повторяется в каждой строке этого параметра.

Значение

Что ответили эти серверы. Если параметра у сервера нет вовсе, написано (здесь не задано), а не оставлена пустая ячейка.

Серверы с таким значением

Их имена в том порядке, в каком они перечислены в запуске.

Сколько

Количество — чтобы длинный список имён, обрезанный по ширине, всё равно поддавался счёту.

Перечисляются только различающиеся параметры — в настройках их сотни, и включение совпадающих скрыло бы те немногие, что действительно важны, — а строка над таблицей сообщает, сколько параметров разошлось и сколько серверов было опрошено. Массивы сравниваются по позициям, поэтому изменение порядка элементов также остаётся заметным.

Выполнить сценарий

Сценарий — обычный текстовый файл: по команде на строку, пустые строки и строки, начинающиеся с #, игнорируются. Файл example-script.txt из папки релиза — безопасная отправная точка: он выполняет только команды чтения.

# По команде на строку. Пустые строки и строки с # игнорируются.

PING
MyRights
SystemInfo
DomainsList
  1. Подключите серверы.

  2. Нажмите Выполнить сценарий и выберите файл.

  3. Прочитайте окно подтверждения. В нём указаны число команд, список серверов и первые десять команд сценария — до того, как что-либо отправлено.

  4. Нажмите Выполнить сценарий.

Сценарий выполняется на всех подключённых серверах, а не только на выбранном подмножестве. Отключите заранее те серверы, которых он не должен касаться.

Каждая команда завершается на всех серверах, прежде чем начнётся следующая. Для последовательности изменяющих команд это принципиально: иначе один сервер может остаться на середине сценария, пока остальные уже выполнят его до конца.

Выполнение останавливается при первой ошибке. Сценарий обычно представляет собой последовательность связанных действий, и продолжать после того, как один из шагов не выполнился, как правило, не имеет смысла.

Клавиатура

Горячие клавиши Описание

Ctl + L

Очистить экран. В журнале сеанса всё сохраняется.

Ctl + Tab

Следующий сервер.

Ctl + Shift + Tab

Предыдущий сервер.

Ctl + 1…​9

Перейти к серверу.

Ctl + F

Поиск по журналу.

Ctl + C

Скопировать выделенное в выводе.

F5

Обновить дерево объектов.

Выделение вывода

Вывод выделяется мышью так же, как обычный текст на странице. Выделение свободно тянется от любой строки до любой другой: команда, строка ответа и содержимое под ней — это один сплошной текст, а не три отдельных поля. Ctl+C копирует выделенное. Двойной щелчок выделяет имя целиком — например, corp.dom или user@host, если тянуть за верхний или нижний край, вывод прокручивается сам.

Результат, выделенный целиком, копируется целиком — со всеми уровнями дерева, даже если на экране они свёрнуты. У свёрнутой ветки показаны только первые несколько полей, и это краткая сводка, а не данные, — копировать её вместо содержимого смысла нет. Если выделить часть результата, скопируется ровно то, что выделено.

Как только вы начинаете набирать команду, выделение снимается, и Ctl + C снова копирует из поля ввода.

В поле ввода команды

Горячие клавиши Описание

Enter

Выполнить.

Up Down

История команд либо список автодополнения, пока он открыт.

Space

Принять выделенное имя команды.

Esc

Закрыть список.

Tab

Перемещение по списку, пока он открыт. Иначе — запрос к серверу о возможных значениях аргумента..

В поле поиска Enter / Shift + Enter переводят между совпадениями.

Файлы и переносимость

Всё, что программа читает и записывает, находится рядом с исполняемым файлом:

Файл Описание

IvaMailStudio.exe

profiles.json

Профили и их серверы, сохранённые группы и настройки отображения.

transcripts\

По одному файлу журнала на сеанс.

Программа не записывает данные в %APPDATA%, %LOCALAPPDATA%, Program Files или реестр и не использует интеграцию с оболочкой Windows. Папку можно скопировать на промежуточный узел, в общий каталог или на флешку — всё будет работать, при удалении папки не останется следов.

Расположение файлов определяется папкой исполняемого файла, а не текущим рабочим каталогом, поэтому ярлык с другой рабочей папкой всё равно найдёт список серверов.

Несколько конфигураций из одной копии

IvaMailStudio.exe --data-dir configs\prod
IvaMailStudio.exe --data-dir configs\test

profiles.json и transcripts\ при этом создаются внутри указанной папки. Относительный путь отсчитывается от папки исполняемого файла — по той же причине, что и выше. Если указанный ключ запуска программе непонятен, она останавливается с подсказкой, а не запускается на папке по умолчанию с ощущением, что серверы пропали.

Пароли

Пароли в profiles.json зашифрованы средствами Windows DPAPI и привязаны к конкретной машине и учётной записи Windows.

Копия, перенесённая на другой компьютер, сохранит список серверов, но запросит пароли заново. Это ожидаемое поведение такого шифрования, а не ограничение, которое стоит обходить.

Чтение сигнатуры команды

В строке подсказки используется штатная нотация сервера:

ObjectsList "domname"|domUID ("filter"|true|false) (start limit ([fields]))
Параметр Описание

"name"

Строка в кавычках.

domUID

Число без кавычек.

|

Или.

( … )

Необязательная часть — скобки являются обозначением и не набираются.

[ … ]

Массив JSON.

Имя принимается везде, где в нотации указано "dom.name"|domUID, поэтому UID — это допустимая возможность, а не обязательное требование; для чтения удобнее использовать имя.

Префиксы типов в значениях

Значения получают префикс типа там, где тип не очевиден из самого JSON:

Параметр Описание

\/T

Момент времени.

\/D

Длительность.

\/S

Размер данных.

\/I

IP-адрес.

\/P

Адрес с портом.

\/F

Число, за которым следует текст.

Язык

Русский и английский язык интерфейса переключаются списком в заголовке окна. Изменение применяется сразу, без перезапуска программы, а выбор сохраняется вместе с профилями серверов.

Интерфейс на английском языке.
Интерфейс на английском языке

Если что-то пошло не так

Что видно Что это значит Что делать

Красная строка 4xx / 5xx

Сервер отклонил команду. Это обычный результат выполнения.

Сверьте аргументы с сигнатурой в строке подсказки. Сеанс при этом остаётся в рабочем состоянии.

Рассинхронизирован — переподключитесь

Выполнение команды было прервано, и соединение намеренно закрыто: ответ, полученный наполовину, невозможно достоверно сопоставить с последующими командами.

Нажмите Переподключить.

Ошибка аутентификации сразу при подключении

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

Измените профиль и попробуйте LOGIN либо уточните, какие механизмы поддерживает сервер.

Ошибка сертификата при подключении

Включена настройка Проверять сертификат сервера, а сертификат не прошёл проверку.

Если это тестовый стенд с самоподписанным сертификатом — осознанно отключите проверку. Если это промышленный сервер — выясните причину изменения сертификата.

Сохранённый пароль не принимается после переноса папки

DPAPI привязывает пароль к исходной машине и учётной записи — см. Файлы и переносимость.

Введите пароль заново на этой машине.

Серверы пропали

Вероятно, программа запущена с другим значением --data-dir, либо файл профилей находится не там, где предполагается.

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

Поиск ничего не находит

Для Поиск объектов по параметру — либо параметр называется иначе, либо он действительно не задан ни на одном объекте. Эти два случая неразличимы.

Проверьте правильность написания имени параметра.

Журнал сеанса в папке transcripts\ содержит всё: полное протокольное рукопожатие и команды, которые программа отправляла от вашего имени, — независимо от того, отображались ли они на экране. Когда одного снимка экрана недостаточно, чтобы разобраться в произошедшем, обратитесь к этому файлу.

Отключение от сервера не очищает журнал: выполненные команды остаются доступными для просмотра.
Отключение от сервера не очищает журнал: выполненные команды остаются доступными для просмотра