Wie kann ich verhindern, dass Postfix-Protokollinformationen in das Syslog gelangen?

7

Wir haben ein vps mit Ubuntu 10.04.4 LTS und während ich versuche, eine Lösung für ein PHP-Problem zu finden, bin ich mir bewusst geworden, was wie ein Problem mit dem Syslog-System aussieht - ich bin mir jedoch nicht sicher.

Die Datei syslog.conf sieht folgendermaßen aus:

    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

Und die Datei / var / log / syslog enthält viele Einträge wie diesen:

    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 sind alle leer, obwohl die obige Konfiguration die relevanten Nachrichten an sie weiterleitet.

Ich habe versucht, ' mail.* -/var/log/mail.log' zur conf-Datei hinzuzufügen, um zu sehen, ob ich die smtp & qmgr-Nachrichten dort wiederholen kann, aber diese Protokolldatei bleibt auch leer.

Ich habe versucht, ' *.*;auth,authpriv.none -/var/log/syslog' zu ändern, um *.*;auth,authpriv.none;mail.none -/var/log/syslogzu sehen, ob ich Postfix-Nachrichten in / var / log / syslog stoppen kann, aber sie werden weiterhin dort abgelegt.

Ich habe lange gesucht, um den Befehl zu finden, den ich brauche, um diese Postfix-Nachrichten in die Datei mail.log umzuleiten, aber Beiträge, die ich gefunden habe, scheinen nur die Nachrichten .info, .err und .warn zu erwähnen. Soweit ich herausfinden konnte, sollte der Syslog-Daemon sie an die entsprechenden Dateien weiterleiten.

Meine Fragen lauten also: Wie leite ich die Postfix-Nachrichten von / var / log / syslog weg? Warum werden die Nachrichten .warn, .info und .err nicht dort abgelegt, wo sie sein sollten?

Jede Hilfe dankbar erhalten - Vielen Dank.

Paulioliolio
quelle

Antworten:

6

Ich denke du benutzt rsyslog? Sie müssen rsyslog anweisen, die Verarbeitung der Nachricht nach dem Schreiben in die entsprechende Datei zu beenden. Dies kann mit erfolgen & ~.

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

Setzen Sie diese Zeilen vor die Zeile, die enthält *.*.

Starten Sie Syslog neu, wenn es fertig ist.

SamK
quelle
2

Dies hat bei mir in Ubuntu 14.04.1 LTS funktioniert, um die E-Mail-Nachrichten aus dem Syslog herauszuhalten:

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

Und ich habe die Mail-Protokolle damit in Fehler und Nicht-Fehler aufgeteilt, was auch funktioniert:

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

Grundsätzlich geht alles, was .debug-Level und höher ist, in mail.log, mit Ausnahme von allem, was .err-Level und höher ist und in die mail.err-Datei geht.

Das einzige, was ich mir vorstellen kann, was dazu geführt haben könnte, dass Ihre E-Mail-Protokolldateien leer sind, ist das - vor dem Dateipfad, was meiner Meinung nach damit zu tun hat, dass das Protokoll nicht sofort geschrieben wird.

Referenz: Abschnitt "Selektoren" von http://www.rsyslog.com/doc/rsyslog_conf_filter.html

Spurenelemente
quelle
2

Oben sagte TraceElements, dass Folgendes Teil der Lösung sei, aber die erste Zeile scheint mir nicht intuitiv zu sein, nämlich:

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

Was macht diese Linie? Es sieht für mich so aus, als ob es E-Mail-Nachrichten an / var / log / syslog HINZUFÜGEN sollte, aber wir versuchen hier das Gegenteil zu tun. Ah ha, erweitert es sich auf mail.none vielleicht? Aber warum hat der Versuch des OP, die folgende Lösung zu finden, für ihn / sie nicht funktioniert? Das war:

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

aber er / sie sagte: "um zu sehen, ob ich Postfix-Nachrichten in / var / log / syslog stoppen kann, aber sie gehen weiterhin dorthin."

Ist es einfach so, dass sein zweites Semikolon alles durcheinander bringt?

Auf jeden Fall funktioniert die Lösung von TraceElement für mich unter Ubuntu 16.04.2 LTS.

Wille
quelle
1

Diese Linie:

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

bedeutet, dass jede Einrichtung auf jeder Ebene in / var / log / syslog protokolliert wird, wobei authpriv die einzige Ausnahme darstellt. Dies schließt natürlich auch die Post ein.

Sie weisen syslog außerdem an, die Datei nicht sofort zu synchronisieren. Dies bedeutet, dass wenn Sie nicht viele E-Mail-Protokollzeilen erhalten, diese möglicherweise nicht sofort in die Maillog-Dateien geschrieben werden. Die Syslog-Datei enthält jedoch so viele Nachrichten, dass sie wahrscheinlich früher geschrieben wird.

Außerdem müssen Sie den Protokolldienst neu starten, nachdem Sie Änderungen an der Datei vorgenommen haben. Normalerweise wird dazu einfach ein HUP an die PID des syslogd-Prozesses gesendet. Wenn Sie dies getan haben, überprüfen Sie / var / log / syslog auf Meldungen zu Zeilen in der Datei syslogd.conf, die nicht analysiert werden konnten.

Jenny D.
quelle
Entsprechend man rsyslog.confwird das -verwendet, um syncjedes Mal NICHT zu sagen und nicht umgekehrt: «Um die Synchronisierung für bestimmte Dateien selektiv zu deaktivieren, können Sie dem Dateipfad ein Minuszeichen (" - ") voranstellen.»
Alexis Wilke