Postfix

Limit Postfix E-Mails pro Stunde

Nachdem aus dem OTRS in der Nacht 25.000 E-Mails versand wurden, hatte uns unser Provider vorübergehend auf seinen Relay Servern blacklistet.
Um solche nächtliche Überraschungen künftig zu vermeiden, habe ich einen Policy Server für Postfix geschrieben. Dieser wird auf dem ausgehenden Mail Relay eingebunden und gibt nach 750 E-Mails pro Stunde dem Exchange DEFER zurück gibt, worauf dieser die Mails in seiner Queue behält.

Der Policy Server liest aus der Datei /tmp/postfix-counter den aktuellen Count und den Timestamp des letzten Counterreset. Ist der Timestamp älter als eine Stunde, wird der Counter auf 1 gesetzt, sonst um 1 erhöht und wieder in die Datei zurückgeschrieben.

Zur Überwachung habe ich einen einfachen Nagios Check geschrieben, welcher den Counter ausliest, die Anzahl Mails prüft und als Performancedaten ausgibt. Die enstandenen PNP Graphen sehen dann wie Sägezähne aus.

Im Postfix wird das Ganze in der main.cf eingebunden.

 

 

Exchange Message Header cleanup in Postfix

Wer sich mal den Header seiner ausgehenden E-Mail angesehen hat, wird vielleicht mit Schrecken festgestellt haben, das Exchange Server dort etwas zu gesprächig sind.
Da man für eine DKIM Signatur am besten noch ein ausgehendes Relay zwischen Exchange und Internet schaltet, kann man mit Postfix sehr schnell für Abhilfe schaffen.
Die DKIM Signatur erfolgt nach der Verarbeitung der „header_checks“, wir können hier also noch beliebig ändern.

Zuerst ersetze ich die „Received“ Zeile der Übertragung vom Exchange Server an das Postfix Relay mit einem Eintrag von localhost. Hier kann man auch einen beliebigen anderen MTA z.B. Exim eintragen. Er sollte nur nicht zu fantasievoll sein, Antispam Systeme sind nachtragend. Das gilt auch für die unbedingt richtige Syntax! (MessageID und Uhrzeit)

Dann werden alle X-Header mit Verweisen auf interne IP Adressen gelöscht.

Zuletzt lösche ich noch X-Header mit Verweisen auf den User-Agent, Antivirus und Antispam und wer sich da sonst noch einträgt.
Benutzt man z.B. OTRS, sollte man hier unbedingt den X-Header mit der Software Versionsnummer löschen, aber den X-Header mit der Ticketnummer lassen.

zum testen legt man sich ein Mailkonto bei hotmail an und schaut sich dort den Quelltext der E-Mail an.

 

 

Nagios, Mailgraph, check_logfile

zur Statistischen Erfassung war auf dem alten Mailserver „mailgraph“ installiert. Das Problem für mich war, das ich die Daten nicht brauchbar ins Nagios bekommen habe (check_rrd etc).
Die Lösung: Das Maillog mit check_logfile parsen und das Ergebniss als Performance Daten für Nagios ausgeben.

Aufruf von check_logfile in der nrpe.cfg:

In der logfile.cfg sind die Parser für

  • recive – Mail an den Exchange weitergeleitet
  • bounce – allgemeine Bounces
  • block – durch RBL geblocke Mails
  • block-nouser – wegen ungültiger Benutzer geblockte Mail