Überwachen Sie die Postfix-Postausgangszustellung

11

Ich verwende GNU Mailman mit Postfix, um eine Mailingliste auszuführen, und möchte die Zustellung ausgehender E-Mails überwachen. Überprüfen Sie daher für jede aus der Liste gesendete E-Mail, ob eine 250 (OK) -Nachricht beantwortet wurde, und wenn nicht , melde dich bei mir.

Im Moment mache ich eine schnelle und schmutzige:

# cat /var/log/syslog | grep "smtp.*to=.*" | grep -v 250

Gibt es eine saubere Möglichkeit, die Ausgabe von smtpd zu überwachen?

Stéphane Caron
quelle
1
Sicherlich muss dies eine nutzlose Verwendung von seincat ? Zumindest können Sie tungrep "smtp.*to=.*" /var/log/syslog | grep -v 250
ein CVn
Persönlich finde ich diesen Kreuzzug in den meisten Kontexten etwas pedantisch und bevorzuge das besser lesbare, modulare Format des OP
jchook

Antworten:

8

Es gibt keine Möglichkeit, die gesendeten E-Mails sauber zu überwachen. Sie können die Details nur aus dem Postfix-Maillog abrufen.

Hier ist ein Beispiel:

log='logfile of postfix'
grep "status=sent" $log | \
egrep -ve 'postfix/(cleanup|pickup|master|qmgr|smtpd|local|pipe)'

Und vermeiden Sie auch die Protokolle für dkimusw. Wenn Sie die Anzahl der Mails benötigen, leiten Sie diese am wc -lEnde weiter.

Mailer
quelle
3

Wie wäre es mit:

multitail -eX "smtp.*to=<(.*)>.*sent.*250" './bin/received' -f /var/log/maillog

./bin/received ist ein Shell-Skript, das die Ziel-E-Mail-Adresse als Parameter abruft und etwas damit macht.

Guillermo Payet
quelle
1

Versuche dies

cat /var/log/maillog |grep -v "relay=local" |grep "relay=" |grep "status=sent"

Sehr hilfreiche Informationen finden Sie hier http://en.redinskala.com/postfix-maillog-interpretation/

Christoforos
quelle
Warum verwenden Sie intelligente Anführungszeichen? Sie werden nicht funktionieren.
DavidPostill
0

Ich beobachte, wer E-Mails über meinen Server sendet:

tail -f /var/log/mail.log | grep 'sasl'

Es zeigt, wer der authentifizierte Benutzer ist, der sendet.

user1182988
quelle