Postfix Header anonymisieren

Wird ein eigener Mailserver betrieben, ob in der Firma oder für eine Arbeitsgruppe, fügt dieser Received: Header dem Kopf der E-Mail hinzu. Diese Header können im Falle eines Penetrationstests oder eines nicht erlaubten Angriffs genutzt werden, um Informationen über das interne Netzwerk oder den Standard eines Absender zu erhalten. Auch der User-Agent: Header wird übertragen, der vom Mailclient hinzugefügt wird.

Da viele E-Mail Clients diese Information nicht anzeigen, hier ein Auszug aus dem Kopf einer E-Mail.


Received: from [172.16.xxx.xxx] (b2b-46-252-xxx-xxx.unitymedia.biz [46.252.xxx.xxx])
(Authenticated sender: josen)
by outpost.paketsequenz.de (Postfix) with ESMTPSA id 8AED91032364B;
Wed, 13 Jun 2012 16:36:27 +0200 (CEST)
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120615 Thunderbird/13.0.1

Wünschenswert ist es, dass diese Informationen anonymisiert werden. Dafür bietet Postfix die header_checks Variable in der Konfigurationsdatei main.cf an. Das Hinzufügen von Kopfzeilen-Regeln lässt sich durch Hinzufügen einer weiteren Zeile in der main.conf bewerkstelligen, die wie folgt aussieht.

header_checks = pcre:/etc/postfix/header_checks

In der angegebenen Datei können jetzt in diesem Format einfache Aktionen definiert werden. Um die Header Received und User-Agent kommplett zu entfernen reichen die folgenden Zeilen.

/^Received:/ IGNORE
/^User-Agent:/ IGNORE

Diese Lösung funktioniert, ist aber nicht elegant. Zum einen müssen Mailserver nach RFC5321 einen Received Header hinzufügen, und zum anderen werden so bearbeitete E-Mail sofort als Spam enttarnt. Wünschenswert ist eine Anonymisierung des Received Headers, ohne das RFC zu verletzen und ohne als Spam klassifiziert zu werden. Ein Received Header wie der folgende erfüllt diese Anforderungen.

Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: josen) with ESMTPSA id 23DC81017E64E

Und so gehts:

Die folgenden Zeilen in die Datei header_checks einfügen.

/^Received: from \[.*?\] \([\w-.]* \[.*?\]\)\s+\(Authenticated sender: (\w+)\)\s+by outpost.paketsequenz.de \(Postfix\) with (E?SMTPS?A?) id ([A-F\d]+);.*?/
        REPLACE Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: $1) by outpost.pakesequenz.de with $2 id $3
/^User-Agent:/ IGNORE

Zusätzlich muss ein Eintrag in der Postfix main.cf hinzugefügt werden, der wie folgt lautet.

smtpd_sasl_authenticated_header = yes

2 Kommentare

Hugo 8. Oktober 2015 Antworten

Grüße!
Danke für den nützlichen Beitrag!

Ich habe es leicht angepasst, sodass auch der Benutzername durch eine „Kundennummer“ überschrieben wird und damit es auf alle Domains zugreift – so kann es auch problemlos portiert werden:

/^Received: from .*?s+bys+(.*)$/
REPLACE Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: k10815) by $1
/^User-Agent:/ IGNORE

josen 11. Oktober 2015 Antworten

Über einen Backlink freut sich der Blog (und ich natürlich auch) 🙂
Bei Fragen einfach Fragen.

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.