Postfix: IP-Stripping im Detail

Zum Beitrag »E-Mail Anbieter: IP-Stripping aus Datenschutzgründen« erhielt ich einige Fragen. Daher hier nochmal zur Verdeutlichung, was die Postfix-Änderungen bewirken.

Beginnen wir mit der Postfix-Default Einstellung, wenn wir eine E-Mail über unseren Server versenden. Der Header sieht folgendermaßen beim Empfänger aus:

Received: from localhost ([192.168.1.163])
by w1.tutanota.de
with SMTP (SubEthaSMTP 3.1.7) id JFF985N8
for test@tutanota.de;
Sat, 31 Mar 2018 12:49:18 +0200 (CEST)
Received: from w2.tutanota.de ([127.0.0.1])
by localhost (w2.tutanota.de [127.0.0.1]) (amavisd-new, port 10024)
with ESMTP id AwpdbniKz2ch for <test@tutanota.de>;
Sat, 31 Mar 2018 12:49:14 +0200 (CEST)
Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=94.16.123.112; helo=mail.kuketz.de; envelope-from=mike@kuketz.de; receiver=
Authentication-Results: w2.tutanota.de; dmarc=pass (p=reject dis=none) header.from=kuketz.de
Authentication-Results: w2.tutanota.de;
dkim=pass (2048-bit key; secure) header.d=kuketz.de header.i=@kuketz.de header.b="azvthA6n";
dkim-atps=neutral
Received: from mail.kuketz.de (mail.kuketz.de [94.16.123.112])
by w2.tutanota.de (Postfix) with ESMTPS id 8B8AAC6037B
for <test@tutanota.de>; Sat, 31 Mar 2018 10:49:14 +0000 (UTC)
Received: from 127.0.0.1 (HSI-KBW-091-089-194-096.hsi2.kabel-badenwuerttemberg.de [91.89.194.96])
by mail.kuketz.de (Postfix) with ESMTPSA id 795A4611A8
for <test@tutanota.de>; Sat, 31 Mar 2018 12:49:13 +0200 (CEST)
To: test@tutanota.de
From: Mike Kuketz <mike@kuketz.de>
Subject: test

Das fett markierte ist der erste Received-Header, den Postfix hinzufügt, wenn ein authentifizierter Client eine E-Mail versendet. Wie im Beispiel dargestellt, »verrät« Postfix hierbei unsere öffentliche IP-Adresse 91.89.194.96 inklusive DNS-Namen HSI-KBW-091-089-194-096.hsi2.kabel-badenwuerttemberg.de.

Diese Infos möchten wir aus Datenschutzgründen allerdings weder dem Empfänger noch dem E-Mail-Anbieter des Empfängers verraten. Daher betreiben wir IP-Stripping:

/^\s*(Received: from)[^\n]*(.*)/ REPLACE $1 127.0.0.1 (localhost [127.0.0.1])$2

Danach sieht der Header wie folgt aus:

Received: from localhost ([192.168.1.162])
by w1.tutanota.de
with SMTP (SubEthaSMTP 3.1.7) id JFF96FJM
for test@tutanota.de;
Sat, 31 Mar 2018 12:47:59 +0200 (CEST)
Received: from w1.tutanota.de ([127.0.0.1])
by localhost (w1.tutanota.de [127.0.0.1]) (amavisd-new, port 10024)
with ESMTP id cNS0IbyzissY for <test@tutanota.de>;
Sat, 31 Mar 2018 12:47:55 +0200 (CEST)
Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=94.16.123.112; helo=mail.kuketz.de; envelope-from=mike@kuketz.de; receiver=
Authentication-Results: w1.tutanota.de; dmarc=pass (p=reject dis=none) header.from=kuketz.de
Authentication-Results: w1.tutanota.de;
dkim=pass (2048-bit key; secure) header.d=kuketz.de header.i=@kuketz.de header.b="MFXg7Jb9";
dkim-atps=neutral
Received: from mail.kuketz.de (mail.kuketz.de [94.16.123.112])
by w1.tutanota.de (Postfix) with ESMTPS id 77301FB7B1A
for <test@tutanota.de>; Sat, 31 Mar 2018 10:47:54 +0000 (UTC)
Received: from 127.0.0.1 (localhost [127.0.0.1])
by mail.kuketz.de (Postfix) with ESMTPSA id 6DBDD611A8
for <test@tutanota.de>; Sat, 31 Mar 2018 12:47:54 +0200 (CEST)
To: test@tutanota.de
From: Mike Kuketz <mike@kuketz.de>
Subject: test

Die öffentliche IP-Adresse und auch der DNS-Name wird folglich durch 127.0.0.1 bzw. localhost ersetzt. Weder der Empfänger, noch der E-Mail-Anbieter des Empfängers kennt damit die öffentliche IP-Adresse unseres Clients.

Wir können den ersten Received-Header allerdings auch vollständig beim Versand von ausgehenden E-Mails entfernen, wenn es sich um authentifizierte (Mail-)Clients (ESMTPSA = Kombination aus STARTTLS und SMTP AUTH) handelt:

/^\s*Received:.*with ESMTPSA/ IGNORE

Anschließend sieht der E-Mail-Header folgendermaßen aus:

Received: from localhost ([192.168.1.163])
by w1.tutanota.de
with SMTP (SubEthaSMTP 3.1.7) id JFF8ZXDA
for test@tutanota.de;
Sat, 31 Mar 2018 12:42:38 +0200 (CEST)
Received: from w2.tutanota.de ([127.0.0.1])
by localhost (w2.tutanota.de [127.0.0.1]) (amavisd-new, port 10024)
with ESMTP id kcr8N1gJV7kh for <test@tutanota.de>;
Sat, 31 Mar 2018 12:42:35 +0200 (CEST)
Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=94.16.123.112; helo=mail.kuketz.de; envelope-from=mike@kuketz.de; receiver=
Authentication-Results: w2.tutanota.de; dmarc=pass (p=reject dis=none) header.from=kuketz.de
Authentication-Results: w2.tutanota.de;
dkim=pass (2048-bit key; secure) header.d=kuketz.de header.i=@kuketz.de header.b="oGWNrdj3";
dkim-atps=neutral
Received: from mail.kuketz.de (mail.kuketz.de [94.16.123.112])
by w2.tutanota.de (Postfix) with ESMTPS id CBC39C6045F
for <test@tutanota.de>; Sat, 31 Mar 2018 10:42:34 +0000 (UTC)
[Erster Received-Header fehlt]
To: test@tutanota.de
From: Mike Kuketz <mike@kuketz.de>
Subject: test

Der erste Received-Header wird also vollständig entfernt und nur noch der Received-Header vom E-Mail-Server bzw. MX (mail.kuketz.de) wird übermittelt.

Wie machen es die E-Mail Provider? Nun, das ist ganz unterschiedlich. In diesem Beitrag habe ich euch gezeigt, wie ihr es selbst prüfen könnt. Anbei noch ein paar Informationen:

  • mailbox.org: Der erste Received-Header wird vollständig entfernt.
  • Posteo: Der erste Received-Header wird folgendermaßen angepasst:
Received: from customer (localhost [127.0.0.1])
by submission (posteo.de) with ESMTPSA id 408vF21FJnz9rxR

Beide Varianten sind in Ordnung. Viele Anbieter entfernen den ersten Received-Header allerdings nicht bzw. betreiben kein IP-Stripping. Aus Datenschutzsicht ist dies natürlich bedenklich.

Du kannst den Blog aktiv unterstützen! Mitmachen ➡