Далее, в тексте понятие дерево 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
.