Postfix Header anonymisieren
Wenn ein eigener Mailserver betrieben wird sendet dieser unter anderem auch deinen User-Agent
und deine IP-Adresse im ersten Received
Block mit.
1 2 3 4 5 | Received: from [192.168.xxx.xxx] (xxx-xxx-xxx-xxx-xxx.netcologne.de [78.34.xxx.xxx]) (Authenticated sender: tester) by mailout.adminforge.de (Postfix) with ESMTPSA id 4CED91036375B; Sun, 21 Mai 2017 08:36:27 +0200 (CEST) User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 |
Mit folgender Anleitung kannst du dies in Postfix unterbinden und bleibst dabei RFC5321 konform.
Punkt 1: Header Check hinzufügen
Wir sagen Postfix das er eine Header Datei hat und diese auch für jede ausgehende Mail anwenden soll.
1 2 3 | # add header for authenticated mail to strip IP smtpd_sasl_authenticated_header = yes smtp_header_checks = pcre:/etc/postfix/header_checks |
Dazu wird das Paket postfix-pcre benötigt.
1 | apt-get install postfix-pcre |
Punkt 2: Header anonymisieren
Nun sagen wir Postfix er möge diese Zeilen im Header der ausgehende Mails ignorieren.
1 2 3 4 | /^Received: .*\(Authenticated sender:.*/ IGNORE /^Received: by MAIL\.HOSTNAME\.DE .*from userid [0-9]+\)/ IGNORE /^User-Agent:/ IGNORE /^X-Originating-IP:/ IGNORE |
WICHTIG: In der zweiten Zeile ersetzt ihr MAIL\.HOSTNAME\.DE
mit z.B. mail\.adminforge\.de
, dem Hostnamen deines Postfix.
Punkt 3: Postfix Restart und Test
Wir starten den Mail Service neu.
1 | systemctl restart postfix.service |
Jetzt kann getestet werden, sende eine Testmail an die genannte Adresse auf der Webseite mail-tester.com.
Das erste Feld „Klicken Sie hier, um Ihre Nachricht anzuzeigen“ klappen wir aus und klicken auf „Quelle“. Dort sollte kein User-Agent
und keine Received
Zeile mit deiner IP-Adresse mehr zu finden sein.
Update 01.04.2018: REPLACE anstelle IGNORE
Obige Methode funktioniert weiterhin tadellos.
Wer seinen ersten Received
Header des Clients behalten möchte, kann seine IP-Adresse mit 127.0.0.1
austauschen.
In der Hauptkonfiguration lassen wir smtpd_sasl_authenticated_header
weg (Default: no).
1 2 | # add header to strip IP smtp_header_checks = pcre:/etc/postfix/header_checks |
Der Header wird mit diesen 3 Zeilen gesäubert.
1 2 3 | /^(Received: from)[^\n]*(.*)/ REPLACE $1 127.0.0.1 (localhost [127.0.0.1])$2 /^User-Agent/ IGNORE /^X-Originating-IP/ IGNORE |
Nach einem Neustart von Postfix sieht die erste gesäuberte Received-Zeile in etwa so aus.
1 2 3 4 | Received: from 127.0.0.1 (localhost [127.0.0.1]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES128-GCM-SHA256 (128/128 bits)) by mail.adminforge.de (Postfix) with ESMTPSA id D7F5718D258 for <xxx@xxx.xx>; Sun, 1 Apr 2018 10:35:55 +0200 (CEST) |
2
Danke für den Tipp, habe ich gleich eingebaut und funktioniert super. Allerdings musste ich noch das Paket postfix-pcre nachinstallieren, da es bei mir noch gefehlt hat.
Stimmt, Danke! Anleitung habe ich aktualisiert.
Hi, danke für deinen Beitrag. Leider setzt postfix nun die config auch für eingehende Mails um. Was kann man da machen?
Hallo Firlus,
ich kann dein Problem leider nicht nachstellen. Welche der beiden Varianten hast du genommen?
Mein Test mit der REPLACE Variante sieht wie folgt aus (jeweils erste Received Zeile):
Gesendet:
Received: from 127.0.0.1 (localhost [127.0.0.1]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.xxxxxx.de (Postfix) with ESMTPSA id 3A6A718739C for; Sat, 13 Apr 2019 09:30:50 +0200 (CEST)
Empfangen:
Received: by mail-ed1-f45.google.com with SMTP id x61so10266989edc.9; Sat, 13 Apr 2019 00:31:42 -0700 (PDT)
for
Gruß,
Dominion
Hallo Dominion, ich habe die erstere Variante genommen, da die Zweite mit IPv6 nicht ganz einwandfrei funktioniert. Entschuldige, mit den IP Adressen klappt es auch wie bei dir, nur werde. auch die Parameter X-Mailer, Originaling IP, User-Agent bei eingehenden Mails entfernt.
Hi Firlus,
eingehend sollte da garnichts verändert werden, siehe http://www.postfix.org/postconf.5.html#smtp_header_checks.
Vielleicht werden auch diese Header garnicht mitgeschickt? War jetzt in meinem Test mit Gmail auch der Fall.
Gruß,
Dominion
Hey Dominion,
ich habe es getestet, mit einem großen deutschen Mailprovider und die Regeln einmal aktiviert und deaktiviert. Wenn sie deaktiviert sind ist die User Agent Kennung bei eingehenden Mails da und wenn die Regeln wieder aktiviert sind, wird auch bei zu empfangenen Mails die User Agent Kennung entfernt. Merkwürdig… Es handelt sich auch nicht um ein riesen Setup mit Relay und so, sondern ist nur ein Single Server.
Wie sind die Replace- Regeln bei IPv6 Benutzung am besten zu setzen? Bei mir wird die Ipv6 Adresse nämlich abgeschnitten und nur anteilig überschrieben.
Hallo Firlus,
ich kann das Problem leider nicht nachvollziehen, eingehend sollte nichts verändert werden, nur ausgehende Mails!
Und es funktioniert auch mit IPv6. Hier ein Test mit und ohne Header Replacement.
Deaktiviert:
Received: from [IPv6:xxxx:4dd7:xxxx:0:497d:1e32:xxxx:xxxx] (xxxx-4dd7-6bb4-0-497d-1e32-xxxx-xxxx.ipv6dyn.xxxxx.de [IPv6:xxxx:4dd7:6bb4:0:497d:1e32:xxxx:xxxx])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES128-GCM-SHA256 (128/128 bits))
(Client did not present a certificate)
by mail.xxxx.de (Postfix) with ESMTPSA id 344CE2A107D
for ; Tue, 16 Apr 2019 14:19:17 +0200 (CEST)
Aktiviert:
Received: from 127.0.0.1 (localhost [127.0.0.1])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES128-GCM-SHA256 (128/128 bits))
(Client did not present a certificate)
by mail.xxxx.de (Postfix) with ESMTPSA id DE7891821AE
for ; Tue, 16 Apr 2019 14:20:34 +0200 (CEST)
Gruß,
Dominion
Hey Dominion,
ich habe da jetzt Stunden rumprobiert. Das Ergebnis bleibt leider das Selbe. Wenn die Parameter gesetzt sind, werden bei eingehenden und ausgehenden Mails die Header User-Agent, X-Mailer entfernt und nicht nur bei ausgehenden Mails. Sendest und empfängst du deine Mails über die identische Postfix Instanz?
Mir scheint es so als sei es normal, dass eingehende und ausgehende Mails gleich behandelt werden. Auch brachte die Umstellung zwischen smtp_header_checks zu header_checks und pcre zu regexp nichts. Hat es vielleicht damit etwas zu tun, auf welchen Ports die Mails versendet und empfangen werden?
ist doch klar, dass der header check über main.cf ein und ausgehend behandelt!
ihr müsst es über die main.cf / submission machen, wie hier beschrieben:
https://www.void.gr/kargig/blog/2013/11/24/anonymize-headers-in-postfix/
dannn gehts wie gewünscht.
Nein, das ist schon richtig, dass die Option smtp_header_checks nur beim Versand angewendet wird. Die Option header_checks wird auf ein- und ausgehende Mails angewendet. Im Postfix gibt es den Versandprozess namens smtp und den Empfangsprozess namens smtpd. Wenn eingehende Mails aber z.B. an Amavis per smtp gesendet werden, dann ist klar warum das auch bei den eingehenden Mails angewendet wird.