Mails aus Eudora exportieren: Unterschied zwischen den Versionen
PoC (Diskussion | Beiträge) K (→Defekte und Reparaturen: Typo) |
(kein Unterschied)
|
Aktuelle Version vom 9. Mai 2012, 17:25 Uhr
Anfang und Mitte der 1990er Jahre war Qualcomm Eudora eines der häufiger benutzten MUAs auf dem Mac. Es war frei verfügbar, hatte einen passablen Funktionsumfang und war sehr angenehm zu bedienen. Qualcomm stellte sogar passende Serverdienste für Unix zu Verfügung (u. A. den qpopper).
Seit Mac OS X stellt Apple ein eigenes MUA im Rahmen des Betriebssystems zu Verfügung. Dies kann auch Eudora-Mailboxen importieren, allerdings sind die Ergebnisse nicht sonderlich hochwertig.
Dieser Artikel soll kurz umreissen, mit welchen Schwierigkeiten zu rechnen ist und wie man ein altes Mailarchiv aus Eudora-Mailboxen in einen IMAP-Spool überführen kann, um die Mails wieder zugänglich zu haben.
Was nicht gut funktioniert und warum
- Importfunktion von Apple Mail
- - Mailstatusflags gehen verloren,
- - Mails aus Outboxen erhalten oft aktuelles Datum
- - Mails aus Outboxen werden immer auf die aktuelle Absenderadresse abgeändert.
- Export der Mails auf IMAP-Server mit Eudora
- - Mails aus Outboxen erhalten oft aktuelles Datum,
- - Mails aus Outboxen werden immer auf die aktuelle Absenderadresse abgeändert.
- Schnell mal eben™ das Archiv der letzten 15 Jahre konvertieren
- Geduld ist angesagt. Als Basis für diesen Artikel dient ein (nach der Deduplizierung) 175 kMails starkes Archiv in knapp 2 GB Volumen. Der Autor hatte einen Zeitaufwand von mehreren dutzend Stunden. Selbst mit Anleitung, klar vorgegebenem Weg sowie modernen und schnellen Rechnern dürfte ein Wochenende dabei draufgehen.
Defekte und Reparaturen
Ggfs. kommt hier noch erschwerend hinzu, dass die Eudora-Archivdateien defekt sein können. Das zeigt sich auf vielerlei Weise:
- Innerhalb Eudora tauchen Mails in der Listenansicht mit wirren Absender- und Empfängeradressen sowie Statusflags auf. Diese Mails weisen erhebliche Größen auf, mehrere Megabytes.
- das Schreiben auf den IMAP-Server mit Eudora wird bei genau diesen Mails plötzlich sehr langsam,
- die Konvertierung mit Eudora Mailbox Cleaner stockt bei diesen Mails.
Ein Neuaufbau des Boxindex hilft nicht oder nur bedingt (Cmd-Klick auf die Statusanzeige in der Listenansicht an den links unten gelegenen Fensterrändern).
Ob solche defekten Mails vorhanden sind, kann mit einem schlichten
fgrep 'From ???@???' mailbox
auf eine bereits konvertierte Mailbox festgestellt werden.
Sollte das der Fall sein, so müssen diese Mails aus der Mbox mit einem Texteditor herausoperiert werden. Meist handelt es sich um Dubletten, die normalerweise nicht mehr importiert werden müssen.
Nach externen (nicht in Apple Mail stattgefundenen) Änderungen in lokalen Mailboxen (nicht IMAP), muss vor jeder Bearbeitung der Mailbox zwingend der Index neu aufgebaut werden. Dazu wird die Mailbox in der linken Leiste ausgewählt und dann im Menü Mailbox der Punkt Wiederherstellen aufgerufen.
Reparatur von defekten Blöcken
Aus Eudora nach der oben beschriebenen Methode herausoperierte Blöcke können relativ einfach nachbehandelt werden, damit Eudora diese wieder als normale Mailbox einliest und indiziert. Mit dieser Basis kann die restaurierte Eudora-Box wiederum über den Eudora Mailbox Cleaner in Apple Mail importiert werden.
Eudora speichert Mails in einem modifizierten Mbox-Format. Jede Mail innerhalb dieser Textdatei beginnt mit
From ???@??? Datum
In den defekten Mailboxen ist vor dieser Zeile entweder eine Leerstelle oder ein Grösser-Zeichen zu finden.
Eudora 4.3 Mac akzeptiert diese Textdatei als Mailbox, sobald die erste Mail direkt mit From ???@???
beginnt, ohne Leerstelle oder sonstige Zeichen. Weitere Mails dürfen mit einer Leerstelle beginnen, aber nicht mit Grösserzeichen. Das ist mit einem passenden Texteditor herauszulöschen.
Zeilenenden
Wenn Unix-Tools wie sed, grep oder vi sinnvoll mit den Eudora-Boxen benutzt werden sollen, müssen die Zeilenenden vorher gewandelt werden:
- Mac → UNIX:
tr '\r' '\n' < Mac-Datei > UNIX-Datei
- UNIX → Mac:
tr '\n' '\r' < UNIX-Datei > Mac-Datei
Importvoraussetzungen
- Alte Sicherungen des Eudora-Ordners,
- Eudora Version 4.3 oder höher, ggfs. auf separatem (altem) Mac OS-Rechner,
- Eudora Mailbox Cleaner,
- Linux- oder anderer Rechner mit Mbox-basiertem Mailsystem und IMAP-Server,
- Rechner mit konfiguriertem Mac OS X und Apple Mail,
- Geduld.
Falls Eudora noch nicht installiert ist, muss dies als erstes erledigt werden. Hier wurde Version 4.3.3 auf einem Mac OS 7.6.1 installiert. Die grundlegende Konfiguration ist unerheblich, es ist aber sinnvoll, seine eigene Mailadresse zu konfigurieren.
Eudora legt seine Daten im Eudora Folder im Systemordner ab. Darin befindet sich ein Ordner Mail Folder. Innerhalb dieses Ordners liegen die Mailboxen. Diese können dort einfach hineinkopiert werden. Nach einem Start von Eudora und Aufrufen von Windows → Mailboxes können durch Doppelklick die einzelnen Boxen in der Listenansicht geöffnet werden.
In den nun geöffneten Fenstern sollte zur Sicherheit der Index neu aufgebaut werden. Das geht durch Cmd-Klick auf die Statusanzeige in der Listenansicht an den links unten gelegenen Fensterrändern.
Import
Die so vorbehandelten Mailboxen können nun mittels Eudora Mailbox Cleaner in das (zu diesem Zeitpunkt nicht gestartete) Apple Mail importiert werden: Durch Drag-'n-Drop auf das Programmsymbol wird der Import gestartet. Es können einzelne Mailboxen oder ganze Unterordnerstrukturen auf diese Weise importiert werden. Nicknames und Filter sind hier nicht von Belang und werden im Rahmen der Auswahl der zu importierenden Daten ausgeschaltet.
Nach dem Import empfiehlt sich ein fgrep 'From ???@???' mailbox auf die importierten Mailboxen, um defekte Blöcke innerhalb der Boxen zu finden, siehe oben. Apple Mail legt diese in ~/Library/Mail/Mailboxes/ ab
Sind die importierten Mailboxen soweit vorbereitet, muss der Index von Apple Mail aufgebaut werden: Die Mailboxen wurden ja ausserhalb Apple Mail erzeugt, daher zeigt Mail diese erstmal als leer an. Dazu wird Mailbox für Mailbox in der linken Leiste ausgewählt und dann im Menü Mailbox der Punkt Wiederherstellen aufgerufen. Eine Mehrfachauswahl wird von diesem Befehl nicht akzeptiert.
Beim Umgang mit Mailarchiven kommen meist doch erhebliche Mengen an Mails zusammen. Auch wenn Apple Mail mehrere Vorgänge parallel durchführen kann, so wirken einige Funktionen doch blockierend. Beim Umgang von Markierungen mit mehreren tausend Mails ist Geduld angebracht. Es wird empfohlen, das Aktivitätsfenster einzublenden, damit man sieht, was Mail gerade tut. Ein spinning ball ist erstmal kein Anlass zur Beunruhigung, selbst wenn dieser über mehrere dutzend Minuten erscheint. Solange die in der OS X-Aktivitätsanzeige sichtbare CPU-Auslastung schwankt, ist Mail schlicht beschäftigt. Erst wenn über einen längeren Zeitraum (10-15 Minuten) die Last auf allen verfügbaren CPUs 100 % beträgt, ist die Wahrscheinlichkeit eines Programmfehlers/Endlosschleife hoch und ein forciertes Beenden von Mail unumgänglich.
Nacharbeiten
Mögliche Nacharbeiten wären:
- Split des Archives in kleinere Einheiten,
- Auslagern auf einen IMAP-Server,
- Bereinigung von Dubletten.
Das Splitten in Jahres- oder Monatsarchive hat den großen Vorteil, dass die Mailanzahl pro Mailbox geringer wird und der Umgang mit diesen Boxen dadurch flüssiger von Apple Mail erledigt wird.
Das Auslagern auf einen IMAP-Server hat den Vorteil, dass ein Zugriff mit anderen Mailprogrammen möglich ist und das u. U. mühsame Migrieren der Mailboxen aus Apple Mail in ein anderes, zukünftiges, tolleres Programm damit entfallen kann. Je nach Einstellung von Apple Mail[1] verdoppelt das aber die Datenmenge, da die Suche nach Mailinhalten nur bei vollständiger Synchronisation der Mailinhalte auf die lokale Platte möglich ist.
Die Bereinigung von Dubletten ist, je nach Güte der Bereinigung, sehr aufwendig, spart aber prozentual signifikant Plattenplatz und hält die Mailanzahl gering und damit eine flüssigere Bedienbarkeit von Mail gegeben.
Deduping
Das Deduplizieren der Mailboxen ist recht aufwendig. Als Voraussetzung ist hier das Speichern der Mails auf einem Debian-Linux-Server in Mbox-Dateien gegeben. Die Pakete fdupes, mb2md und procmail müssen installiert sein. Das Speichern in Maildir-Strukturen vereinfacht das Deduping ein wenig. Der Vorgang ist Mbox für Mbox zu wiederholen.
/tmp ist hier ein Mountpoint für eine RAM-Disk, was diverse Vorgänge erheblich beschleunigt!
Zuerst wird die Mbox in eine Maildir-Struktur überführt. Damit wird pro Mail eine Datei erzeugt. Die Angabe eines absoluten Pfades wird von mb2md vorausgesetzt, siehe Manpage.
mkdir /tmp/Maildir mb2md -s /home/mailarch/mail/In-Archiv -d /tmp/Maildir
Vorzugsweise bei Outboxen gibt mb2md immer mal wieder Fehlermeldungen wie
Use of uninitialized value $t in utime at /usr/bin/mb2md line 1039, <MBOX> line 270091.
aus. Die Ursache ist noch offen, welche Implikationen diese Meldung hat, noch ungeklärt.
Als Vorbereitung für das Deduping müssen verschiedene Angleichungen vorgenommen werden. Der erste Aufruf von sed löscht Leerzeilen am Ende der Dateien, der zweite verwirft Eudora-spezifische als auch unnötige Headerzeilen.
sed -i -e :a -e '/^\n*$/{$d;N;ba' -e '}' /tmp/Maildir/*/* sed -i -e '/^X-UID:/d' -e '/^X-Keywords:/d' -e '/^Content-Length:/d' /tmp/Maildir/*/*
Nun können anhand ihrer Prüfsumme (md5) gleiche Dateien ohne Rückfrage gelöscht werden.
fdupes -rdNq /tmp/Maildir
Weiche Unterschiede können mit dieser Methode allerdings nicht gefunden werden. Das sind, wie in der Praxis festgestellt:
- Unterschiedliche Kennzeichnung von vormaligen Dateianhängen der Mails (Eudora-Style vs. Mailbox-Cleaner-Style),
- unterschiedliche Anzahl von Leerzeilen als Trenner zwischen Header und Body,
- unterschiedliche Anzahl von Punkten an Zeilenanfängen des Mailbody.
Die bereinigte Maildir-Struktur kann nun wieder in eine Mbox zusammengeführt werden. Achtung, spätestens hier gehen durch die Neugenerierung der bei Mbox benutzten From-Zeilen die Datumsinformationen verloren. Ggfs. empfiehlt sich hier ein Zwischenschritt, der aus der Maildir-Struktur ordnungsgemäß eine Mbox macht (spezielles Konverterscript), um dann in einem zweiten Schritt ein weiteres Deduping anhand der Message-ID durchzuführen.
find /tmp/Maildir -type f -print |while read FILE; do cat ${FILE} |formail -D 10000000 /tmp/idcache -Yz -s done > /home/mailarch/mail/In-Archiv.new
Sieht das auf den ersten Blick in Ordnung aus, kann die Box umbenannt werden und die vorige ersetzen.
mv /home/mailarch/mail/In-Archiv.new /home/mailarch/mail/In-Archiv
Nach einer manuellen Kontrolle der bereinigten Archivbox muss vor der nächsten Box aufgeräumt werden:
rm -rf /tmp/Maildir/* /tmp/idcache
Das Ergebnis ist gut, aber nicht perfekt und besitzt bis auf die bisher nicht gelöste Dupeproblemaik noch den Nachteil, dass durch die neu erzeugten From-Header nun das Empfangen-Datum nicht mehr mit dem ursprünglichen Empfangsdatum übereinstimmt. Um dieses Problem zu beheben, wurde
- das Archiv mit md2md in eine richtige Maildir-Struktur auf einem separaten Server überführt,
- Dovecot auf diesem separaten Server installiert und für Maildir-Zugriffe konfiguriert,
- der Zeitstempel der einzelnen Mailboxdateien auf das im Date-Header zu findende Datum gesetzt:
find .199?.* .20??.* -type f -a -name "*.mbox:*" -print |while read FILE; do FILEDATE="`grep --binary-files=text '^Date:' ${FILE} |sed 's/^Date:[[:space:]]\+\(.*\)$/\1/'`" touch -d "${FILEDATE}" "${FILE}" || echo ${FILE} done
- Fehlerhafte Zeitstempelvarianten werden mit Dateinamen ausgegeben und können damit manuell korrigiert und gesetzt werden. Das war bei ca 0,8 % der Mails der Fall.
- Mittels Apple Mail via IMAP-Zugriff auf den Maildir-Server werden die Mails aus der Maildir-Struktur in lokale Inboxen (oder auf den regulären IMAP-Server) kopiert. Diese Variante erhält die Zeitstempel und damit das richtige Datum. Ggfs. ist das auch mit entsprechenden, bereits existierenden Scripten machbar.
Fußnoten
- ↑ Accounteinstellungen, unter Erweitert: Kopien der E-Mails behalten, um sie ohne Internetverbindung öffnen zu können.
Weblinks
- Eudora Mailbox Cleaner, Importer von Eudora nach Apple Mail.
- RFC 4155, Beschreibung des Mbox-Formats.