Wenn man eine über DNSSEC gesicherte Zone betreibt, kennt man das Problem vielleicht: Man hat die Zone signiert, aber man vergisst nach den 30 Tagen eine neue Signatur zu erzeugen.

Ich habe mir dafür inzwischen einen Cronjob angelegt, der in regelmäßigen Abständen die Zone neu generiert. Aber es ist doch sinnvoll über Zabbix die Zonen zu überwachen, damit keine Domäne aus dem Raster fällt.

Ich habe dazu check-rrsig geschrieben, welches das Ablaufdatum der Signatur überprüft. Das Skript verlangt als Parameter einen Hostnamen, optional kann man noch einen anderen Resolver als der aus /etc/resolv.conf angeben und Debugmeldungen einschalten. Als erster Schritt wird zuerst der Hostname validiert, dazu verwende ich die Bibliothek Respect\Validation. Danach finde ich den Namensserver heraus, der den Hostnamen zu Verfügung stellt und frage diesen, über die Bibliothek net_dns2 direkt ab, da ich etwaige Caches umgehe, weil ich ja einen möglichst realistischen Wert haben will. Dann frage ich von dem Original den ersten RRSIG-Record ab und extrahiere bei diesem den Ablaufzeitpunkt. Dann bilde ich noch den Unterschied zwischen dem aktuellen Datum und dem Ablaufdatum, gebe es zurück und bin fertig.

Die Integration in Zabbix ist damit relativ einfach. Man schafft die phar-Datei auf dem Zabbix-Server nach /etc/zabbix/externalscripts. Nun kann mann ein Item entweder in einem Host oder in einem Template erstellen und das Skript über einen External Check abrufen und Werte erfassen lassen.

Hinweis: Dies ist eine Übersetzung ins Deutsche von Zabbix: Postfix statistical graphs using passive checks. Zusätzlich habe ich das Zabbix-Template und das Skript hier noch gespiegelt.

Diese Anleitung hilft bei der Erstellung von passiven Checks. Es gibt dazu ein Skript, welches mit logtail und pflogsumm die Postfix Log-Dateien auswertet und in eine Statistik-Datei schreibt. Zum Schluss wird ein UserParameter erstellt, welcher die Daten aus der Statistik-Datei an Zabbix weitergibt.

Vorraussetzungen installieren

Wir müssen pflogsumm und logtail installieren. Bei Debian sieht das so aus:

1
$ apt-get install pflogsumm logtail

Skript einrichten

Das Skript muss als postfix-zabbix-stats.bash in /usr/local/bin gespeichert werden und als ausführbar (+x) markiert werden.

Danach legt man einen Cronjob für das Skript an, damit es die Statistik-Datei schreiben kann:

1
*/5 * * * * /usr/local/bin/postfix-zabbix-stats.bash

Zabbix Agent einrichten

In der Datei /etc/zabbix/zabbix_agentd.conf muss man den Wert EnableRemoteCommands auf 1 setzen.

Danach erstellt man eine Datei /etc/zabbix/zabbix_agentd.conf.d/postfix.conf mit folgendem Inhalt:

1
2
UserParameter=postfix.pfmailq,mailq | grep -v "Mail queue is empty" | grep -c '^[0-9A-Z]'
UserParameter=postfix[*],/usr/local/bin/postfix-zabbix-stats.bash $1

Anschließend kannst du den Agenten neustarten.

Zabbix Template importieren

Nun muss man das Template importieren und dem Host, auf dem Postfix läuft, zuweisen und schon ist man fertig und bekommt nette Postfix-Statistiken.