Postfix Überwachung mit Mailgraph und pflogsumm auf Debian Etch
Version 1.0
Author: Falko Timme <ft [at] falkotimme [dot] com>
Diese Anleitung beschreibt, wie Du Deinen Postfix Mail Server mit den Tools Mailgraph und pflogsumm überwachen kannst. Mailgraph erzeugt tägliche, wöchentliche, monatliche und jährliche Grafiken von gesendeten, empfangenen, bounced und zurückgewiesenen E-Mails sowie Spam und Viren, wenn SpamAssassin und ClamAV in Postfix integriert sind (z.B. unter Verwendung von amavisd-new). Auf diese Grafiken kann man mit einem Browser zugreifen. Mit pflogsumm („Postfix Log Entry Summarizer“) können Berichte von Postfix Aktivitäten per E-Mail gesendet werden.
Im Folgenden werde ich beschreiben, wie man Mailgraph und pflogsumm auf Debian Etch installiert und konfiguriert.
Ich übernehme keine Garantie, dass dies auch bei Dir funktioniert!
1 Vorbemerkung
In dieser Anleitung hat mein Linux System die IP Adresse 192.168.0.100 und hostet die Webseite http://www.example.com mit dem Dokumenten-Root /var/www/www.example.com/web und einem cgi-bin Verzeichnis von /var/www/www.example.com/cgi-bin. Ich werde die pflogsumm Berichte an die E-Mail Adresse postmaster@example.com senden.
2 Mailgraph
Debian Etch hat Pakete für Mailgraph und pflogsumm, also installieren wir sie einfach. Wir installieren außerdem rrdtool, das die Daten speichert, die Mailgraph benötigt um die Grafiken zu erzeugen:
apt-get install rrdtool mailgraph
Nun konfigurieren wir das mailgraph Paket wie folgt:
dpkg-reconfigure mailgraph
Dir werden ein paar Fragen gestellt:
Should Mailgraph start on boot? <– Yes
Logfile used by mailgraph: <– /var/log/mail.log
Dann taucht noch folgende Frage auf:
Count incoming mail as outgoing mail?
Wenn ein Content-Filter wie amavisd (zum Scannen von Spam und Viren) in Postfix integriert ist (wie in dieser Anleitung: Integrating amavisd-new Into Postfix For Spam- And Virus-Scanning), dann antworte No, um zu verhindern, dass Mailgraph Deine E-Mails zweimal zählt (da Postfix E-Mails an amavisd weiterleitet, die dann – nach erfolgreichem Scannen – an Postfix zurückgeschickt werden). Wenn Du keinen Content-Filter verwendest, dann antworte mit Yes.
Während der Installation werden die System Startup Links für Mailgraph automatisch erstellt. Mailgraph wird ebenfalls automatisch gestartet, also müssen wir es nicht manuell starten.
Nun müssen wir das mailgraph.cgi Skript (das die Grafiken zeichnet und die Ausgabe für unsere Web Browser erstellt) in das cgi-bin Verzeichnis unserer www.example.com Webseite kopieren:
cp -p /usr/lib/cgi-bin/mailgraph.cgi /var/www/www.example.com/cgi-bin
Das Skript ist bereits ausführbar, wir müssen es also nicht chmoden. Falls Du für die www.example.com Webseite suExec verwendest, musst Du den Besitzer und die Gruppe von mailgraph.cgi ändern.
Richte Deinen Browser nun auf http://www.example.com/cgi-bin/mailgraph.cgi aus und Du siehst einige Grafiken. Natürlich müssen erst ein paar E-Mails durch Dein System bevor Du die ersten Resultate sehen kannst, sei also etwas geduldig.
Nach einiger Zeit könnten Deine Grafiken wie folgt aussehen (die folgende Ausgabe ist benutzerdefiniert, sie sieht also nicht ganz genauso aus wie Deine):
Tägliche Statistiken.
Wöchentliche Statistiken.
Monatliche Statistiken.
Jährliche Statistiken.
Bitte Merke: Mailgraph zeigt Spam und Viren nur dann an, wenn ein Content-Filter wie amavisd-new in Postfix integriert ist, der konfiguriert ist, SpamAssassin und ClamAV zu verwenden um Spam und Viren-Mails zu identifizieren. Wenn Du das nicht tust, wirst Du immer noch Grafiken sehen können, jedoch ohne Spam- und Viren-Bericht.
3 pflogsumm
Um pflogsumm zu installieren, führen wir Folgendes aus
apt-get install pflogsumm
Wir möchten, dass pflogsumm täglich von einem Cron Job ausgeführt wird und den Bericht an postmaster@example.com sendet. Daher müssen wir unser System so konfigurieren, dass es eine Mail Log-Datei für 24 Stunden schreibt und danach das nächste Mail Log startet, sodass das alte Mail Log von pflogsumm gelesen werden kann. Dazu konfigurieren wir logrotate (das ist das Programm, das die Log-Dateien unseres Systems rotiert) wie folgt: öffne /etc/logrotate.conf und hänge folgende Zeile nach der Zeile # system-specific logs may be configured here an:
vi /etc/logrotate.conf
[...] # system-specific logs may be configured here /var/log/mail.log { missingok daily rotate 7 create compress start 0 } |
Es gibt ein logrotate Skript in /etc/cron.daily. Dieses Skript wird jeden Tag zwischen 06:00 Uhr und 07:00 Uhr aufgerufen. Mit der gerade vorgenommenen Konfiguration kopiert es die derzeitige Postfix Log /var/log/mail.log nach /var/log/mail.log.0 und komprimiert sie. Die komprimierte Datei ist dann /var/log/mail.log.0.gz. Weiterhin wird eine neue, leere /var/log/mail.log erstellt, auf die Postfix für die nächsten 24 Stunden loggen kann.
Nun erstellen wir das Skript /usr/local/sbin/postfix_report.sh das pflogsumm aufruft und veranlasst, den Bericht an postmaster@example.com zu senden:
vi /usr/local/sbin/postfix_report.sh
#!/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin gunzip /var/log/mail.log.0.gz pflogsumm /var/log/mail.log.0 | formail -c -I"Subject: Mail Statistics" -I"From: pflogsumm@localhost" -I"To: postmaster@example.com" -I"Received: from www.example.com ([192.168.0.100])" | sendmail postmaster@example.com gzip /var/log/mail.log.0 exit 0 |
Wir müssen dieses Skript ausführbar machen:
chmod 755 /usr/local/sbin/postfix_report.sh
Dann erstellen wir einen Cron Job, der das Skript jeden Tag um 07:00 Uhr aufruft:
crontab -e
0 7 * * * /usr/local/sbin/postfix_report.sh &> /dev/null |
Somit wird der Bericht an postmaster@example.com gesendet. So sieht es im E-Mail Client aus:
4 Links
- Mailgraph: http://people.ee.ethz.ch/~dws/software/mailgraph
- pflogsumm: http://jimsun.linxnet.com/postfix_contrib.html
- RRDTool: http://oss.oetiker.ch/rrdtool
- Postfix: http://www.postfix.org
- Debian: http://www.debian.org