Управление пользователями, группами и алиасами

Понятие пользователя, группы и алиаса

Пользователем в Dr.Web для почтовых серверов UNIX называется владелец одного или более почтовых адресов, вся корреспонденция которого должна обрабатываться с использованием отдельных настроек. Если с пользователем связано более одного почтового адреса, то все адреса, используемые пользователем, называются алиасами (при этом один из адресов является главным).

С пользователем могут быть связаны индивидуальные Правила обработки его писем, аналогично тому, как они задаются в общих Правилах обработки в конфигурационном файле (в секции [Rules]). Идентификатором пользователя с точки зрения Dr.Web для почтовых серверов UNIX является его почтовый адрес (или любой алиас). Все адреса пользователя считаются единым целым и для них используется одинаковый набор настроек и собирается единая статистика.

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

Флаг активности (A) – активен ли пользователь (группа). Если да, то заданные для пользователя Правила будут использоваться при обработке его писем. В противном случае эти Правила будут игнорироваться.

Флаг статистики (S) – включен ли для пользователя (группы) сбор статистики. Чтобы была возможность вести статистику по каждому пользователю отдельно, уровень подробности общей статистики должен быть установлен в high.

Алгоритм поиска значений параметров при обработке писем

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

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

Просматриваются Правила, имеющиеся во встроенной базе данных и связанные с получателем данного письма (получатель определяется по заданному отправителем RCPT TO).

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

Просматриваются Правила, заданные в секции [Rules] основного конфигурационного файла.

Обратите внимание на порядок обхода Правил:

oВсе Правила в текущей просматриваемой группе Правил всегда проверяются в порядке их задания.

oДля каждого проверяемого Правила проверяется условие CONDITION – и если оно истинно, то значение требуемого параметра ищется среди элементов секции SETTINGS этого правила.

oЕсли условие CONDITION оказалось ложно, то просмотр Правила заканчивается и происходит переход к поиску значения в следующем Правиле.

oЕсли условие CONDITION истинно и после него стоит директива cont, то происходит переход к проверке следующего Правила. Если же после истинного CONDITION стоит директива stop, то просмотр Правил заканчивается вне зависимости от того, было найдено значение требуемого параметра или нет.

Значение параметра по результатам просмотра Правил всегда определяется следующим образом:

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

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

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

Из этого следует, что порядок указания групп для пользователя важен и определяет, какие настройки будут применяться к данному адресу.

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

1.Для ряда настроек происходит клонирование письма (т.е. создаются две копии с разными получателями в конвертах), и для каждой копии применяется свое значение настройки.

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

Внимание!

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

Для работы с пользователями, алиасами и группами можно использовать как интерфейс управляющего сокета, так и веб-интерфейс.

Команды интерфейса интерактивного управления для просмотра перечня имеющихся пользователей и групп

email-info

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

[client-id/]email A=0|1 S=0|1
name: username
aliases: alias1 alias2 ...
groups: group1 group2 ...
rules:
1: SETTINGS1
2: SETTINGS2
...
custom:
tag1: info1..
tag2: info2..
...

Здесь:

client-id - пустая строка;

A - активен пользователь или нет. Если пользователь не активен, то все связанные с ним Правила игнорируются;

S - вести для пользователя отдельную статистику или нет. Чтобы была возможность вести статистику по каждому пользователю отдельно, уровень подробности общей статистики должен быть установлен в high;

name: name1 - имя пользователя (используется, в основном, в веб-интерфейсе);

aliases:, groups:, rules:, custom: - информация об алиасах, группах, Правилах и прочих настройках пользователя.

groups-info

Выводит всю информацию о группе пользователей. С каждой группой связан такой же набор настроек, что и для пользователя (пустая строка client-id, название группы, активна ли группа, Правила группы, вести ли для нее отдельную статистику, список пользователей, входящих в группу, а также дополнительная служебная информация). Формат вывода этой информации следующий:

[client-id1/]group A=0|1 S=0|1
emails:
email1
email2
...
custom:
tag1: info1..
tag2: info2..
...

Команды интерфейса интерактивного управления для управления пользователями и группами

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

email - почтовый адрес пользователя (в соответствии с RFC 5322). Он может быть заключен в угловые скобки (<>). Также его можно заключать в одинарные кавычки ('). Длина его не может превышать 1024 байт.

client-email - пара значений [client-id/]email, где client-id для Dr.Web MailD всегда является пустым.

emails-list - список client-email, разделенных пробелами.

group - имя группы, заключенное в одинарные кавычки. Если в подстроке нет пробелов, то окружающие кавычки можно опустить. Если кавычки присутствуют, то когда в имени встречается символ ', то перед ним должен ставиться повторный символ '. Имя группы не может превышать 1024 байт.

client-group - пара значений [client-id/]group, где client-id для Dr.Web MailD всегда является пустым.

ext-client-group = [client-id/]group | client-id/ - аналог client-group, где client-id для Dr.Web MailD всегда является пустым.

group-list - список client-group, разделенных пробелами.

ext-group-list - список ext-client-group, разделенных пробелами.

RULE - Правило обработки писем. Если в значении параметра встречается запятая и она не заключена в кавычки, то перед ней надо ставить "\" – если параметр не разбивается запятыми (т.е. может иметь только одно значение, а не несколько значений, перечисленных через запятую), и "\\\" - если параметр разбивается запятыми (т.е. необходимо экранировать дважды).

Примеры:

true cont headersfilter/RejectCondition = FileName = \"\.e\\\,e\"\, FileName = \"\.com\", headersfilter/RejectPartCondition = FileName = \"\.e\\\,e\"\, FileName = \"\.com\"
true cont vaderetro/action = discard\, quarantine

tag - произвольная строка, состоящая только из символов [a-zA-Z0-9_-]. Она является тегом для поиска произвольной информации, связанной с пользователем или группой. Для Web-интерфейса устанавливается в значение web.

info - представляет собой всю строку (вплоть до перевода строки) - т.е. не может содержать внутри себя переводы строки или нулевые символы.

settings - набор настроек для объекта (пользователя или группы). Можно задавать в виде пар имя_параметра=значение. Параметры должны быть разделены пробелами.

Сейчас доступны следующие параметры:

oA (active) – может принимать значение 0 (не активирован) или 1 (активирован). Если объект не активирован, то все Правила, связанные с ним, не учитываются. По умолчанию (если параметр не указан) объект считается активным.

oS (stat) – контролирует ведение статистики для объекта. Может принимать значение 0 (не активирован) или 1 (активирован). Деактивация параметра означает только прекращение ведения статистики для объекта – при этом, если для объекта уже есть статистика в БД, то к ней по-прежнему есть доступ и она не удаляется. По умолчанию сбор статистики для объекта ведется.

oN (name) – расширенное имя пользователя (для групп данный параметр игнорируется). Может быть заключено в одинарные кавычки так же, как и group. Если параметр не указан, то имя пользователя устанавливается пустым. Максимальная длина имени составляет 1000 байт.

Примеры:

S=1 A=0 N='Some user'
S=0

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