Далее, в тексте понятие дерево XML означает узел содержащий дочерние узлы. Строки "..." в листингах демонстрирующих формат участков конфигурации указывают на то, что предыдущий узел может быть задан множество раз.
Уровень подробности отладочной информации
задаётся целым числом от 1 (минимальный) до 5 (максимальный) -
глобально значением узла logging
/level
. Для
модулей уровень подробности может быть изменён на значения узлов
log-level
в соответствующих местах конфигурации. Это
полезно при поиске проблем в конкретной подсистеме сервера, для этого
достаточно указать уровень детализации для отдельного модуля выше
глобального.
Все разделы конфигурации предполагающие описание
приёма сетевых соединений от клиентов имеют узлы host
.
Допускается указание нескольких узлов host
для каждой
подсистемы Структура XML деревьев host
одинакова для всех
серверных подсистем. Скажем, клиент SMTP - не серверная подсистема, а
клиентская, поэтому у неё XML дерево host
имеет более
простую структуру.
В полном виде XML дерево host
выглядит так:
<host> <threads>N</threads> <threads-max>N</threads-max> <timeout>time</timeout> <clients-limit>N</clients-limit> <TLS-certificate-file>filename</TLS-certificate-file> <TLS-key-file>filename</TLS-key-file> <TLS-min-version>none|SSLv3|TLSv1|TLSv1.1|TLSv1.2|TLSv1.3</TLS-min-version> <bind TLS="0|1">ip_address:port|*:port</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>
Число параллельных нитей обслуживающих активные соединения. Если через соединение передаются данные или выполняется операция инициированная событием протокола, это занимает отдельную нить, когда очередной блок данных передан драйверу протокола для отправки и нет данных от пользователя, нить переходит к обслуживанию следующего соединения или ожидает активности на других соединениях.
Максимальное число нитей. Если все нити заняты, создаётся
новая. Общее количество нитей ограничивается значением данного
узла. Неиспользуемые нити завершаются после некоторого
тайм-аута, пока их количество не снизится до значения указанного
в threads
.
Тайм-аут активности клиента. Если клиент не проявляет активности указанное время, он будет отключён. Максимальное значение - 3 h. Значение по-умолчанию: 25 min.
Максимальное количество клиентов. Если количество клиентов достигло этого значения, новые соединения не будут обслуживаться. По-умолчанию - не ограничено.
Файл в формате PEM содержащий сертификат. Этот узел должен быть задан если предполагаются шифрованные соединения.
Файл в формате PEM содержащий приватный ключ. Этот узел должен быть задан если предполагаются шифрованные соединения.
Устанавливает минимально поддерживаемую версию протокола SSL: SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3. Этот узел может быть задан если предполагаются шифрованные соединения. Рекомендуемое на сегодняшний день значение - TLSv1.2. По-умолчанию принимаются запросы на установку протокола любой версии.
Прослушиваемый порт TCP/IP на котором будут приниматься
клиентские соединения. Значение состоит из адреса IP локального
интерфейса, двоеточия и номера порта. Если нет необходимости
ограничиваться конкретным сетевым интерфейсом, вместо его адреса
указывается символ "*". Может быть задано множество узлов
bind
. Если указан атрибут TLS
=1
, то на
данном порту будут приниматься только шифрованные соединения,
это не относится к таким вещам как STARTTLS, когда соединение
переходит в шифрованный режим позже по инициативе
клиента.
Список
контролирующий возможность подключения клиентов по их адресу IP.
По-умолчанию (при отсутствии узла acl
или если узел
пуст) - разрешены подключения любых клиентов. Если адрес в не
пустом списке не найден, он считается запрещённым.
В различных узлах конфигурации используется формат задания временных интервалов в виде последовательности значений вида 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
Для атрибутов обычно указываются значение 1
для ИСТИНА и 0
для ЛОЖЬ.