Flag Mails received with TLS or IPv6

Flags in Thunderbird

Flags in Thunderbird

I just wondered how wide spread IPv6 and TLS are when receiving e-mails, so I wanted to quickly see which kind of transport an incoming mail used. I wanted to see it directly when it hits my inbox, so I adding a tag to the mail would be a sensible approach.

Since I’m running a quite common setup with Postfix, Dovecot and the usual stuff connecting into those two daemons, it wasn’t much work to do it.

Dovecot has the ability to filter and sort mails directly on the server using sieve. I have sieve up and running to sort mails from mailinglists into their corresponding folders and do stuff like that.

The best way to find out how an e-mail was received is to look at the „Received“ header:

Received: from sender.domain.invalid (sender.domain.invalid [IPv6:2001:db8:cofe::1])
 (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by receiver.otherdomain.invalid (Postfix) with ESMTPS id 01D2C3E4A02
 for <nico@otherdomain.invalid>; Sun, 11 Jan 2015 17:24:17 +0100 (CET)

The header spreads across multiple lines and with (usually) tabs infront of the new ones. It tells us that the sending Mailserver was using IPv6 and TLS. Of course, sender.domain.invalid and receiver.otherdomain.invalid are only to demonstrate it. In reality, there should be your domain and the sender’s one.

Automatically detecting IPv6 is not so simple as one might think, the „Received“ line must include „IPV6:“ in it. But also, you want to make sure that it is only a hit, when the message was received by you via IPv6, not by one of the mailservers it might have passed earlier on its way through the internet.

There is a handy tool called regexr.com, where you can built and test regular expressions. It took me some minutes to make it work, without having long expression The IPv6 one can be seen here. You need to paste the received header from above, to see it work.

(from).+\[IPv6:.*(\s.*)*(by receiver\.otherdomain\.invalid)

First, we filter for „from“ and „IPv6:“ (the colon just to make sure that we don’t hit in a possibly wrong hostname) in one line, then after some more lines we filter on the receiving mailserver.

Of course, the sieve regex implementation has its own flavour of regular expressions, explained here, so I had to do some modifications to use them with sieve.

The TLS regex was on the same level of complexity. It’s that piece of regex.

(from).+\s+\(using TLS.*(\s.*)*(by receiver\.otherdomain\.invalid)

It also hits on „from“ but then searched fot the TLS header. Again, it also matches the receiving servers hostname. Sinve SSLv3 is broken and should not be used, I to only match TLS.

As linked earlier, the sieve regex has some own ways to find whitespaces or newlines, so have a look at the linked document, if you want to build your own expressions.

I did not want to modify the message but wanted to see the flags on a first glance, I did not want to add a pre- of suffix to the subject. I instead decided to use the colour flags Thunderbird can display. I do not use them normally so they are a good fit for that task. They can easily be removed afterwards, when stuff gets boring and everyone uses IPv6 and TLS 😉

The dovecot wiki lists the lables and the corresponding colours. I chose green for TLS and blue for IPv6. Usually they are used for „Personal“ and „ToDo“

To do the filtering, your sieve instructions file must require the modules „imap4flags“ and „regex“, otherwise it won’t work. My sieve config is like the following (but much longer with a lot more rules):

require ["imap4flags","regex"];
 # rule:[TLSTest]
 if header :regex "received" "(from).+[[:space:]]+\\(using TLS.+([[:space:]]*.*)*(by receiver\\.otherdomain\\.invalid)"
 {
 addflag ["$label3"];
 }
 # rule:[IPv6Test]
 if header :regex "received" "(from).+\\[IPv6:.*([[:space:]]*.*)*(by receiver\\.otherdomain\\.invalid)"
 {
 addflag ["$label4"];
 }

These regexes work quite well for me. You need to replace the domain „receiver.otherdomain.invalid“ with the one your mailserver uses. Until now, I had no false-negatives or false-positives. I’m not sure what happens when TLS is in one Received header, and my hostname in another. I think that sieve checks them one by one but did not challenge that. The one by one checking would make sense because the regex itself is only executed for „received“ headers, as you can see in the sieve rules.

Of course, other sieve plugings like fileinto“ can move mails to differend locations but I just wanted to observe the Mails coming into my inbox, with the new flag.

Mail with Flags

Mail with Flags

I renamed the two flags (or tags, as they are called in Thunderbird), just to have it a bit less tidy in my inbox.

How far TLS and IPv6 are spread. Right now I see a lot of TLS but nealy no IPv6, only from RaumZeitLabor and folks sorrounding it.

 

Nico

Teilausfall Kabeldeutschland Kabelinternet (IPv4 <-> IPv6) (behoben)

Eben (gegen 12:30 Uhr) ist bei Kabeldeutschland etwas abgestürzt und seitdem das Internet gestört. Dieser Beitrag wird aktualisiert, sobald neue Informationen vorliegen.

Aktuell sind ihre IPv4 Nameserver sowie das DS-Lite Gateway nicht erreichbar bzw funktionieren nicht richtig (lassen sich pingen, mehr aber auch nicht). Da ich nur einen IPv4 Anschluss ohne IPv6 von Kabeldeutschland habe (IPv6 wird bei mir über http://tunnelbroker.net getunnelt) reicht es die Nameserver zu ändern. Meistens ist dies auf dem Router möglich, falls das nicht möglich ist muss man sie auf den Endgeräten (z.B. dem PC) manuell eintragen. Alternative Nameserver sind z.B. von Google 8.8.8.8 und 8.8.4.4, 85.214.20.141 vom FoeBud/digitalcourage oder 213.73.91.35 vom ccc Berlin.

Bei IPv6 Anschlüssel von Kabeldeutschland sieht es aufgrund des eingesetzten DS-Lite Protokolls schlechter aus. In diesem Fall bekommen die Router nur IPv6 Adressen zugewiesen und erreichen IPv4 Adressen über ein vom Netzbetreiber bereitgestelltes Gateway, welches die Anfragen umwandelt. Da dieses aktuell aber auch nicht erreichbar ist, ist es somit nicht direkt möglich IPv4 Adressen aufzurufen. IPv6 funktioniert dagegen problemlos:

[tweet_embed id=367964279221547009]

Hier hilft es, wenn man einen VPN Server hat, welcher über IPv6 erreichbar ist (was selbst in Nerd-Kreisen noch nicht unbedingt die Regel ist) oder aber die Nutzung eines öffentlichen IPv6 zu IPv4 Gateway. Ein mögliches wird von http://sixxs.net betrieben. Die Funktionsweise ist unter http://www.sixxs.net/tools/gateway/ erklärt. Der Zugriff funktioniert durch das Verlängern der URL um „sixxs.org“. Aus http://www.kabeldeutschland.de wird dadurch http://www.kabeldeutschland.de.sixxs.org. Damit ist es auch möglich Webseiten aufzurufen, die normalerweise ausschließlich per IPv4 erreichbar sind. Beachtet aber bitte, dass hier nicht der beste Datenschutz gewährleistet ist, da die Daten über mindestens einen weiteren Server geroutet wird, der von SixXS 😉

Die Kabeldeutschland Hotline ist aktuell überlastet, es betrifft also wohl nicht nur einzelne Anschlüsse sondern eine größere Region. Laut KDGforum betrifft die Störung mindestens weite Teile vom Saarland und Rheinland-Pfalz. Auf allestörungen.de ist die Anzahl der heutigen Störungsmeldungen stark angestiegen, hier ist auch der Schwerpunkt in Rheinland-Pfalz und dem Saarland.

UPDATE: Seit etwa 14:20 Uhr sind die Dienste wieder hergestellt. Sowohl bei mir als auch bei Nutzern des KDGforums ist der Netzzugriff wieder möglich. Die Störung ist wohl behoben. Das Ganze zeigt aber auch, dass DS-Lite wohl noch nicht ganz so fehlerresistent wie das bisherige IPv4 Routing ist.

Stand: 14:30

IPv6 Zertifizierung und die glue Records

Hurricane Electric, ein ISP aus den USA, bietet als (im Moment) einer der größten IPv6 Backbone Provider einerseits kostenlose IPv6 Tunnel (http://tunnelbroker.net, benutze ich selbst u.a. auch), aber auch eine IPv6 Zertifizierung an.

Die Zertifizierung ist kostenlos und besteht aus theoretischen und praktischen Aufgaben. Im Praktischen Teil muss man einen Server in mehreren Schritten komplett IPv6 fähig machen, der letzte Schritt ist die Eintragung von IPv6 glue Records bei der Domain Registrierunsstelle.

Ein glue Record enthält die IP Adresse zu dem Nameserver, der für eine Domain zuständig ist. Der Eintrag ist notwendig , wenn der Nameserver unter der gleichen Domain läuft als die Domain, die man auflösen möchte.

Für mich und meinen Server heißt das:

Meine „Haupt“ Domain, unter der ich die meisten Services laufen lasse ist 4nx.de.

Mein primärer Nameserver „hört“ auf den Namen ns1.4nx.de und gehört damit dieser selbst an. Dadurch muss bei der Denic direkt hinterlegt sein, unter welcher IP-Adresse dieser Nameserver erreichbar ist. Diesen Eintrag nennt man dann glue Record.

Um bei der IPv6 Zertifizierung den höchsten Grad zu erreichen, muss man seine Domain mit diesen Einträgen ausstatten. Alle vorherigen Schritte habe ich schon letztes Jahr gemacht. Diesen letzten erst gestern, aus einem einfachen Grund: Weiterlesen

Mittwoch ist IPv6 Tag

Ja, am Mittwoch ist es so weit.

Geplant ist, dass Google, Facebook, Akamai und viele andere Betreiber von Diensten im Internet ihre Dienste auch regulär per IPv6 zur Verfügung stellen.

Google macht das bisher unter http://ipv6.google.com und für User bestimmter Netzwerke/DNS Server auch auf http://google.com

„Normale“ Internetnutzer bekommen dagegen keine IPv6 Adressen für Webseiten zurückgeliefert von Googles Nameserver. Damit wollen sie Problemen aus dem Weg gehen, die einige ältere Betriebssysteme (und manche Router) haben beziehungsweise haben könnten.

Facebook und co handeln ähnlich.

Anders wird es diesen Mittwoch sein. Am Mittwoch werden die Fragen nach IPv6 Adressen für Google, Facebook etc beantwortet und der Computer könnte die Webseite per IPv6 erreichen, sofern er per IPv6 angebunden ist, man kann auch Parallel IPv4 und IPv6 benutzen, meistens wird IPv6 bevorzugt wenn eine Webseite beides unterstützt. Wenn nicht sind alle aktuellen Betriebssysteme so clever es auch nicht zu versuchen sondern benutzen direkt IPv4.

Ich für meinen Teil setze IPv6 (zuhause zwar mit Tunnel) seit über einem Jahr ein und hatte bisher keine Probleme damit. Alle meine Server sind (mittlerweile nativ) IPv6 fähig und auch auf dieser Webseite ist es aktiviert. Rechts in der Spalte hab ich eine kleine Box eingebaut, die anzeigt ob man per IPv4 oder IPv6 hier ist.

Von Daher: Wenn du diese Webseite lesen kannst und bei dir keine Fehler auftreten dann wirst du wahrscheinlich auch keine Probleme am IPv6 Tag am Mittwoch haben. Wenn du diese Webseite nicht lesen kannst… Wenn bei dir Probleme mein Laden aufgetreten sind, dann lass es mich wissen 😉

Manche sehen im IPv6 Day zwar nur eine Alibiaktion, ich habe aber die Hoffnung, dass ein positiver Ausgang die Einführung von IPv6 beschleunigt.

Viele Firmen haben noch Hemmungen vor IPv6 bzw sehen keinen Nutzen darin (ok, darüber kann man sich streiten wenn man will). Von daher bin ich gespannt was am Mittwoch herauskommt, vielleicht ist IPv6 ja gar nicht so „schlimm“ wie bisher befürchtet 😉

 

Nachtrag: Christoph hat auch noch ein paar Worte dazu geschrieben