Назад | Перейти на главную страницу

Как мне предотвратить попадание информации журнала postfix в системный журнал?

У нас есть vps под управлением Ubuntu 10.04.4 LTS, и, пытаясь найти решение проблемы php, я узнал, что похоже на проблему с системой syslog - хотя я не уверен.

Файл syslog.conf выглядит так:

    auth,authpriv.*      -/var/log/auth.log
*.*;auth,authpriv.none  -/var/log/syslog
#cron.*          -/var/log/cron.log
daemon.*            -/var/log/daemon.log
kern.*              -/var/log/kern.log
lpr.*               -/var/log/lpr.log
mail.*              -/opt/psa/var/log/maillog
user.*              -/var/log/user.log

#
# Logging for the mail system.  Split it up so that
# it is easy to write scripts to parse these files.
#
mail.info           -/var/log/mail.info
mail.warning            -/var/log/mail.warn
mail.err         -/var/log/mail.err


# Logging for INN news system
#
news.crit        -/var/log/news/news.crit
news.err         -/var/log/news/news.err
news.notice         -/var/log/news/news.notice

#
# Some `catch-all' logfiles.
#
*.=debug;\
    auth,authpriv.none;\
    news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warning;\
    auth,authpriv.none;\
    cron,daemon.none;\
    mail,news.none      -/var/log/messages

#
# Emergencies are sent to everybody logged in.
#
*.emerg             *

#
# I like to have messages displayed on the console, but only on a virtual
# console I usually leave idle.
#
#daemon,mail.*;\
#   news.=crit;news.=err;news.=notice;\
#   *.=debug;*.=info;\
#   *.=notice;*.=warning    /dev/tty8

# The named pipe /dev/xconsole is for the `xconsole' utility.  To use it,
# you must invoke `xconsole' with the `-file' option:
# 
#    $ xconsole -file /dev/xconsole [...]
#
# NOTE: adjust the list below, or you'll go crazy if you have a reasonably
#      busy site..
#
daemon.*;mail.*;\
    news.err;\
    *.=debug;*.=info;\
    *.=notice;*.=warning    |/dev/xconsole

А файл / var / log / syslog содержит множество таких записей:

    Jun 10 04:04:00 lvps109-104-93-171 postfix/qmgr[688]: 814E0676E997: removed
Jun 10 04:04:01 lvps109-104-93-171 postfix/smtpd[11105]: connect from mail-we0-f196.google.com[74.125.82.196]

/var/log/mail.info, /var/log/mail.warn, & /var/log/mail.err все пустые, несмотря на то, что вышеуказанная конфигурация направляет им соответствующие сообщения.

Я пробовал добавить "mail.* -/var/log/mail.log'в файл conf, чтобы увидеть, могу ли я получить там повторение сообщений smtp и qmgr, но этот файл журнала также остается пустым.

Я пробовал поменять*.*;auth,authpriv.none -/var/log/syslog'чтобы *.*;auth,authpriv.none;mail.none -/var/log/syslog чтобы узнать, могу ли я остановить любые постфиксные сообщения, идущие в / var / log / syslog, но они продолжают идти туда.

Я много лет искал команду, которая мне нужна для перенаправления этих постфиксных сообщений в файл mail.log, но сообщения, которые я нашел, похоже, упоминают только сообщения .info, .err и .warn. Насколько мне удалось выяснить, демон syslog должен направлять их в соответствующие файлы.

Итак, мои вопросы: как перенаправить постфиксные сообщения из / var / log / syslog? Почему сообщения .warn, .info и .err не идут туда, где должны быть?

Любая помощь с благодарностью получена - Большое спасибо.

Я думаю, вы используете rsyslog? Вы должны указать rsyslog, чтобы он остановил обработку сообщения после записи в соответствующий файл. Это можно сделать с помощью & ~.

mail.*                          -/var/log/mail.info
& ~

Поместите эти строки перед строка, содержащая *.*.

Когда это будет сделано, перезапустите системный журнал.

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

*.*;mail,auth,authpriv.none     /var/log/syslog

Что делает эта линия? Мне кажется, что он должен ДОБАВЛЯТЬ почтовые сообщения в / var / log / syslog, но мы пытаемся сделать обратное. Ага, возможно, он расширяется до mail.none? Но тогда почему попытка OP предложить следующее решение не сработала для него / нее? Это было:

*.*;auth,authpriv.none;mail.none -/var/log/syslog

но он / он сказал: «Чтобы посмотреть, смогу ли я остановить любые постфиксные сообщения, идущие в / var / log / syslog, но они продолжают отправляться туда».

Просто его вторая точка с запятой все портит?

В любом случае решение TraceElement работает для меня на Ubuntu 16.04.2 LTS.

Вот что у меня работало в Ubuntu 14.04.1 LTS, чтобы почтовые элементы не попадали в системный журнал:

*.*;mail,auth,authpriv.none     /var/log/syslog

И я разделил журналы почты на ошибки и не ошибки с этим, что также работает:

mail.debug;mail.!err    /var/log/mail.log
mail.err        /var/log/mail.err

В основном все, что находится на уровне .debug и выше, попадает в mail.log, за исключением всего, что находится на уровне .err и выше, которое попадает в файл mail.err.

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

Ссылка: раздел "Селекторы" http://www.rsyslog.com/doc/rsyslog_conf_filter.html

Эта строка:

*.*;auth,authpriv.none  -/var/log/syslog

означает журнал каждый объект в каждый уровень в / var / log / syslog, за исключением authpriv. Очевидно, сюда входит и почта.

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

Кроме того, вам необходимо перезапустить службу журнала после того, как вы внесли изменения в файл. Обычно это делается путем простой отправки HUP на PID процесса syslogd. Когда вы это сделаете, проверьте / var / log / syslog на наличие сообщений о строках в syslogd.conf, которые не удалось проанализировать.

В Ubuntu 18.04 я просто изменил строку в /etc/rsyslog.d/50-default.conf

из

*.*;auth,authpriv.none             -/var/log/syslog

к

*.*;auth,authpriv,mail.none        -/var/log/syslog

Мое понимание:

  • *.* выбирает сообщения из всех средств (auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security (так же, как auth), syslog, user, uucp и local0 через local7), со всеми приоритетами (отладка, информация, уведомление, предупреждение, предупреждение (то же, что и предупреждение), ошибка, ошибка (то же, что и ошибка), крит, предупреждение, возникновение, паника (то же, что и возникновение))
  • ; запускает новый селектор
  • auth,authpriv,mail.none выбирает auth, authpriv и mail средства без приоритета (это означает, что он не выбирает ни одного сообщения, потому что все сообщения имеют приоритет). Этот селектор переопределяет *.* селектор для этих конкретных объектов.