Проверка генерации уведомлений

Для проверки генерации компонентом Notifier уведомлений на основании шаблонов в интерфейсе интерактивного управления доступна специальная команда notify.

Формат команды

Команда имеет следующий синтаксис:

notify type [mode] [-] [options]

здесь:

type - Тип уведомления. Совпадает с именем файла используемого шаблона. Разрешается использовать любой из типов, кроме report.msg.

mode - Режим работы с уведомлением. Существуют следующие варианты:

oshow - сгенерировать письмо на основе шаблона и вывести его текст.

Формат вывода команды:

SIZE <FROM> <RCPT1> <RCPT2>...
BODY

где: SIZE - размер BODY в байтах. Если BODY не заканчивается переводом строки, то он добавляется (но в SIZE не включается); FROM - отправитель письма (из конверта); RCPT - получатели письма (из конверта); BODY - тело самого письма. Механизм определения отправителя и получателей письма описан ниже.

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

oasync - сгенерировать письмо на основе шаблона и отправить его через компонент Sender в асинхронном режиме (т.е. Sender должен принять письмо на обработку, но фактическое отправление может сделать позднее). Если используемых Sender не поддерживает данный режим, то отправка будет произведена в синхронном режиме (см. выше). Компонент Sender должен поддерживать хотя бы один из режимов. По результатам работы команды выводится строка об успешном или неудачном отправлении.

Если режим mode не указан, то он устанавливается в show.

client-id - идентификатор Клиента, в рамках которого обрабатывается уведомление. Если указан '-', то идентификатор принимается пустым. Таким образом с помощью команды notify можно работать только с одним Клиентом.

options - Список инициализации макросов для шаблона (присвоенные значения будут использоваться при генерации сообщения). Формат списка – набор пар вида:

NAME=VAL

где NAME - имя макроса (без окружающих $), а VAL - присвоенное значение, заключенное в одинарные кавычки. Регистронезависимый. Если в VAL нет пробельных символов, то окружающие кавычки можно опустить. Если кавычки присутствуют и в VAL встречается символ ', то перед ним должен ставиться повторный символ '.

Между NAME, '=' и VAL пробельных символов быть не может. Если указано несколько пар NAME=VAL с одинаковым NAME, то для макроса NAME устанавливается списковый тип и он в шаблоне обрабатывается соответствующим образом. Если в шаблоне предполагается, что макрос не имеет спискового типа, а он указан в команде несколько раз, то либо берется первое значение, либо все значения объединяются через запятую (что в большинстве случаев неверно).

После вывода команды всегда добавляется пустая строка.

Инициализация макросов

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

Не будут автоматически установлены значения макросов, используемых в отчетах (макросы с именем $RP_*$). Эти макросы треубется явно инициализировать в команде. Если какой-либо макрос, необходимый для генерации письма из шаблона, не был указан, то в журнале компонента Notifier будет выведена соответствующая ошибка.

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

_FROM - задает отправителя сообщения в конверте (в том числе используется для поиска параметров в Правилах, использующих условие sender:) Для шаблонов DSN отправитель всегда сбрасывается. Механизм определения отправителя письма (для конверта) описан ниже. Если задано несколько значений, то используется первое.

_RCPTS - задает получателей сообщения (в том числе используется и для поиска параметров в Правилах, использующих условие rcpt:) Имеет списковый тип. Механизм определения получателей (для конверта) описан ниже.

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

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

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

Механизм определения адресатов

Если заданы специальные значения _FROM или _RCPTS, то отправитель и получатели в конверте определяются только на их основе (кроме шаблонов DSN, где отправитель всегда устанавливается пустым). В противном случае используются следующие правила определения адресатов:

Для шаблонов welcome_user.msg и password_user.msg:

адрес отправителя устанавливается на основе параметра AdminMail из Правил;

адреса получателей – на основе макроса $RCPTS$ (поэтому он обязательно должен быть инициализирован, в противном случае возникнет ошибка).

Для шаблонов welcome_client.msg и password_client.msg:

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

адреса получателей устанавливаются на основе значения параметра AdminMail из сработавших Правил.

Для шаблонов DSN (dsn.msg или dsn_for_exchange.msg):

адрес отправителя всегда пустой

если задан параметр _FROM, то адрес получателя устанавливается в его первое значение, в противном случае адреса получателей берутся из макроса $RCPTS$. Если не задан параметр _FROM и не инициализирован макрос $RCPTS$, то возникнет ошибка.

Остальные шаблоны:

адрес отправитель устанавливается в значение параметра FilterMail из сработавших Правил.

адреса получателей – на основе макроса $RCPTS$ (поэтому он обязательно должен быть инициализирован, в противном случае возникнет ошибка).

Примеры использования команды

Показать текст письма, генерируемого как DSN для получателей ai@drweb.com и test@drweb.com

notify dsn.msg show - _RCPTS=ai@drweb.com FULLHEADERS='From: <fake>' _RCPTS='test@drweb.com'

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

Сформировать и отправить в синхронном режиме письмо, сгенерированное на основе шаблона admin_virus.msg

notify admin_virus.msg sync - RCPTS=test FULLHEADERS='From: <fake>'