Далее, в тексте понятие дерево 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> <TLS-certificate-file>filename</TLS-certificate-file> <TLS-key-file>filename</TLS-key-file> <TLS-key-password>secret</TLS-key-password> <TLS-min-version>none|SSLv3|TLSv1|TLSv1.1|TLSv1.2|TLSv1.3</TLS-min-version> <bind SSL="0|1">hostname:port|ip_address: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 содержащий сертификат. Этот узел должен быть задан если предполагаются шифрованные соединения.
Файл в формате PEM содержащий приватный ключ. Этот узел должен быть задан если предполагаются шифрованные соединения.
Задаёт пароль если приватный ключ указанный в узле TLS-key-file защищён паролем.
Устанавливает минимально поддерживаемую версию протокола SSL: SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3. Этот узел может быть задан если предполагаются шифрованные соединения. Рекомендуемое на сегодняшний день значение - TLSv1.2. По-умолчанию принимаются запросы на установку протокола любой версии.
Прослушиваемый порт TCP/IP на котором будут приниматься
клиентские запросы на подключения. Значение состоит из адреса IP
или имени локального интерфейса, двоеточия и номера порта. Если
нет необходимости ограничиваться конкретным сетевым интерфейсом,
вместо его адреса указывается символ "*". Может быть задано
множество узлов bind. Если указан атрибут SSL=1(вместо
"1" может быть указано одно из значений: enable, yes, on, true), то на
данном порту будут приниматься только шифрованные соединения,
это не относится к таким вещам как STARTTLS, когда соединение
переходит в шифрованный режим позже по инициативе
клиента.
Список контролирующий
возможность подключения клиентов по их адресу IP. По-умолчанию
(при отсутствии узла acl или если узел пуст) -
разрешены подключения любых клиентов. Если адрес в не пустом
списке не найден, он считается запрещённым.
Значения TLS-certificate-file, TLS-key-file, TLS-key-password, TLS-min-version могут быть указаны для всего
набора узлов host находящихся на одном
уровне. Для этого достаточно указать узлы TLS-* не в XML-дереве host, а на один уровень выше - в узле который
содержит множество узлов host. При этом,
если заданы узлы TLS-* в каком-либо XML-дереве host, они будут переопределять значения
соответствующих узлов заданных вне данного узла host.
Также, значения TLS-certificate-file,
TLS-key-file, TLS-key-password, TLS-min-version могут быть указаны глобально для
любых узлов host в любых разделах конфигурации. Для этого узлы TLS-*
указываются как непосредственные потомки корневого узла 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.