Содержание
Manjary имеет довольно объёмную конфигурацию позволяющую тонко настроить различные аспекты работы. Большое количество параметров не требует изменений и может использовать значения по-умолчанию. Самые значимые изменения в конфигурации описаны в Быстрая конфигурация. Минимально необходимые настройки.
Далее, в тексте понятие дерево XML означает узел содержащий дочерние узлы. Понятие узел может означать как дерево XML, так и узел содержащий значение. Строки "..." в листингах демонстрирующих формат участков конфигурации указывают на то, что узел на предыдущей строке может быть задан множество раз.
Уровень подробности отладочной информации
задаётся целым числом от 1 (минимальный) до 5 (максимальный) -
глобально значением узла logging/level. Для
отдельных модулей уровень подробности может быть изменён на значения
узлов log-level в соответствующих местах конфигурации. Это
полезно при поиске проблем в конкретной подсистеме сервера, для этого
достаточно указать уровень подробности отладочной информации для
соответствующего модуля выше глобального.
Все разделы конфигурации предполагающие описание
приёма сетевых запросов на подключение от клиентов имеют узлы
host. Допускается указание нескольких узлов host
для каждой подсистемы Структура XML деревьев host одинакова
для всех серверных подсистем. Скажем, клиент SMTP - не серверная
подсистема, а клиентская, поэтому у неё XML дерево имеет
более простую структуру.host
В полном виде XML дерево host выглядит так:
<host> <timeout>time</timeout> <clients-limit>N</clients-limit> <clients-per-ip-limit>N</clients-per-ip-limit> <SSL-certificate-file>filename</SSL-certificate-file> <SSL-key-file>filename</SSL-key-file> <SSL-key-password>secret</SSL-key-password> <SSL-min-version>none|SSLv3|TLSv1|TLSv1.1|TLSv1.2|TLSv1.3</SSL-min-version> <bind SSL="0|1" IPv6only="0|1">hostname:port|IPv4:port|*:port|[IPv6]:port|[::]:port|socket_name</bind> ... <acl> <addr type="permit|deny">ip_address</addr> <addr type="permit|deny">ip_address/number_of_bits_mask</addr> <addr type="permit|deny">ip_address/dotted_decimal_mask</addr> <addr type="permit|deny">ip_address_1-ip_address_2</addr> <addr type="permit|deny">all|any|0/0</addr> ... </acl> </host>
Максимальное время отсутствия активности клиента. Если клиент не проявляет активности указанное время, он будет отключён. Максимальное значение - 3 h. Значение по-умолчанию: 25 min.
Максимальное количество клиентов. Если количество клиентов достигло этого значения, новые соединения не будут обслуживаться. По-умолчанию - не ограничено.
Максимальное количество клиентов с одним адресом IP. Если количество клиентов с одинаковым адресом достигло этого значения, новые соединения с данного IP не будут обслуживаться. По-умолчанию - не ограничено.
Файл в формате PEM содержащий сертификат или цепочку
сертификатов. Этот узел переопределяет значение такого же узла
заданного на одном уровне с узлами host или
глобально. Используется для шифрованных соединений (т.е. имеются
узлы bind с атрибутом SSL=1 или
используется STARTTLS).
Файл в формате PEM содержащий приватный ключ. Этот узел
переопределяет значение такого же узла заданного на одном уровне
с узлами host или глобально. Используется для
шифрованных соединений (т.е. имеются узлы bind с атрибутом SSL=1 или
используется STARTTLS).
Задаёт пароль если приватный ключ указанный в узле SSL-key-file защищён паролем. Этот узел
переопределяет значение такого же узла заданного на одном уровне
с узлами host или глобально. Используется для
шифрованных соединений (т.е. имеются узлы bind с атрибутом SSL=1 или
используется STARTTLS).
Устанавливает минимально поддерживаемую версию протокола
SSL: SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3. Этот узел может
быть задан если предполагаются шифрованные соединения.
Рекомендуемое на сегодняшний день значение - TLSv1.2.
По-умолчанию принимаются запросы на установку протокола любой
версии. Этот узел переопределяет значение такого же узла
заданного на одном уровне с узлами host или
глобально. Используется для шифрованных соединений (т.е. имеются
узлы bind с атрибутом SSL=1 или
используется STARTTLS).
Прослушиваемый порт TCP/IP на котором будут приниматься
соединения. Значение состоит из адреса IP или имени локального
интерфейса, двоеточия и номера порта. Если нет необходимости
ограничиваться конкретным сетевым интерфейсом, вместо его адреса
указывается символ "*" для любого адреса IPv6 и любого адреса
IPv4, если не указан параметр IPv6only="1" или [::]
для любого интерфейса IPv6 на котором также могут приниматься
подключения на адрес IPv4, если не указан параметр IPv6only="1". Если порт не указан,
значение узла bind рассматривается как имя локального
сокета. Может быть задано множество узлов bind. Если
указан атрибут SSL=1, то на данном порту будут приниматься
только шифрованные соединения, это не относится к таким вещам
как STARTTLS, когда соединение переходит в шифрованный режим
позже по инициативе клиента.
Для параметров IPv6only и
SSL вместо 1 может быть указано одно из значений: enable, yes, on,
true.
В Windows до
версии 10 не поддерживаются локальные именованные
сокеты.
Список контролирующий
возможность подключения клиентов по их адресу IP. По-умолчанию
(при отсутствии узла acl или если
узел пуст) - разрешены подключения любых клиентов. Если адрес в
не пустом списке не найден, он считается запрещённым.
Значения SSL-certificate-file, SSL-key-file, SSL-key-password, SSL-min-version могут быть указаны для всего
набора узлов host находящихся на одном уровне. Для этого
достаточно указать узлы SSL-* не в XML-дереве host, а на один уровень выше - в узле который
содержит множество узлов host. При этом,
если заданы узлы SSL-* в каком-либо XML-дереве host, они
будут переопределять значения соответствующих узлов заданных вне
данного узла host.
Также, значения SSL-certificate-file,
SSL-key-file, SSL-key-password, SSL-min-version могут быть указаны глобально для
любых узлов host в любых разделах конфигурации. Для этого
узлы SSL-* указываются как непосредственные потомки корневого узла
server. Их значение может быть переопределено в других
местах конфигурации.
В различных узлах конфигурации используется формат задания временных интервалов в виде последовательности значений вида N[sec|s|min|m|hour|hours|h|day|days|d|week|weeks|w], Где N - целое число; sec или s - секунды; min или m - минуты; hour, hours или h - часы; day, days или d - дни (одни день - 24 часа); week, weeks или w - недели. Одиночное целое значение без указания размерности задаёт количество секунд.
Примеры:
1h 30min
Один час и тридцать минут.
2 Hours 5 Min 10 Sec
Два часа, пять минут и десять секунд.
50 или 50
sec
Пятьдесят секунд.
Некоторые узлы, например, такие как host/acl, определяют
принадлежность адреса IP клиента к заданному множеству. XML деревья
данного типа имеют дочерние узлы addr значения которых
являются адресом IP или диапазоном адресов. Диапазоны могут задаваться
в следующих видах:
Пример: 192.168.1.0/24
Пример: 192.168.1.0/255.255.255.0
Пример: 192.168.1.1-192.168.1.254
Соответствует любому адресу.
Атрибуты type узлов addr принимают одно из двух значений: permit - адрес разрешён и deny - адрес запрещён. При проверке адреса на
принадлежность списку, узлы addr
просматриваются в том порядке как они записаны в конфигурации, если
адрес попадает в указанный диапазон, он считается принятым если type имеет значение permit, либо запрещённым если type имеет значение deny.
Узлы и атрибуты являющиеся переключателями,
т.е. те, которые могут принимать одно из двух значений - ИСТИНА или
ЛОЖЬ, например, logging/screen, могут задаваться
разными ключевыми словами являющимися синонимами:
Для "ИСТИНА": 1, enable, yes, on, true
Для "ЛОЖЬ": 0, disable, no, off, false
Значения узлов указывающих количество байт или объём данных могут представлять собой целое число с указанием размерности: N[byte|bytes|b|kb|k|mb|m|gb|g|tb|t].
Примеры:
1 Kb
1 килобайт (1024 байта)
1 mb
1 мегабайт (1024 килобайта)
128 bytes
128 байт
В некоторых параметрах конфигурации для
сопоставления имён хостов, доменов и других строковых данных
используются шаблоны. В шаблонах могут встречаться метасимволы:
* (звездочка) для любой последовательности символов
(включая пустую), ? (вопросительный знак) для
одного любого символа, квадратные скобки
[...] для перечисления
допустимых символов (например, [abc] или [0-9]), позволяя задавать
наборы или диапазоны. Если после [ (открывающая
квадратная скобка) указан символ ^, то набору или
диапазону будет соответствовать любой символ не входящий в указанный
набор или диапазон.
Если в набор необходимо включить символ ']', он должен идти
первым после [ или ^. Символ
\ используется для экранирования: если в шаблоне
необходимо указать один из символов '*', '?', '[', ']', '\' как часть
текста, перед ним указывается \.
В настоящее время шаблоны используются только для сопоставления с именами хостов или доменов, где символы '*', '?', '[', ']', '\' недопустимы. Поэтому последний абзац приведён только как формальная информация.
Сравнение не-метасимволов регистронезависимое.