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.

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.

Dazu wird das Paket postfix-pcre benötigt.

Punkt 2: Header anonymisieren

Nun sagen wir Postfix er möge diese Zeilen im Header der ausgehende Mails ignorieren.

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.

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).

Der Header wird mit diesen 3 Zeilen gesäubert.

Nach einem Neustart von Postfix sieht die erste gesäuberte Received-Zeile in etwa so aus.

 

2

dominion

Linux Systemadministrator

Das könnte dich auch interessieren …

11 Antworten

  1. Finn sagt:

    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.

  2. Firlus sagt:

    Hi, danke für deinen Beitrag. Leider setzt postfix nun die config auch für eingehende Mails um. Was kann man da machen?

    • Dominion sagt:

      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
      for ; Sat, 13 Apr 2019 00:31:42 -0700 (PDT)

      Gruß,
      Dominion

  3. Firlus sagt:

    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.

  4. Firlus sagt:

    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.

    • Dominion sagt:

      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

  5. Firlus sagt:

    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?

  6. mailer sagt:

    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.

  7. chronic sagt:

    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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert