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

Das könnte dich auch interessieren …