Manjary имеет довольно объёмную конфигурацию позволяющую тонко настроить различные аспекты работы. Большое количество параметров не требует изменений и может использовать значения по-умолчанию. Самые необходимые изменения в конфигурации описаны в Быстрая конфигурация. Минимально необходимые настройки.
Корневым узлом конфигурации является server
.
Конфигурация состоит из основной части и конфигураций модулей в
соответствующих узлах.
<server> <pid-file overwrite="0|1">filename</pid-file> <logging>...</logging> <name-resolution>...</name-resolution> <module-dir>path</module-dir> <load-module>filename</load-module> ... <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> <module-XXXXX>...</module-XXXXX> ... </server>
<pid-file overwrite="0|1">filename</pid-file>
Задаёт имя т.н. pid-файла - текстового файла в котором будет
записан числовой идентификатор процесса manjary
. При нормальном завершении
процесса pid-файл удаляется. Если атрибут overwrite
установлен в 1
и pid-файл на момент запуска уже существует -
он будет перезаписан. Если значение узла пустое, используется имя
файла по-умолчанию (его можно найти в лог-файле). По-умолчанию, если
узел не задан, файл создаваться не будет.
Настройки журналирования.
<logging> <file>filename</file> <screen>Yes|No</screen> <level>N</level> <history>N</history> <size-max>bytes</size-max> </logging>
Полное имя лог-файла. Если путь не указан, лог-файл будет создан в директории где находится исполняемый файл.
Переключатель. Указывает, следует ли выводить записи на консоль. По-умолчанию: yes.
Уровень детализации лог-файла. От 1 (наименьший) до 5 (самый подробный). По-умолчанию: 4.
Количество лог-файлов в ротации. Когда нужно начать новый
файл, текущий file.ext
переименовывается в
file
-000.ext, перед этим старый
file
-000.ext переименовывается в
file
-001.ext и т.д., самый старый файл удаляется.
По-умолчанию: 0.
Ротация может быть выполнена принудительно в любой момент
времени, для этого необходимо послать сигнал SIGALRM
процессу manjary
. Для автоматизации этого
используйте пакетный файл
rotate.cmd
.
Максимальный размер
лог-файла. Когда достигается это значение выполняется ротация
лог-файлов. Если size-max
установлено в 0, ротация
будет происходить каждый раз при переходе на новые сутки, а
формат имён лог-файлов в ротации будет следующим:
file-YYYYMMDD.ext
. По-умолчанию: 0.
Узел name-resolution
позволяет настроить подсистему
разрешения доменных имён. Если данный узел отсутствует - будут
использованы системные настройки.
<name-resolution> <use-hosts-first>Yes|No</use-hosts-first> <domain>name</domain> <server>IP address</server> ... </name-resolution>
Переключатель, задающий
когда будет просматриваться файл hosts
- до
обращения к серверу DNS или после, если имя или адрес IP не
найдены.
Имя домена по-умолчанию.
Один или несколько узлов server
задают адреса
IP серверов DNS.
module-dir
Если узел задан, его значение указывает директорию в которой находятся подключаемые модули. По-умолчанию модули будут загружаться из директории в которой находится исполняемый файл.
load-module
Множество узлов указывающих какие модули следует загружать. Значения узлов - имена файлов модулей. Каждый модуль имеет заданное имя (не путать с именем файла модуля). Конфигурации модулей находятся в узлах с именами module-XXXXX, где XXXXX - имя модуля.
Таблица 3.1. Имена модулей и их файлов.
Имя модуля | Загружаемый файл | Дерево XML конфигурации |
---|---|---|
mail.dll | module-Mail | |
SMTP | smtp.dll | module-SMTP |
POP3 | pop3.dll | module-POP3 |
IMAP | imap4.dll | module-IMAP |
HTTP | http.dll | module-HTTP |
SpamCheck | spamchk.dll | module-SpamCheck |
Helpers | helpers.dll | module-Helpers |
AB | ab.dll | module-AB |
SMTPWeasel | smtpwsl.dll | module-SMTPWeasel |
Модуль Mail отвечает за хранение и управление информацией о доменах, пользователях, почтовых ящиках и сообщениях. Также данный модуль реализует командный строковый интерфейс (CLI) использующийся для управления сервером.
<module-Mail> <log-level>N</log-level> <plain-auth>Yes|No</plain-auth> <mail-root>path</mail-root> <hostname>host.name.dom</hostname> <default-domain>name.dom</default-domain> <trusted> <addr>...</addr> ... </trusted> <DKIM l="0|1" t="0|1" sha1="0|1"> <canonicalization>[simple|relaxed]/[simple|relaxed]</canonicalization> <fields>From, To, +Subject</fields> <body-limit>1 mb</body-limit> </DKIM> <host>...</host> ... <pswd-complexity> <condition length="N" complexity="weak|good|strong"> <case-mix>Yes|No</case-mix> <alpha-dig-mix>Yes|No</alpha-dig-mix> <alnum-other-mix>Yes|No</alnum-other-mix> <alphabetic>N</alphabetic> <lowercase>N</lowercase> <uppercase>N</uppercase> <digits>N</digits> <alphanum>N</alphanum> <others>N</others> </condition> ... </pswd-complexity> </module-Mail>
Переключатель, устанавливающий возможность авторизации в интерфейсе CLI с открытым паролем через незашифрованное сетевое соединение. По-умолчанию авторизация с открытым паролем запрещена.
Указывает директорию где будут храниться данные доменов, пользователей, почтовых ящиков, сообщения в почтовых ящиках, очередь входящих и исходящих сообщений и другая информация. Это единственный узел который при изменении требует остановки и повторного запуска сервера.
Основное DNS-имя хоста на котором запущен сервер.
Главный почтовый домен или домен по-умолчанию который будет обслуживаться данным сервером. Это имя будет использоваться в различных ситуациях, например, при авторизации пользователя без указания в имени пользователя доменной части. По-умолчанию используется имя домена хоста на котором работает сервер.
Необязательный узел ACL задающий адреса IP клиентов которым будет разрешено отправлять почту на другие домены без авторизации. Как правило, к таким клиентам относятся пользователи локальных сетей.
Необязательный узел описывающий свойства сигнатуры DKIM
создаваемой для почтовых сообщений отправляемых на другие
серверы. Атрибуты l
, t
, sha1
могут принимать значения 1
(включено) или 0
(выключено): l
- устанавливать тег
l
подписи даже если сообщение не превышает
ограничения (см. узел body-limit
), t
- указывать в подписи метку времени,
sha1
- использовать алгоритм sha1
вместо rsa-sha256 (не рекомендуется).
Устанавливает алгоритмы канонизации заголовка и тела сообщения: simple или relaxed. Требует указания двух алгоритмов через слэш.
Список полей заголовка сообщения использующихся для подписи. Имена разделяются пробелом, запятой, двоеточием или точкой с запятой. Если имя начинается с символа "+", оно будет добавлено в подпись (без символа "+") даже если отсутствует в заголовке, что защищает сообщение с подписью от добавления этого поля на пути следования до адресата. По-умолчанию используется предопределённый список полей.
Устанавливает максимальный размер тела сообщения который будет
использоваться для подписи. Если тело сообщения превышает это
значение, для подсчёта сигнатуры будет использовано только
указанное число байт, а в подпись будет добавлен тег
l
с указанием количества использованных
байт.
Узел описывает сетевой сервер для CLI.
Необязательный параметр. Устанавливает требования к
сложности паролей задаваемых через CLI. По-умолчанию
используются предустановленные настройки. Представляет собой
список узлов condition
описывающих различные
сложности паролей и присваивающих им уровни weak, good или
strong. Если вводимый пароль подходит под одно из условий, он
считается допустимым. Уровни сложности представляют из себя
подсказки для пользователя: weak - слабый пароль, рекомендуется
усложнить, good - достаточно сложный пароль, strong - надёжный
пароль. WEB-интерфейс использует
эти значения для показа пользователю соответствующих текстовых
подсказок при вводе паролей. Узлы condition
имеют
обязательный параметр минимальной длинны пароля и сортируются по
нему, при проверке пароля узлы просматриваются от самого
большого значения этого параметра к наименьшему.
Условие для назначения вводимому паролю уровня сложности.
Атрибут length
задаёт минимальную
длину пароля при которой проверяется условие. Атрибут complexity
устанавливает уровень
сложности пароля если он соответствует данному условию: weak
, good
,
strong
. Все дочерние узлы являются
необязательными, можно указать несколько из них, только одно или
ни одного.
Переключатель, задаёт требование к наличию как прописных, так и строчных букв алфавита.
Переключатель, задаёт требование к наличию букв алфавита и цифр.
Переключатель, задаёт требование к наличию букв алфавита/цифр и других символов.
Задаёт минимальное количество букв алфавита.
Задаёт минимальное количество строчных букв алфавита.
Задаёт минимальное количество прописных букв алфавита.
Задаёт минимальное количество цифр.
Задаёт минимальное количество цифр/букв алфавита.
Задаёт минимальное количество символов не являющихся цифрами и буквами алфавита.
Модуль реализует сервер и клиент протокола
SMTP
, а также управляет
очередью исходящих (отправляющихся на другие серверы)
сообщений.
<module-SMTP> <queue> <log-level>N</log-level> <scan-queue-dir>timeout</scan-queue-dir> <mem-queue-length-max>N</mem-queue-length-max> <original-size-max>N</original-size-max> <gateway-for>domain1 domain2 ...</gateway-for> ... <attempts> <max>N</max> <notify-attempt>N</notify-attempt> <delay after="1">time</delay> <delay after="N">time</delay> ... </attempts> </queue> <server> <log-level>N</log-level> <host>...</host> ... <no-auth-port>N</no-auth-port> ... <greeting>string</greeting> <hops-max>N</hops-max> <plain-auth>Yes|No</plain-auth> <hide-received>Yes|No</hide-received> <TLS-only>No|All|Foreign</TLS-only> <instant-delivery>Yes|No</instant-delivery> <message-max>bytes</message-max> <auth-fail-max>N</auth-fail-max> <bad-cmd-max>N</bad-cmd-max> <bad-cmd-delay>N</bad-cmd-delay> <relays>...</relays> </server> <client> <log-level>N</log-level> <host>...</host> <connections-max>N</connections-max> <timeout-greeting>timeout</timeout-greeting> <timeout-MAIL>timeout</timeout-MAIL> <timeout-RCPT>timeout</timeout-RCPT> <timeout-DATA>timeout</timeout-DATA> <timeout-DATA-transit>timeout</timeout-DATA-transit> <timeout-DATA-end>timeout</timeout-DATA-end> <ignore-8BITMIME>Yes|No</ignore-8BITMIME> <relays> <relay> <to>domain1 domain2 ...</to> <to>domain3</to> ... <via>server1 server2 ...</via> <via>server3</via> ... </relay> ... </relays> <using-TLS> <destination type="domain|server" TLS="allow|deny|required">name</destination> ... </using-TLS> <first-chunk-max>bytes</first-chunk-max> <chunk-max>bytes</chunk-max> </client> </module-SMTP>
Интервал времени между сканированиями директории очереди сообщений. При каждом сканировании загружаются те задания на отправку, которые должны быть выполнены до следующего сканирования. Таким образом, при меньшем интервале несколько снижается расход памяти, но увеличивается частота обращения к файловой системе. По-умолчанию: 5 min.
Максимальное количество заданий на отправку исходящих сообщений находящихся в памяти. По-умолчанию: 2048.
Максимальный размер оригинального сообщения включающегося в автоматическое информационное сообщение DSN (Delivery Status Notification). По-умолчанию: 1 Mb.
Список имён внешних доменов в которые разрешена пересылка
неавторизованным и недоверенным пользователям. Другими словами,
домены для которых мы являемся шлюзами. Имена доменов могут быть
разделены пробелами и/или находиться в отдельных узлах
gateway-for
.
XML дерево attempts
задаёт интервалы и
количество попыток отправить сообщение если целевой сервер не
отвечает или занят. Узел max
задаёт максимальное
количество попыток. Узел notify-attempt
устанавливает
после какой попытки отправителю будет отправлено уведомление о
том что доставка сообщения задерживается. Множество узлов
delay
изменяет увеличивающийся интервал времени между попытками, в
атрибутах after
узлов
delay
задаются номера попыток после которых
устанавливаются новые интервалы.
В узле host
рекомендуется указать порты 25 и 587 без SSL и порт 465 с SSL.
Тайм-аут рекомендуется установить 5 min, согласно требованиям
RFC
5321 (п. 4.5.3.2.7.). Как и в других частях конфигурации,
возможно указание нескольких узлов host
с разными
списками портов, ключами, сертификатами и ACL.
Запрещает авторизацию на указанном порту. Порт должен
прослушиваться, т.е. быть настроенным в XML дереве
host
. Возможно использование нескольких узлов
no-auth-port
. Имеет смысл указать порт 25 как не
предназначенный для авторизации, т.к. этот порт используется для
доставки сообщений между серверами, клиенты обычно отправляют
сообщения используя порты 587 или 465.
Альтернативная строка приветствия отправляемая клиенту при его подключении к серверу.
Максимальное число пересылок (полей Received) для отдельного сообщения после которого оно будет отвергнуто с ошибкой протокола 554 5.4.6. По-умолчанию: 30.
Переключатель, устанавливающий возможность авторизации с открытым паролем через незашифрованное сетевое соединение. По-умолчанию авторизация с открытым паролем запрещена.
Переключатель, запрещающий серверу добавлять поле Received в сообщения от локальных пользователей. По-умолчанию выключено.
Разрешает работу исключительно через зашифрованное
соединение: no
- любой клиент может работать
через незашифрованное соединение, all
- любой
клиент должен устанавливать зашифрованное соединение,
foreign
- только клиенты не являющиеся
доверенными, т.е. не перечисленные в ACL
/module-Mail
должны устанавливать зашифрованное соединение. По-умолчанию:
trusted
no
.
Переключатель, устанавливающий немедленную доставку сообщения после его получения от клиента. Если выключено, сообщение начнёт доставляться только после нормального завершения сеанса SMTP (команды QUIT) или после получения следующей команды MAIL. По-умолчанию включено.
Максимальный размер сообщения. По-умолчанию - не ограничено.
Максимальное количество безуспешных попыток авторизации после которого соединение будет разорвано. По-умолчанию: 3.
Количество ошибок, таких как неверный синтаксис, неизвестная команда или неизвестный адрес в команде MAIL, после которых соединение будет разорвано. По-умолчанию: 4.
Задержка в миллисекундах (целое положительное число) ответа сервера на ошибочную команду или неуспешную попытку авторизации. По-умолчанию: 2000.
Узел типа ACL задающий серверы пересылающие почту нам. Например, если все входящие сообщения из Интернет пересылаются с MTA провайдера, их адреса следует указать в этом списке.
XML дерево описывает клиентские сетевые подключения к
другим серверам SMTP. Имеют смысл только узлы
threads
, threads-max
, timeout
.
Это единственное место в конфигурации где не предполагается
задание более одного узла host
.
Максимальное количество одновременных подключений к серверам SMTP. По-умолчанию: 16.
Тайм-аут ожидания ответа сервера при подключении. По-умолчанию: 5 min.
Тайм-аут ожидания ответа сервера после команды MAIL. По-умолчанию: 5 min.
Тайм-аут ожидания ответа сервера после команды RCPT. По-умолчанию: 5 min.
Тайм-аут ожидания ответа сервера после команды DATA. По-умолчанию: 2 min.
Тайм-аут ожидания ответа сервера после не последней команды BDAT. По-умолчанию: 3 min.
Тайм-аут ожидания ответа сервера после передачи всего сообщения. По-умолчанию: 10 min.
Переключатель, устанавливающий разрешение пересылать сообщения заявленные клиентом как 8BITMIME на серверы не объявляющие о поддержке 8BITMIME. По-умолчанию включено.
Документ RFC 6152 (п. 3) не предполагает такого поведения: [A client SMTP has two options in this case: first, it may implement a gateway transformation to convert the message into valid 7bit MIME, or second, or may treat this as a permanent error and handle it in the usual manner for delivery failures].
XML дерево relays
позволяет
указать целевые серверы для некоторых доменов без обращения к
службе DNS. Если сообщение направлено в один из доменов
перечисленных в узлах relay
/to
(через пробел, либо в отдельных узлах
to
), то сервер попытается отправить
такое сообщение сначала на первый сервер в списке заданном
узлами via
(через пробел, либо в
отдельных узлах via
) в том же relay
, затем на второй и т.д. Возможно
указание нескольких узлов relay
.
Список целевых серверов и доменов описывающий
использование шифрования при доставке сообщений. Значения узлов
destination
задают имя домена, если
атрибут type
имеет значение domain
или опущен, или имя сервера, если
атрибут type
имеет значение server
. Атрибуты TLS
узлов destination
устанавливают использование
шифрования: allow
- использовать
шифрование если целевой сервер поддерживает его, deny
- не использовать шифрование, required
- использовать шифрование если
сервер его поддерживает или не доставлять сообщения в противном
случае.
Если целевой сервер поддерживает передачу сообщений частями (команда BDAT), данный узел задаёт максимальный размер первой отправляемой части. Имеет смысл отправлять небольшую первую часть, т.к. после неё сервер может сообщить о возникновении какой-либо проблемы не позволяющей продолжить передачу сообщения.
Если целевой сервер поддерживает передачу сообщений частями (команда BDAT), данный узел задаёт максимальный размер частей следующих за первой.
Модуль реализует протокол получения почты
POP3
.
<module-POP3> <log-level>N</log-level> <host>...</host> ... <greeting>string</greeting> <plain-auth>Yes|No</plain-auth> <TLS-only>No|All|Foreign</TLS-only> <POP-before-SMTP filter-order="0">timeout</POP-before-SMTP> <bad-cmd-max>N</bad-cmd-max> <bad-cmd-delay>N</bad-cmd-delay> </module-POP3>
В узле host
рекомендуется указать порты 110 без SSL и 995 с SSL. Тайм-аут
рекомендуется установить 10 min, согласно требованиям RFC
1939 (п. 3). Как и в других частях конфигурации, возможно
указание нескольких узлов host
с разными списками
портов, ключами, сертификатами и ACL.
Альтернативная строка приветствия отправляемая клиенту при его подключении к серверу.
Переключатель, устанавливающий возможность авторизации с открытым паролем через незашифрованное сетевое соединение. По-умолчанию авторизация с открытым паролем запрещена.
Разрешает работу исключительно через зашифрованное
соединение: no
- любой клиент может работать
через незашифрованное соединение, all
- любой
клиент должен устанавливать зашифрованное соединение,
foreign
- только клиенты не являющиеся
доверенными, т.е. не перечисленные в ACL
/module-Mail
должны устанавливать зашифрованное соединение. По-умолчанию:
trusted
no
.
Устанавливает время в
течении которого пользователь который авторизировался через
протокол POP3
считается авторизированным клиентом для сервера SMTP. Это
устаревший способ авторизации в SMTP, когда пользователь может
отправлять сообщения в другие домены после прохождения
авторизации по POP3
.
Атрибут filter-order
устанавливает
порядок в котором модули получают события от модуля SMTP. Если
атрибут filter-order
не указан,
используется значение 0
(рекомендуется), что означает наивысший приоритет. По-умолчанию
механизм авторизации "POP-before-SMTP" не используется.
Количество ошибок, таких как неверный синтаксис, неизвестная команда, ошибка авторизации и т.п., после которых соединение будет разорвано. По-умолчанию: 4.
Задержка в миллисекундах (целое положительное число) ответа сервера сообщающего об ошибке. По-умолчанию: 2000.
Модуль реализует протокол получения почты
IMAP4
.
<module-IMAP> <log-level>5</log-level> <host>...</host> ... <greeting>string</greeting> <plain-auth>Yes|No</plain-auth> <TLS-only>No|All|Foreign</TLS-only> <auth-fail-max>N</auth-fail-max> <bad-cmd-max>N</bad-cmd-max> <bad-cmd-delay>2000</bad-cmd-delay> </module-IMAP>
В узле host
рекомендуется указать порты 143 без SSL и 993 с SSL. Тайм-аут
рекомендуется установить 30 min, согласно требованиям RFC
9051 (п. 5.4). Как и в других частях конфигурации,
возможно указание нескольких узлов host
с разными
списками портов, ключами, сертификатами и ACL.
Альтернативная строка приветствия отправляемая клиенту при его подключении к серверу.
Переключатель, устанавливающий возможность авторизации с открытым паролем через незашифрованное сетевое соединение. По-умолчанию авторизация с открытым паролем запрещена.
Разрешает работу исключительно через зашифрованное
соединение: no
- любой клиент может работать
через незашифрованное соединение, all
- любой
клиент должен устанавливать зашифрованное соединение,
foreign
- только клиенты не являющиеся
доверенными, т.е. не перечисленные в ACL
/module-Mail
должны устанавливать зашифрованное соединение. По-умолчанию:
trusted
no
.
Максимальное количество безуспешных попыток авторизации после которого соединение будет разорвано. По-умолчанию: 3.
Количество ошибок, таких как неверный синтаксис, неизвестная команда, ошибка авторизации и т.п., после которых соединение будет разорвано. По-умолчанию: 4.
Задержка в миллисекундах (целое положительное число) ответа сервера сообщающего об ошибке. По-умолчанию: 2000.
Модуль протокола HTTP
не привязан к другим модулям и
может быть единственным загруженным модулем.
В составе сервера Manjary имеется
приложение fast-cgi fcgiadm
реализующее WEB-интерфейс для CLI и взаимодействущее с
CLI через сеть либо локальный сокет.
Этот интерфейс может использоваться пользователями для получения
информации о своей учётной записи и смены пароля или операторами и
администраторами для управления доменами, пользователями и пр.
Приложение fcgiadm
может
быть запущено на любом сервере в сети и к нему может обращаться
любой сервер HTTP поддерживающий протокол fast-cgi. Это делает
возможным управление множеством серверов
Manjary из одного места. В простом случае
fcgiadm
используется модулем HTTP сервера
Manjary.
<module-HTTP> <log-level>N</log-level> <host>...</host> ... <fastcgi name="fcginame"> <server port="N">IP_address</server> <start>filename</start> </fastcgi> ... <directory path="directory/path/*pattern?"> <index type="parent|deny|auto[,list]|redirect[,list]|list">file1 file2</index> <mime-types file="filename"> <ext name="type/name">ext</ext> ... </mime-types> <file must-exist="0|1"> <match>pattern1 pattern2</match> <match>pattern3</match> <handler>$fcginame|filename</handler> <acl>...</acl> </file> ... <acl not-listed="permit|deny|parent"> <addr>...</addr> ... <acl> </directory> ... <vhost> <names>hostname1 *pattern-?</names> <names>one?more</names> ... <ports>N1,N2-N3,N4</ports> <TLS-certificate-file>filename</TLS-certificate-file> <TLS-key-file>filename</TLS-key-file> <document-root>directory/path</document-root> <alias script="1|0" uri-path="/path/">local/path</alias> .... <redirect type="301|302|303|307|308|permanent|temporary" uri-path="/path/" full-path="0|1">local/path</redirect> ... <directory>...</directory> ... </vhost> ... </module-HTTP>
В узле host
указываются порты для протокола HTTP (например, стандартный -
80) без SSL и для HTTPS (стандартный - 443) с SSL. Как и в
других частях конфигурации, возможно указание нескольких узлов
host
с разными списками портов, ключами,
сертификатами и ACL.
Связывает имя заданное пользователем в атрибуте name
с информацией о сервере FastCGI.
Обязательный узел server
описывает
порт (атрибут port
) и адрес
(значение узла) по которым нужно подключаться к серверу
fast-cgi. Значением узла server
может
быть имя локального сокета, при этом атрибут port
не должен указываться.
Необязательный узел start
задаёт имя
исполняемого файла который будет запущен при запуске сервера
Manjary.
Описание локальной директории путь к которой соответствует
шаблону в атрибуте path
.
Указывает что нужно возвращать при запросе URI который
ссылается на данную директорию. Поведение определяется атрибутом
type
:
parent|deny|auto[,list]|redirect[,list]|list. По-умолчанию: parent
.
parent
Использовать
поведение заданное для родительской директории.
deny
Вернуть ошибку 403
Forbidden.
auto
Значение узла
рассматривается как список имён индексных файлов разделённых
пробелами. Если в директории находится один из этих файлов,
его содержимое будет возвращено в качестве ответа на
запрос.
redirect
Как auto
, но ответом будет не содержимое
файла, а перенаправление на него.
list
В качестве ответа
возвращается страница HTML со списком файлов и директорий
содержащихся в данной директории.
auto,list
Как auto
, но если директория не содержит
индексных файлов - как list
.
redirect,list
Как redirect
, но если директория не
содержит индексных файлов - как list
.
Задаёт соответствие расширений файлов и типов mime. Если
указан атрибут file
, список
соответствий будет загружен из него (см. файл
mime.types
). Вложенные узлы ext
дополняют список. При поиске
соответствий директории будут просматриваться от заданной к
корневой, пока расширение файла не будет найдено в настройках
для одной из директорий.
Указывает как нужно обрабатывать файлы, имена которых
соответствуют одной из масок в узлах match
.
Необязательное поле. Если задано - указывает обработчик
которому будет передан файл. Значением узла может быть программа
CGI. Если значение узла начинается с символа "$", оно
рассматривается (без "$") как имя для сервера fast-cgi заданное
деревом XML fastcgi
.
Список адресов клиентов ограничивающий доступ к файлам.
Список адресов клиентов
ограничивающий доступ к директории. Атрибут not-listed
задаёт поведение если адрес
не найден: permit|deny|parent. По-умолчанию: parent
(просматривать списки из установок
для родительских директорий).
Деревья XML vhost
описывают
виртуальные хосты. При клиентском запросе ресурса с сервера,
просматривается список виртуальных хостов в том порядке как они
заданы в конфигурации, пока не будет найдено соответствие по
имени хоста и/или по номеру порта. Далее, запрос обрабатывается
в рамках настроек найденного хоста.
Шаблоны имён хоста. По-умолчанию хосту соответствует любое имя.
Список портов хоста разделённых запятыми. Элементами
списка могут быть номера портов или диапазоны номеров, например
80-88. Списком определяются порты из множества заданного в host
. По-умолчанию хосту соответствует
любой порт.
Файл содержащий сертификат. Этот узел переопределяет
соответствующий узел в host
, другими
словами, задаёт сертификат конкретно для данного хоста.
Файл содержащий приватный ключ. Этот узел переопределяет
соответствующий узел в host
, другими
словами, задаёт приватный ключ конкретно для данного
хоста.
Локальный путь к корневой директории хоста.
Псевдоним для элемента пути URI. Значение узла - путь к
локальной директории. Обязательный атрибут uri-path
указывает имя элемента пути
URI. Если для необязательного атрибута script
указано значение 1
, подразумевается что директория
указанная в значении узла содержит программы CGI.
Перенаправление: если запрошенный путь URI начинается со
строки заданной атрибутом uri-path
,
то будет возвращён ответ перенаправляющий клиента на путь
начальная часть которого (совпадающая с uri-path
) заменена значением узла. Если
указан атрибут full-path
со
значением 1
, то перенаправление
используется только если запрошенный путь полностью совпадает со
значением uri-path
. Атрибут type
определяет какой код ответа HTML
будет использован для перенаправления:
301|302|303|307|308|permanent|temporary. Ключевое слово permanent
соответствует 301, а temporary
- 302.
Настройки директорий в рамках конкретного хоста.
Модуль находит спам в потоке входящих сообщений.
<module-SpamCheck> <log-level>N</log-level> <order>N</order> <whitelist-ttl>timeout</whitelist-ttl> <spf> <none>0</none> <neutral>0</neutral> <pass>-1</pass> <fail>1</fail> <softfail>0.7</softfail> <permerror>0.4</permerror> </spf> <greylist> <mask>N</mask> <recipient-ttl>timeout</recipient-ttl> </greylist> <ip-blacklist-providers> <provider> <addr>string</addr> <value code="N.N.N.N">N</value> ... </provider> ... </ip-blacklist-providers> <domain-blacklist-providers> <provider> <addr>string</addr> <value code="N.N.N.N">N</value> ... </provider> ... </domain-blacklist-providers> <ip-whitelist-providers> <provider> <addr>string</addr> <value code="N.N.N.N">N</value> ... </provider> ... </ip-whitelist-providers> <domain-whitelist-providers> <provider> <addr>string</addr> <value code="N.N.N.N">N</value> ... </provider> ... </domain-whitelist-providers> <ip-list name="string">...</ip-list> ... <ptrn-list name="string"> pattern?1 pattern*2 pattern?3 </ptrn-list> ... <no-check-when>...</no-check-when> <reject-when>...</reject-when> <greylist-when>...</greylist-when> <spam-folder threshold="N">folder</spam-folder> </module-SpamCheck>
Устанавливает порядок в котором модули получают события от модуля SMTP. По-умолчанию: 100.
Время хранения записей в белом списке. По-умолчанию: 60d.
Устанавливает оценки от -1 до 1 соответствующие результатам проверки SPF.
Количество бит адреса IP клиента использующихся для сравнения в сером списке. По-умолчанию: 24.
Время хранения записи о получателе в сером списке. По-умолчанию: 16h.
Провайдеры чёрных списков адресов IP, чёрных списков доменных имён, белых списков адресов IP, белых списков доменных имён.
Каждое XML дерево provider
описывает провайдера предоставляющего информацию через запросы к
системе DNS. Результат запроса представляет собой адрес IP
который рассматривается как код ответа. Узел provider
/addr
указывает имя сервиса в DNS для запросов, а узлы provider
/value
задают сопоставление результатов получаемых от провайдера и
оценок: значение узла value
-
даваемая результату оценка, дробное число от -1 до 1, атрибут
code
- код ответа на запрос, четыре
числа разделённых точками, любое число может быть представлено
диапазоном в виде [N1-N2]. Пример:
<value code="127.0.0.[2-14]">0.5</value>
В
наборе узлов value
XML дерева provider
Рекомендуется использовать весь
диапазон значений от -1 до 1.
Именованный список адресов IP к
которому могут выполняться обращения в выражениях.
Атрибут name
задаёт имя
использующееся в качестве аргумента функций в выражениях. В
конфигурации может быть задано множество узлов ip-list
.
Именованный список шаблонов строк разделённых пробелами
или переводами строк к которому могут выполняться обращения в
выражениях.
Атрибут name
задаёт имя
использующееся в качестве аргумента функций в выражениях. В
конфигурации может быть задано множество узлов ptrn-list
.
Выражение. Если результатом вычисления является ИСТИНА, сообщение не будет проверяться на спам.
Выражение. Если результатом вычисления является ИСТИНА, дальнейший анализ производиться не будет и сообщение не будет принято.
Выражение. Если результатом вычисления является ИСТИНА, доставка сообщения будет проходить через серый список.
Значение узла задаёт имя папок пользователей куда будут
помещаться сообщения с конечными результатами оценок выше
значения заданного атрибутом threshold
.
Значения узлов no-check-when, reject-when и greylist-when представляют собой выражения вычисляемые в ходе работы, результатами вычислений являются значения ИСТИНА или ЛОЖЬ. Выражения состоят из функций, операторов и скобок. Функции должны иметь заданное количество аргументов заключённых в круглые скобки после имени функции и разделённых запятыми. Строковые аргументы записываются в двойных кавычках. Функции без аргументов могут записываться без скобок. Имена функций регистронезависимые.
Часть строки начиная с последовательности символов "//" и до конца строки и части текста между последовательностями символов "/*" и "*/" являются комментариями. Использование комментариев допускается между функциями, операторами или скобками но не среди аргументов функции или между именем функции и её аргументами.
Операторы:
!
унарное отрицание логического
значения,
>
[1] ИСТИНА если числовое значение слева больше значения
справа,
<
[1] ИСТИНА если числовое значение слева
меньше значения справа,
+
сложение числовых значений,
-
унарный знак отрицательного числового
значения или вычитание значения справа от значения слева.,
*
умножение числовых значений,
/
деление числовых значений,
and
логическая операция И над логическими
значениями,
or
логическая операция ИЛИ над
логическими значениями.
Функции:
Возвращает ИСТИНА если адрес Return-Path (MAIL FROM) находится в белом списке, т.е. на этот адрес отправлялись письма из наших доменов.
IPBL
Возвращает значение -1..1 - результат проверки адреса IP клиента у провайдеров чёрных списков.
IPWL
Возвращает значение -1..1 - результат проверки адреса IP клиента у провайдеров белых списков.
DomainBL
Возвращает значение -1..1 - результат проверки доменного имени клиента у провайдеров чёрных списков.
DomainWL
Возвращает значение -1..1 - результат проверки адреса доменного имени клиента у провайдеров белых списков.
SPFNone
Возвращает ИСТИНА если результат проверки SPF "none".
SPFNeutral
Возвращает ИСТИНА если результат проверки SPF "neutral".
SPFPass
Возвращает ИСТИНА если результат проверки SPF "pass".
SPFFail
Возвращает ИСТИНА если результат проверки SPF "fail".
SPFSoftfail
Возвращает ИСТИНА если результат проверки SPF "softfail".
SPFTemperror
Возвращает ИСТИНА если результат проверки SPF "temperror".
SPFPermerror
Возвращает ИСТИНА если результат проверки SPF "permerror".
SPF
Возвращает значение
-1..1 - оценка
результата проверки SPF, см. узел spf
конфигурации.
PTR
Возвращает ИСТИНА если обратная запись DNS для адреса IP клиента существует.
PTRHelo
Возвращает ИСТИНА если строка переданная в команде HELO/EHLO соответствует имени из обратной записи DNS для адреса IP клиента.
PTRSender
Возвращает ИСТИНА если Return-Path (MAIL FROM) соответствует имени из обратной записи DNS для адреса IP клиента.
Match(objects,patterns)
Аргумент objects
-
строка содержащая одно или несколько ключевых слов разделённых
пробелами: HOSTNAME - доменное имя хоста клиента,
HELO - строка переданная в команде HELO/EHLO,
PR - Return-Path. Аргумент patterns
- строка содержащая один или
несколько шаблонов разделённых пробелами. Возвращает
ИСТИНА если хотя бы один из объектов
objects
соответствует хотя бы
одному шаблону patterns
.
MatchList(objects,ptrnlists)
Аргумент objects
-
строка содержащая одно или несколько ключевых слов разделённых
пробелами: HOSTNAME - доменное имя хоста клиента,
HELO - строка переданная в команде HELO/EHLO,
PR - Return-Path. Аргумент ptrnlists
- строка содержащая одно или
несколько имён списков шаблонов разделённых пробелами. Именованные
списки шаблонов задаются узлами ptrn-list
конфигурации. Функция возвращает ИСТИНА
если хотя бы один из объектов objects
соответствует хотя бы одному
шаблону из списков ptrnlists
.
IPListed(iplists)
Аргумент iplists
-
строка содержащая одно или несколько имён списков адресов IP
разделённых пробелами. Именованные списки адресов задаются узлами
ip-list
конфигурации. Возвращает
ИСТИНА если адрес IP клиента находится хотя
бы в одном списке iplists
.
Модуль позволяет контролировать работу сервера SMTP с помощью внешних программ называемых хэлперами. Хэлперы получают события на стандартный ввод и отвечают на них на стандартный вывод, после чего переходят в ожидание следующего события.
<module-Helpers> <log-level>5</log-level> <smtpsrv> <order>N</order> <run max="N">filename</run> <instance-sess-max>N</instance-sess-max> </smtpsrv> </module-Helpers>
Устанавливает порядок в котором модули получают события от модуля SMTP. По-умолчанию: 10.
Имя исполняемого файла реализующего функционал хелпера.
Атрибут max
устанавливает
максимальное количество запущенных экземпляров для параллельной
обработки сессий SMTP. При этом все события отдельной сессии
SMTP будут направляться в один и тот же экземпляр.
Указывает количество сессий SMTP одновременно
обрабатываемых одним хелпером. Укажите 1
чтобы хелпер не получал событий новых
сессий пока не завершится уже начатая.
В начале каждой новой сессии модуль SMTP просматривает
информацию о всех работающих экземплярах и находит тот у которого
количество обрабатываемых в данный момент сессий SMTP меньше
установленного атрибутом max
узла run
. После этого сессия привязывается к
экземпляру, после этого все события данной сессии будут направляться в
этот экземпляр. Если все экземпляры заняты, будет запущен новый. Если
количество экземпляров достигло значения узла instance-sess-max
модуль будет ожидать
освобождения одного из экземпляров что приведёт к задержке обработки
событий сессии.
Модуль реализует адресную книгу. Адресная книга содержит информацию о зарегистрированных пользователях которая может быть получена через интерфейс CLI/WEB и протокол LDAP.
<module-AB> <log-level>N</log-level> <host>...</host> </module-AB>
Модуль запускает внешние программы, называемые фильтрами, на разных этапах сессии SMTP.
<module-SMTPWeasel> <log-level>N</log-level> <order>N</order> <serialize>0..2</serialize> <stage0>filename</stage0> <stage1>filename</stage1> <stage2>filename</stage2> <stage3>filename</stage3> <stage4>filename</stage4> </module-SMTPWeasel>
Устанавливает порядок в котором модули получают события от модуля SMTP. По-умолчанию: 200.
Контроль параллельной работы фильтров: 0
- любой фильтр может быть запущен в
любой момент времени, 1
- на любом
этапе 0..4 одновременно может быть запущен только один фильтр,
но одновременно могут работать фильтры на разных этапах, 2
- одновременно может быть запущен
только один фильтр, независимо от этапа.
Имя исполняемого файла который запускается на соответствующем этапе.
[1] В формате XML символы ">" (больше) и "<" (меньше) представляются сущностями > и < соответственно.