Модуль Dr.Web Modifier

Назначение модуля

Подключаемый модуль Dr.Web Modifier используется для:

Контентного анализа писем поиска в телах обрабатываемых писем вложенных объектов с определенными MIME-типами (графика, исполняемые файлы, медиа-файлы), а также MIME-объектов, удовлетворяющих определенным условиям;

Модификации тел писем удаления MIME-объектов, удовлетворяющих определенным условиям, модификации заголовков и/или содержимого выбранных MIME-объектов;

Управления обработкой писем – блокировки, помещения в Карантин, перенаправления, добавление заголовков и счета в зависимости от найденных в телах обрабатываемых писем MIME-объектов.

Ниже представлена краткая информация о структуре письма, которая используется при его анализе и обработке подключаемым модулем Dr.Web Modifier.

Письмо представляет собой составной объект, который может быть выбран для совершения действия либо целиком, либо по частям, поскольку каждое письмо можно представить как иерархический набор элементов (MIME-объекты, их заголовки и содержимое). Части письма также можно выбирать для индивидуальной обработки. На рисунке ниже показана иерархическая структура письма, содержащего вложенные объекты.

msg_scheme

Рис. 19. Иерархическая структура письма, содержащего вложенные объекты

Письмо состоит из следующих элементов:

1.На верхнем уровне письмо разделяется на область заголовков Headers и тело письма Body.

