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.