Критерии и условия

<< Кликните, чтобы показать Содержание >>

Руководство Администратора | CHM EPUB PDF A4/Letter   

Критерии и условия

Критерий в правиле описывается XML-тегом "match" и определяет, будут ли выполняться действия правила для данного сообщения.

Критерий в правиле состоит из одного или нескольких условий, которые связаны логическими операциями AND, OR, XOR или NOT. Это позволяет строить критерий на основе логических выражений, состоящих из условий.

Пример:

<rule>

  <match>

    <c name="all" />

  </match>

  <action name="drop" />

</rule>

Данный критерий состоит из единственного условия: "все сообщения".

Условия в критериях

Условие – это элементарная проверка сообщения или его метаданных на соответствие чему-либо.

Условие описывается XML-тегом "condition" или "c".  Сообщение либо удовлетворяет условию, и в этом случае условие имеет значение TRUE, либо не удовлетворяет условию, и в таком случае результатом проверки условия будет FALSE. Для условия указывается его имя в атрибуте "name", которое определяет, что и как проверять в сообщении. В прочих атрибутах тега указываются параметры для выполнения действия. Имена атрибутов дополнительных параметров зависят от конкретных условий.

Общая структура XML-тега, описывающего условие:

<condition name="The name of the condition." [additional parameters] />

или

<condition name="The name of the condition." [additional parameters] >

</condition>

или

<c name="The name of the condition." [additional parameters] />

или

<c name="The name of the condition." [additional parameters] ></c>

Большинство условий использует атрибут value="...", в котором указываются значения для проверки на соответствие условию, или атрибут data="...", в котором можно указывать внешний файл для загрузки данных для такой проверки (это могут быть наборы слов, списки доменных имён и другие параметры). Какие атрибуты и как именно проверяются, описано в разделах соответствующих условий.

Логические выражения в критериях

В случае, когда необходимо создать для правила сложный критерий, состоящий из нескольких условий, эти условия можно объединять в логические выражения с использованием логических операций AND, OR, XOR, NOT. Логические операции в виде XML-тегов выглядят следующим образом:

<and> ... </and>:

Соответствует ( ... & ... & ... & ... ) – все условия, находящиеся внутри тега "and", объединяются логической операцией AND.

<or> ... </or>:

Соответствует ( ... | ... | ... | ... ) – все условия, находящиеся внутри тега "or", объединяются логической операцией OR.

<xor> ... </xor>:

Соответствует ( ... ^ ... ^ ... ^ ... ) – все условия, находящиеся внутри тега "xor", объединяются логической операцией XOR.

<not> ... </not>:

Соответствует !(...) – к условию применяется операция отрицания.

Пример:

<and>

  <c name="ccc1"/>

  <c name="ccc2"/>

</and>

означает результат (ccc1 & ccc2),

а критерий:

<not><c name="ccc1"/></not>

означает результат "не (ccc1)".

Любые теги логических операций могут быть вложенными.

Пример:

<and>

  <c name="ccc1"/>

  <or>

    <c name="ccc2">

    <c name="ccc3">

  </or>

  <or>

    <c name="ccc4">

    <c name="ccc5">

    <not><c name="ccc6"></not>

  </or>

</and>

означает результат (ccc1 & (ccc2 | ccc3) & (ccc4 | ccc5 | !ccc6)).

То есть сообщение будет удовлетворять указанному в примере критерию, если: оно удовлетворяет условию ccc1, а также удовлетворяет (условию ссс2 или условию ссс3), а также (удовлетворяет (условию ссс4 или условию ссс5) или не удовлетворяет условию ссс6).

Для наглядности можно разбить данный критерий на блоки условий, которые обязательно должны возвращать TRUE при следующих проверках:

1) сообщение должно удовлетворять условию ccc1

И

2) сообщение должно удовлетворять одному из условий (ccc2 или ccc3)

И

3) сообщение должно удовлетворять одному из условий (ccc4 или ccc5) ИЛИ не удовлетворять условию ccc6.