Aaron Fischer Ingenieur, Vater, Heimwerker, Problemlöser

29 Januar, 2016

Clojure Cup 2015 (Mailhead)

TL;DR:

Der Clojure Cup findet seit drei Jahren im Dezember statt. Die Aufgabe ist, in Clojure eine Webanwendung zu entwickeln. Ein Thema gibt es nicht. Die Zeitvorgabe sind 48 Stunden. Es wird eine VM bereitgestellt, auf der die Webanwendung deployed werden muss. Auch dieses Jahr habe ich wieder mitgemacht und ein Tool zur Analyse von E-Mail Headern entwickelt. Ich habe dabei den Platz 10 belegt.

Das Tool hilft bei der Analyse von E-Mail Headern. Es zeigt auf, welchen Weg die E-Mail vom Sender zum Empfänger geht und wo die Engpässe sind. Zudem werden interessante Informationen wie verwendete Software oder wie lange die E-Mail insgesamt unterwegs war dargestellt. Der Benutzer kopiert den E-Mail Header in die Textbox und klickt auf analysieren.

Mailhead

Das Ergebnis der Analyse ist ein Graph, der den Verlauf der E-Mail aufzeigt. Darunter sind die nützlichen Informationen zusammengefasst.

Mailhead

Durch die Visualisierung werden interne Strukturen, Probleme und unnötige Wege sichtbar, die man so aus dem Header nicht direkt herauslesen konnte.

Mailhead

Der E-Mail Header ist im RFC822 definiert, leider hält sich daran so gut wie kein MUA bzw. MTA. Speziell die Formatierung des Zeitstempels variiert extrem stark. Leider gibt es bis heute keinen E-Mail Header Parser, der zuverlässig funktioniert. Für dieses Projekt habe ich die bekannteste Bibliothek verwendet und diese etwas robuster gemacht. Leider funktionieren immer noch viele Header nicht korrekt.

Ich hatte natürlich noch viele weitere Ideen, dafür war aber keine Zeit mehr:

Der Contest-Server wurde schon abgeschaltet, deshalb gibt es keine Live-Demo. Der Code ist aber auf Github zu finden und kann mit lein run ausgeführt werden.