Почтовый модуль Rsyslog не работает

Я хотел бы отправить по электронной почте уведомления о фырканье от моего Debian Lenny fw. Syslog отправляет сообщения журнала из брандмауэров в центральный rsyslog.

В моем центральном rsyslog я получил что-то вроде:

$ModLoad ommail
$ActionMailSMTPServer server.company.local
$ActionMailFrom rsyslog@company.local
$ActionMailTo syslog@company.net
$ActionExecOnlyOnceEveryInterval 1

$template mailSubject,"[SNORT] Alert from %hostname%"
$template mailBody,"Snort message\r\nmsg='%msg%'"
$ActionMailSubject mailSubject
if $msg regexp 'snort\[[0-9]*\]: \[[0-9]*:[0-9]*:[0-9]*].*' then ommail:;mailBody

Но я не получаю никаких писем, я даже могу вызвать фырканье с чем-то вроде ping -s 1400, он регистрирует такие вещи, как следующие, но по-прежнему нет почты!

2010-01-08T09:25:58+00:00 Hostname snort[4429]: [1:499:4] ICMP Large ICMP Packet [Classification: Potentially Bad Traffic] [Priority: 2]: {ICMP} ip_dest -> ip_src

4 ответа

Вам не хватает двоеточия в начале ommail.

if $msg regexp 'snort[[0-9]]: [[0-9]:[0-9]:[0-9]].*' then :ommail:;mailBody

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

Я бы также рекомендовал увеличить $ActionExecOnlyOnceEveryInterval после разбора.

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

Я боролся с этим сам и могу подтвердить, что следующая комбинация rsyslog и синтаксиса работает (у меня она сейчас в производстве). У меня есть Ubuntu 10.4.1, которая поставляется с rsyslog 4.2 по какой-то странной причине (она действительно старая). Итак, после удаления и установки 4.6.4.1, я в порядке.

Загрузите rsyslog 4.6.4.1 из репозитория Debian Squeeze здесь. Версия 4.6.4 (или один или два более ранних выпуска; сейчас не может быть вызвана) исправляет ошибку в ActionExecOnlyOnceEveryInterval, которая игнорируется.

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

$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

Я разделил свои различные устройства регистрации на отдельные файлы журнала с соответствующим файлом.conf. Я также установил директивы почтового сервера в файле с именем mail-settings.conf что я включаю в верхней части каждого конф.

Я также использую уникальное имя для каждой переменной шаблона (mailBodySnort, mailBodySquidи т. д.) в каждом файле conf, поскольку это выглядит как константа в том факте, что каждое последующее включение другого файла.conf не перезаписывает значение, назначенное в предыдущем файле.conf.

Развенчать старый, но поскольку проблема все еще может укусить тех, кто работает с Debian Squeeze, даже с rsyslog из backports (на данный момент 5.8.11-1~bpo60+2), возможно, стоит поделиться, что благодаря @abeverley здесь, я мог бы решить эту проблему, сбросив значение, добавив $ActionExecOnlyOnceEveryInterval 0 в конце правила уведомления по электронной почте ".

Например, вот теперь мой /etc/rsyslog.d/bonding.conf:

$template bondingMailSubject,"%hostname%: bonding Event"
$template bondingMailBody,"%msg%"
$ActionMailSubject bondingMailSubject
$ActionMailTo root
$ActionExecOnlyOnceEveryInterval 300
if $programname == 'bonding' and ($msg contains 'WARNING' or $msg contains 'CRITICAL') then :ommail:;bondingMailBody
$ActionExecOnlyOnceEveryInterval 0
Другие вопросы по тегам