Exportieren eines Maillisten Archives via Email

Schon mal versucht eine ezmlm-idx Maillist remote zu archivieren?

Ich wirke ja unter anderem im technischen Bereich der Studentenzeitschrift meiner Uni mit. Auf online Ebene sind dort Maillisten der hauptsächliche Kommunikationsweg. Und wie es nun so ist bei Onlinesoftware, finden sich doch immer Gründe die vorhandenen Daten auf ein anderes System zu migrieren.

Bei uns betraf dies die Archive unserer Maillisten.

So eine Mailliste basierend auf ezmlm-idx hat wie ich feststellen musste, kein Webinterface, um sich die Archive von dort ziehen zu können. Stattdessen erfolgt das Abfragen der Archive über spezielle Mailadressen.

Das eigentliche Problem war jedoch, diese Mails auf meine Festplatte zu bekommen und das in einem Format, das es mir erlaubt sie ohne Datenverlust in ein beliebig anderes Format umzuwandeln.

Das abrufen war dabei noch harmlos dank gängiger Frameworks. Schwierig wurde es, weil bis zu 100 Mails im Diggest Format in einer Mail lagen. Und das speichern in einem reparsing erlaubendem Format ist wohl auch kein gängiger Wunsch. Beides konnte ich jedoch dank den Zeta Components und einer internen nicht öffentlich dokumentierten Klasse, welche es erlaubt Dateien zu parsen, die exakt eine Mail beinhalten.

Ich hatte dabei zuerst die erwähnte interne Klasse gefunden, welche es erlaubt eine Mail im RFC822 Format zu parsen, welches das selbe ist in dem sie auch durchs Internet geschickt werden würde. Praktischerweise kann die Mail-Klasse die Mail genau in diesem Format aus dem Objekt generieren.

Den dazu passenden Code habe ich auch bereits, jedoch ist noch viel Handarbeit nötig. Zum Beispiel müssen die Mails mit den Archiven bereits im Postfach liegen. Und auch den Ordner in dem sie gespeichert werden sollen, muss per Hand vorher erstellt werden.

Wen das alles nicht abschreckt, der kann sich das bisschen Code dazu als gist ansehen.