Eu lutei com isso sozinho e posso confirmar que a seguinte combinação de rsyslog e sintaxe funciona (eu tenho isso em produção agora). Eu tenho o Ubuntu 10.4.1 que vem com o rsyslog 4.2 por algum motivo estranho (é bem antigo). Então, depois de removê-lo e instalar o 4.6.4.1, estou em funcionamento.
Obtenha o rsyslog 4.6.4.1 do repo Debian Squeeze aqui . A versão 4.6.4 (ou uma ou duas versões anteriores, não se lembra agora) corrige um bug no ActionExecOnlyOnceEveryInterval que está sendo ignorado.
Eu uso a seguinte sintaxe para o Snort e posso confirmar que está realmente funcionando:
$IncludeConfig /etc/rsyslog.d/mail-settings.conf
$template mailSubjectSnort,"Snort Alert"
$template mailBodySnort,"this is the body, here's the host: %hostname%, here's the time it was reported: %timereported% and heres the message: %msg%"
$ActionMailSubject mailSubjectSnort
# make sure we receive an email only once per hour
$ActionExecOnlyOnceEveryInterval 3600
:msg, contains, "some_string" :ommail:;mailBodySnort
Eu divido meus vários dispositivos de log em arquivos de log separados com um arquivo .conf correspondente. Também defino as diretivas do servidor de email em um arquivo chamado mail-settings.conf
que incluo no início de cada conf.
Eu também uso um nome exclusivo para cada variável de modelo ( mailBodySnort
, mailBodySquid
, etc.) em cada conf, pois parece ser uma constante no fato de que cada inclusão subsequente de outro arquivo .conf não t sobrescreva o valor atribuído em um .conf anterior.