Analyse des Mailverkehrs über Postfix


Vor einiger Zeit habe ich meinen  Mailserver aktualisiert und dabei auch einige Tools installiert, die mich bei der Administration unterstützen. Zu diesen Tools gehört das Tool PFlogsumm. PFlogsumm sendet mir seit dem E-Mail-Zusammenfassungen der Mailaktivitäten meines Mailservers.

Wie man PFlogsumm verwenden kann, ist hier gut beschrieben: https://www.howtoforge.de/anleitung/postfix-uberwachung-mit-mailgraph-und-pflogsumm/

Neben einem generellen Überblick über die Mailaktivitäten, der wirklich hilfreich ist um festzustellen welche Mails zu Schwierigkeiten führen, ob man sich um Probleme im Zusammenhang mit Blacklists kümmern sollte oder ob man Dateigrößen anpassen sollte. Also neben dem klassischen Monitoring mit Uptime-Kuma und den Performancedaten, die mir Munin liefert, eine sehr gute Ergänzung.

Zusammenstellung von strukturierten Daten aus dem Logfile mittels PFlogrep

Möchte man etwas mehr über Details im Mailverkehr wissen, hilft diese großartige Übersicht jedoch nicht wirklich. Auf der Suche nach interessanten Alternativen zu grep, awk, sed oder einem kleinen eigenen Skript bin ich auf das Tool PFlogrep gestoßen. Eine Art Postfix log grep.

PFlogrep lässt sich außerdem sehr gut mit PFlogsumm kombinieren:

pflogrep example.com /var/log/mail.log | pflogsumm

So kann man sich beispielsweise mit PFlogsumm eine schöne E-Mail-Übersicht für eine einzelne Domain oder sogar eine einzelne E-Mail-Adresse erstellen lassen.

Zusammenstellung von Logfildaten von Spammern, um diese an Abuse-Adressen zu melden

Sofern von einer IP-Adresse viele unterschiedliche Spam-E-Mails, auch mit unterschiedlichen Absender-Adressen empfangen wurden, kann man mit über die Sammlung aller IDs zu den Mails von der IP-Adresse eine gute Sammlung an Logdaten für den Provider zusammenstellen.

for i in $(grep x.x.x.x /var/log/mail.log |grep client= | cut -d : -f 4); do grep $i /var/log/mail.log; done |sed 's/to=<.*>/to=<removed>/g'

x.x.x.x einfach durch die entsprechende IP-Adresse ersetzen und darauf achten ob die ID in den Logs im Feld 4 enthalten ist. Mit dem sed-Kommando werden die lokalen Spam-Empfänger durch den String “removed” ersetzt.