2.Если MIME-тип содержимого в теле письма – multipart/*, то тело представляет собой составной объект, состоящий из следующих частей:

oPrologue – пролог, некоторый текст, помещенный в тело до начала первого вложенного MIME-объекта. Этот текст не отображается MUA, поддерживающими MIME multipart, и как правило, отсутствует;

oEpilogue – эпилог, некоторый текст, помещенный в тело после окончания последнего вложенного MIME-объекта. Этот текст не отображается MUA, поддерживающими MIME multipart, и как правило, отсутствует;

oЕсли тело письма состоит из нескольких частей, то каждая из них рассматривается как отдельный MIME-объект, содержащий собственный набор заголовков (как правило, это контент-заголовки, такие, как Content-type, Content-description, Content-disposition и т.д.), содержимое (контент), и, возможно, пролог и эпилог. В свою очередь, MIME-объект тоже может оказаться составным (иметь тип multipart/*).

В противном случае тело письма рассматривается как монолитный объект, не содержащий вложенных частей, а также пролога и эпилога.

Поскольку структура любого вложенного объекта совпадает со структурой письма в целом (объект, как и все письмо, состоит из заголовка и тела, а также, возможно, имеет пролог и эпилог), то и само письмо в целом можно считать MIME-объектом, у которого Headers являются заголовками, а Body – содержимым (контентом). Этот MIME-объект называется корневым.

Для поиска объектов в письме Dr.Web Modifier поддерживает следующие версии регулярных выражений:

Базовые (basic regular expressions);

Расширенные (extended regular expressions);

Perl-совместимые (Perl-compatible regular expressions).

С основами регулярных выражений вы можете ознакомиться, например, в Wikipedia (статья «Регулярные выражения»).

Порядок применения правил модификации при обработке писем

Подключаемый модуль обрабатывает письма, применяя правила модификации. Правила модификации делятся на локальные (local rules) и глобальные (global rules). Сначала при обработке письма применяются локальные правила, а затем – глобальные. Если для письма локальные правила модификации не заданы (это зависит от того, какие Правила обработки почты сработали для письма, см. ниже), то письмо проверяется сразу с использованием глобальных правил модификации. Если письмо было отклонено при использовании локальных правил модификации, то глобальные правила модификации к этому письму уже не применяются.

Локальные правила модификации Dr.Web Modifier задаются только в Правилах обработки почты, задаваемых в секции [Rules] конфигурационного файла Dr.Web MailD или во встроенной базе данных пользователей и групп. Для этого в Правилах используется параметр modifier/LocalRules. Глобальные правила модификации Dr.Web Modifier задаются только параметром GlobalRules в конфигурационном файле подключаемого модуля, в секции [Modifier].

warning

Обратите внимание, что параметр GlobalRules не может использоваться в Правилах обработки почты, а параметр LocalRules не может задаваться в конфигурационном файле подключаемого модуля.

Формат правил модификации

Любое правило модификации состоит из следующих частей:

<Оператор выборки элементов>, [<Оператор проверки условия>,] <Оператор действия>[, <Оператор действия>, ...]

Обратите внимание, что операторы в правиле модификации разделяются запятыми. Операторов действия может быть более одного. Проверка условия может отсутствовать. Минимально допустимая форма правила модификации состоит из оператора выборки и оператора действия.

Правила модификации всегда записываются в одну строку. При необходимости разбиения правила модификации на несколько строк используйте символ '\', который следует указывать в конце строки непосредственно перед ее разрывом, например:

<Оператор выборки элементов>, \
<Оператор действия>, <Оператор действия>

Кроме того, в разделе "операторов действий" таже можно формировать новую выборку элементов и проверять условия и выполнять действия уже для нее.

1. Операторы формирования выборки

Выборка элементов из письма для последующей обработки осуществляется при помощи оператора select <element>, которому в качестве аргумента <element> указывается тип элементов, выбираемых из письма для анализа и обработки. Доступны следующие типы выделения:

message Выбор корневого MIME-объекта письма, т.е. всего письма целиком.

mime(<ОБЛАСТЬ>) | mime.<ОБЛАСТЬ> [[<имя>] <регулярное_выражение>] Выбор MIME-объектов или содержимого MIME-объектов, имеющих содержимое в указанной области.

Различие между синтаксисом со скобками и с точкой заключается в том, что аргумент со скобками выбирает сами объекты, содержащие элементы в указанной области, а агрумент с точкой – только элементы этих объектов (конкретные заголовки, текст из пролога, содержимое тела, и т.д.), находящиеся в указанной области.

В качестве <ОБЛАСТИ> могут быть использованы следующие значения:

oheaders - область заголовков MIME-объекта;

oprologue - область пролога MIME-объекта;

obody - область тела MIME-объекта (content);

oepilogue - область поиск в эпилоге MIME-объекта.

Дополнительно могут быть указаны следующие параметры:

o<имя> - имя искомого заголовка. Задается только в том случае, если <ОБЛАСТЬ>headers.

o<регулярное_выражение> - шаблон поиска искомого элемента (например, шаблон, которому должно удовлетворять  значение заголовка, или текст, содержащийся в элементе).

Пример:

Команда, выбирающая содержимое всех видео-фрагментов из письма:

select mime(headers) Content-type "x-video"

Команда, выбирающая информацию о типе данных из всех видео-фрагментов (значение из заголовка):

select mime.headers Content-type "x-video"

Также для заголовков (в целях совместимости с подключаемым модулем Vaderetro) можно использовать команды сравнения с целым числом ">" и "<" (знак экранирования '\' при этом не используется!). Сравниваемый заголовок считается удовлетворяющим условию отбора, если он содержит целое число (например: X-Drweb-SpamScore: "30"), которое удовлетворяет заданному условию.

Пример:

select mime(headers) X-Drweb-SpamScore "<50"

В результате выбираются элементы, в которых имеется заголовок X-Drweb-SpamScore, значение которого – целое число, меньшее 50. Обратите внимание, что в данном случае обратный слэш перед знаком "<" не нужен. Если бы правило модификации было задано как:

select mime(headers) X-Drweb-SpamScore "\<50"

то в результате были бы выбраны элементы с заголовком X-Drweb-SpamScore: "<50

 

Обратите внимание, что при помощи команды select mime(<ОБЛАСТЬ>) нельзя выбрать составной MIME-объект, кроме тех случаев, когда он является корневым (письмом).

Например, если письмо обладает структурой, представленной на картинке ниже, команда select mime(headers) выберет следующие объекты, содержащие заголовки:

Message (корневой объект "письмо");

Nested-1;

Nested-2.

Объект Container выбран не будет, поскольку он составной (содержит объекты Nested-1 и Nested-2), но не является письмом.

multipart-nested

 

sender <регулярное_выражение>, recipient <регулярное_выражение> – Выбор всего сообщения, если оно содержит соответствующую запись об отправителе (получателях). Данные об отправителе (получателях) берутся из конверта письма. В случае нахождения искомой последовательности символов действие аналогично команде select message (выделение всего сообщения).

Пример:

Если письмо предназначено для администратора, можно добавить в конец письма приветствие с помощью команды append_text (см. ниже):

select recipient "root@localhost", append_text "hello, root"

Ясно, что если письмо предназначено не администратору, то выбранное множество элементов будет пусто, поэтому в этом случае фактически команда append_text применена не будет. Обратите внимание на эту особенность, она позволяет не применять операторы проверки условия, если альтернативное действие (когда нужные элементы не найдены) отсутствует.

select_mimes Команда  позволяет перейти от выборки заголовков к выборке MIME-объектов, их содержащих. Это позволяет ускорить работу подключаемого модуля в случаях, когда требуется сперва выбрать некие заголовки, а потом сам объект по одному и тому же критерию. Для выборки объекта достаточно, чтобы был выбран хотя бы один компонент этого объекта, не считая вложенных MIME-объектов для составного MIME-объекта.

warning

Пожалуйста, обратите внимание, что во всех правилах модификации, использующих значение некоторого заголовка или части письма, следует учитывать кодировку, в которой встречается искомый текст.

Правила работы со значениями заголовков в произвольных кодировках рассмотрены в разделе Работа со строковыми значениями.

Для того, чтобы выбрать из письма элементы, соответствующие нескольким критериям, используются логические операторы объединения и пересечения последовательно указанных подвыборок. Для этого в одном операторе select указывается несколько аргументов выборки, которые соединяются логическими операторами:

and – оставить в выборке, полученной предыдущим аргументом, только те элементы, которые попадут под указанное условие.

nand – оставить в выборке, полученной предыдущим аргументом, только те элементы, которые НЕ попадут под указанное условие.

or – добавить в выборку, полученную предыдущим аргументом, те элементы, которые попадут под указанное условие.

nor – добавить в выборку, полученную предыдущим аргументом, те элементы, которые НЕ попадут под указанное условие.

warning

Обратите внимание, что операторы объединения и пересечения выборок  работают только с выборками, содержащими MIME-объекты, но не работают с выборками, содержащими сами элементы, т.е. не применимы к синтаксису select mime.<ОБЛАСТЬ>

Пример:

Выбрать фрагменты, написанные на html, и содержащие слово "<script":

select mime(headers) Content-type html and mime(body) "\<script"

По сути это две выборки, применяющихся последовательно. Первая выбирает все MIME-объекты, содержащие в заголовке Content-type слово "html", а вторая оставляет в списке выбранных объектов только те, которые содержат последовательность символов "<script" в любом регистре.

Пример:

select mime(headers) Content-type html nand mime(body) "\<script"

В соответствии с первым критерием будут выбраны все MIME-объекты, содержащие в заголовке Content-type слово "html". В соответствии со вторым критерием из этой выборки будут исключены все MIME-объекты, содержащие последовательность символов "<script" в любом регистре.

Пример:

select mime(headers) Content-type html or mime(body) "\<script"

В соответствии с первым критерием будут выбраны все MIME-объекты, содержащие в заголовке Content-type слово "html". В соответствии со вторым критерием к этой выборке будут добавлены также все MIME-объекты, содержащие последовательность символов "<script" в любом регистре.

 

Пожалуйста, обратите внимание на типичные ошибки в использовании операторов выборки:

Если указывается несколько операторов select подряд, то последующий select вытесняет собой результаты выборки, полученные предыдущим оператором select:

Пример:

select mime(headers) Content-type html, select mime(body) "\<script"

select mime(headers) Content-type html and select mime(body) "\<script"

Полученная в итоге выборка будет осуществлена только в соответствии со вторым критерием – т.е. будут выбраны только фрагменты письма (MIME-объекты), содержащие последовательность символов "<script" в любом регистре.

Если ни логических операторов, ни команды select перед последующим аргументом не указано, то он игнорируется и выборка не изменяется.

Пример:

select mime(headers) Content-type html mime(body) "\<script"

Выборка будет осуществлена только в соответствии с первым критерием – т.е. будут выбраны только фрагменты письма (MIME-объекты), содержащие в своем заголовке Content-type слово "html".

 

2. Операторы действия

Действия всегда применяются по результатам выборки оператора select. Действия разделяются на три типа:

Действия, применяемые ко всему письму (отклонить, перенаправить, сформировать уведомление MailD и т.п.);

Действия, применяемые к выбранным элементам письма (удаление, добавление подписи, замена или модификация текста и т.п.);

Действия, изменяющие счет письма (для антиспам).

warning

Если множество выбранных элементов пусто, то указанные в правиле действия не выполняются (игнорируются).

2.1. Действия, воздействующие на письмо целиком

Существуют следующие операторы воздействия на письмо целиком:

pass, accept – пропустить письмо. В случае глобальных правил модификации после получения любой из этих команд дальнейшая обработка письма не ведется. В случае локальных правил модификации после получения команды accept Dr.Web Modifier переходит к обработке письма с помощью глобальных правил модификации;

reject – отклонить письмо с уведомлением об этом отправителя;

discard – отклонить письмо, не уведомляя об этом отправителя;

notify <report_name> – оповестить администратора, обработка письма не прекращается. После этой команды необходимо указать имя шаблона уведомления, который будет использован при оповещении, иначе при обработке письма будут возникать ошибки. Шаблоны находятся в каталоге, указанном в значении параметра TemplatesBaseDir в секции [Notifier] конфигурационного файла Dr.Web MailD.

Пример :

GlobalRules = select message, notify rule

В данном случае просто выполняется отправка уведомления MailD. Так как любому оператору действия должен предшествовать оператор выборки, применяется оператор select message, просто выбирающий все письмо и гарантированно возвращающий непустой результат. Нужный префикс admin_ и расширение .msg для формирования уведомления будут автоматически подставлены компонентом Dr.Web Notifier.

tempfail – уведомить отправителя о сбое сервера;

redirect – перенаправить письмо на заданный адрес;

quarantine – отправить письмо в Карантин.

stopпрекращает обработку правил модификации. В отношении письма принимается решение согласно ранее выполненным командами pass, accept, reject и т.д., в зависимости от того, какая команда была выполнена последней. Команда accept равноценна комбинации pass+stop, за исключением того, что stop прекращает обработку полностью, а accept – только для локальных правил модификации. Для глобальных правил модификации accept равноценна pass.

Команды reject, discard и tempfail являются "решающими" – после них обработка письма прекращается, вне зависимости от того, указаны ли в этом правиле модификации еще какие-либо команды.

2.2. Действия, преобразующие выбранные элементы письма

Эти действия действуют только на содержимое выбранных элементов, если не указано иное.

replace <выражение для замены> <заменяемое регулярное выражение>,
replace_all <новый текст> Данные действия заменяют в выбранных элементах текст, удовлетворяющий <заменяемому регулярному выражению> на текст, указанный в <выражении для замены>.

Пример:

Поиск и переименование исполняемых файлов во вложениях (изменяется содержимое заголовков Content-disposition):

select mime.headers Content-disposition "filename=.*\\.exe",or mime.headers Content-type "name=.*\\.exe",replace "\\.ex_" "\\.exe", pass

Эти команды не работают для многокомпонентных частей сообщений. Т.е. для сообщения, состоящего, к примеру, из многокомпонентного MIME-объекта с двумя вложенными объектами (как, например, объект Container на картинке, приведенной выше) правило модификации:

select message, replace_all "text"

не произведет никакого эффекта, поскольку многокомпонентные объекты сами по себе не содержат данных, а лишь служат контейнерами для других объектов.

Для команд replace и replace_all в аргументах <выражение для замены> и <новый_текст> можно использовать вызовы функций в виде ${func_name}. Аргументом для этих функций является текущее заменяемое выражение. Реализованы следующие функции:

ourlencode – кодирование аргумента в строку, которую можно использовать в качестве URL;

oself – вернуть само выражение без изменений.

Пример:

select mime.headers "Subject" "^.*$", replace_all "[SPAM] ${self}"

В начало заголовка Subject письма будет вставлена строка "[SPAM]". Например, заголовок "This is Subj" будет заменен на "[SPAM] This is Subj".

Пример:

select mime.body ".*", replace "http://check-url.com?url=${urlencode}" "http://\\S+"

В теле письма текст, соответствующий указанному шаблону, например: "Visit http://vasya.com?id=3", будет заменен на "Visit http://check-url.com?url=http%3A%2F%2Fvasya%2Ecom%3Fid%3D3".

remove Данная команда удаляет любые виды выбранных объектов, кроме корневого MIME-объекта "письмо" (т.е. при помощи нее письмо целиком удалить нельзя!).

Пример:

Например, нельзя использовать команду remove в правилах модификации вида:

GlobalRules = select mime(body) "text", remove, pass
GlobalRules = select mime(body) "script", remove, pass

prepend_text, append_text,
prepend_html, append_html Данные команды добавляют в выбранные MIME-объекты фрагмент в формате plain-text или html.

Команды имеют необязательный аргумент [[7b:]encoding]. В нем слово encoding указывает название кодировки добавляемого текста, а префикс "7b:" указывает на использование 7-битной кодировки context transfer encoding (CTE) 7bit. Если префикс "7b:" не указан, то будет использоваться кодирование CTE 8bit. Если не указан encoding, то используется кодировка, указанная в параметре Encoding в конфигурационном файле подключаемого модуля.

Пример:

select message, append_html "<h1>checked by antispam</h1>"

Кроме того, в качестве источника данных данных для вставки текстов в конкретной кодировке может также служить языковой lng-файл подключаемого модуля Dr.Web Modifier. Для использования строк из lng-файла следует использовать формат записи $n, где n – номер строки в lng-файле. Подробнее об использовании языковых файлов см. в разделе Языковые файлы.

Пример:

Пусть в lng-файле есть строка:

...
782 = "строка текста"
...

тогда выражение append_text $782 будет эквивалентно выражению append_text "строка текста".

warning

Обратите внимание, что команды prepend_text, append_text, prepend_html, append_html вставляют в выбранные объекты не просто текст, а полноценный MIME-объект с текстовым содержимым (в начало или в конец выбранных по select объектов соответственно), в результате чего измененные объекты становятся составными. Поэтому добавление текстовой информации всегда ведет к сбросу списка выбранных объектов. Для продолжения обработки письма после вставки в него какого-либо текста следует повторить операцию выборки объектов select.

addheader – Добавление заголовков в выбранные MIME-объекты.

Пример:

select message, addheader "foo:bar"

Эта команда добавит к письму заголовок с именем foo и значением bar. Имя и значение заголовка отделяются друг от друга двоеточием (":").

Как для поиска текста, так и для его вставки следует учитывать кодировку вставляемого текста. Текст всегда вставляется в той кодировке, в которой создан конфигурационный файл (за исключением команд prepend_text, append_text, prepend_html и append_html, использующих для вставки текста либо кодировку, явно указанную в команде, либо кодировку, заданную в параметре Encoding конфигурационного файла подключаемого модуля). Для использования других кодировок следует использовать явное кодирование строковых значений.

2.3. Действия, изменяющие счет письма

Существует возможность проверки или изменения счета, присвоенного письму. Письму присваивается числовая оценка (score – счет), первоначально равная нулю. При обработке письма подключаемые модули могут менять эту оценку. При помощи команд add_score и set_score можно произвести изменение этой оценки. В том числе – уменьшить ее, для чего в команде add_score можно указывать отрицательное число.

Пример:

set_score 10

Устанавливает для письма счет 10.

Пример:

add_score 11

Увеличивает счет письма на 11.

Аргумент score может быть 32-битным целым числом из диапазона от -2 млрд до +2 млрд. Следует учитывать возможность переполнения score при операциях с ним и вызванной этим переполнением некорректной работы других модулей, обрабатывающих письмо. Поэтому настоятельно рекомендуется избегать использования неоправданно больших значений score в правилах модификации (к примеру, не задавать 2 000 000 000 в качестве параметра действия add_score).

2.4. Применимость действий к различным объектам письма

В Таблице 1 показывается, какой эффект оказывают действия в зависимости от того, к какому множеству, выбранному select, они применяются.

Таблица 1. Воздействие команд модификации на различные типы выбранных элементов

Table_Modifier_new

В таблице используются следующие условные обозначения:

* – такое же, как для mime.body;

+ – применимо;

- – игнорируется.

Обратите внимание, что действия prepend_text, prepend_html, append_text, append_html и addheader можно применять только в том случае, если при помощи select выбран составной, а не простой объект (такой, например, как значение заголовка) поскольку они всегда вставляют в выбранный объект дополнительный MIME-объект, который не может являться значением заголовка.

3. Операторы проверки условий

Операторы проверки условий применяются для изменения порядка действий над сообщением в зависимости от того, выполняется условие, или нет. Основные виды условий:

1.Ветвление по наличию выборки:

if [not] found, <действие или список действий>, [else, <действие или список действий>,] endif

Условие if found истинно, если выборка, сформированная предшествующим оператором select, не пуста. Условие if not found истинно в противоположном случае. В случае истинности условия будет выполнен список действий, указанных после него, до тех пор, пока не встретится оператор окончания ветвления endif или оператор альтернативной ветви else. Альтернативная ветвь else, <действие или список действий> может отсутствовать. В этом случае при ложности условия осуществляется переход сразу к оператору, следующему за endif.

В разделе <действие или список действий> может также выполняться формирование новой выборки при помощи оператора select, и, соответственно, выполняться проверка вложенных условий (if или goto). Новая выборка будет замещать предыдущую (которая использовалась для проверки условия). Например:

select <A>, if found, select <B>, reject, endif

В данном случае из письма выбирается некоторое множество элементов, обозначенное как <A>. Если оно пусто, то переход к endif, окончание работы правила модификации (никакого решения по письму не принято). Иначе из этого же письма формируется новая выборка, обозначенная в примере как <B> (при этом она замещает собой для последующих операторов действия ранее выбранную выборку <A>) Если она не пустая, то письмо отклоняется. В противном случае никакого решения по письму не принимается (действие reject игнорируется для пустой выборки <B>).

2.Ветвление по значению счета письма:

if score <op_value>, <действие или список действий>, [else, <действие или список действий>,] endif

Условие if score истинно, если текущее значение счета письма соответствует заданному выражению сравнения. Команда if score работает аналогично команде if found, но проверяет не наличие выбранных элементов, а только оценку, т.е. она игнорирует результаты предыдущих команд select.

Аргумент <op_value> должен быть записан одной строкой, без пробелов – т.е. '<100', но не '< 100', и должен состоять из символа операции сравнения и целочисленного значения. Для if score возможны следующие операции сравнения:

if score <N – если score меньше N;

if score >N – если score больше N;

if score =N – если score равно N.

Аргумент N может быть 32-битным целым числом из диапазона от -2 млрд до +2 млрд. Следует учитывать возможность переполнения score при операциях с ним, и вызванной этим переполнением некорректной работы других модулей, обрабатывающих письмо. Поэтому настоятельно рекомендуется избегать использования неоправданно больших значений score в правилах модификации (к примеру, не задавать 2 000 000 000).

3.Операторы перехода:

goto N   – безусловный переход на N команд в списке действий вперед;

goto(y) N – условный переход на N команд в списке действий вперед, если множество элементов не пустое;

goto(n) N – условный переход на N команд в списке действий вперед, если множество элементов пустое.

Аргументом служит положительное целое число, указывающее, сколько команд следует пропустить.

Примеры:

GlobalRules = select mime.headers Subject "word1|word2|wordN", if found, notify rule, quarantine, reject, endif

При наличии в заголовке письма слов "word1", "word2", либо "wordN" письмо копируется в Карантин, после чего администратору передаётся уведомление MailD и письмо отклоняется.

GlobalRules = select mime.headers Subject "word1|word2|wordN", if found, reject, notify rule, quarantine, endif

В данном примере команды notify и quarantine не будут выполняться, поскольку на команде reject письмо отклоняется и его обработка останавливается (команда reject – "решающая").

GlobalRules = select mime(header) Content-type "executable", goto(n) 1, reject

Этот набор команд позволяет отклонить письма, в которые вложены исполняемые файлы.

GlobalRules = select mime.headers "X-DrWeb-SpamState" "yes", if found, select mime(headers) Content-type "image", remove, endif

Этот набор команд позволяет удалить картинки из письма, отмеченного подключаемым модулем Vaderetro как спам.

Примеры на изменение счета письма:

Установка счета 10 для письма, удовлетворяющего некоему условию:

select <...> if found, set_score 10, endif

Если счет письма превышает 100, то письмо отклоняется. В противном случае его счет уменьшается на 5:

select <...> if score >100, reject, else, add_score -5, endif

Более подробные примеры правил модификации подключаемого модуля Dr.Web Modifier показаны в разделе Примеры.

Правила экранирования служебных символов

В правилах модификации, задаваемых для подключаемого модуля, крайне не рекомендуется использовать значения и регулярные выражения, содержашие символ кавычки (") или символ обратного слэша "\", поскольку их экранирование (символом "\") может привести к ошибке разбора строки в конфигурационном файле Dr.Web MailD. Однако если без использования этих символов не обойтись, то помните следующие правила:

при использовании в правилах модификации кавычек может потребоваться экранировать их несколькими символами "\". В текущей версии Dr.Web MailD для экранирования кавычки требуется шесть символов "\".

для экранирования символа "\"  перед ним необходимо повторить его же 7 раз.

одиночная кавычка (апостроф) ' не экранируется.

Примеры:

Отклонение писем с темой, содержащей кавычку и состоящей из одного символа '\' соответственно:

GlobalRules = select mime.headers Subject ".*\\\\\\"", if found, reject, endif

GlobalRules = select mime.headers Subject "^\\\\\\\\$", if found, reject, endif

Отклонение писем с темой, содержащей текст text'"\quoted\"text:

GlobalRules = select mime(headers) Subject "text'\\\\\\"\\\\\\\\quoted\\\\\\\\\\\\\\"text", if found, reject, endif