Thunderbird Adressverzeichnis

Nach dem erfolgreichen Transfer einer großen Mailbox von der Uni-Wien zu ClubComputer fehlte ein Adressverzeichnis. Es hat eines gegeben, aber wahrscheinlich war dieses Verzeichnis lokal und ging verloren. Wie kann man nun die Adressen aus den zahlreichen Mails extrahieren?

Wenn Du also auch ein Adressbuch aus dem Mailstore Deiner Thunderbird-Installation erstellen willst, dann ist diese Anleitung genau richtig für Dich. Auch für Outlook-User kann dieser Weg eine Lösung sein. Einfach Thunderbird installieren, das gewünschte Mailbox-Konto anlegen, warten bis die lokalen IMAP-Ordner aufgebaut sind und die extrahieren Adressen in Outlook importieren.

Auslesen der Kontaktadressen

Da die Daten durch den Thunderbird nicht binär, sondern als Klartext abgelegt werden, ist das kein so großes Problem. Der Mailstore ist für jeden Ordner in einer gleichnamigen Datei ohne Erweiterung. In diesen Dateien befinden sich die Mails in chronologischer Reihenfolge, und die E-Mail-Adressen von Sender und Empfänger sind im Klartext zu lesen.

Die empfangenen Mails sind dabei gar nicht so interessant, das kann auch Werbung oder ein Newsletter sein, alles Adressen, an die man nicht schreibt. Interessanter sind jene Adressen, an die man selbst schreibt. Diese findet man in einem Ordner „Sent“. Im vorliegenden Projekt war diese Datei mehr als 8 GB groß.

Egal, welchen Editor ich auch bemüht habe, alle haben versagt, wenn es darum ging, diese Datei zu öffnen. Was kann man also tun, um diese Datei zu bearbeiten?

  • Plan 1: Aufteilung der Datei in Portionen.
  • Plan 2: Ein Editor, der große Dateien verarbeiten kann

Die Aufteilung der großen Datei in Teildateien hätte den Nachteil, dass man alle diese Teildateien getrennt bearbeiten müsste. Meine Wahl fiel daher auf den Editor EmEditor, der zur Bearbeitung sehr großer Textdateien geeignet ist. Der EmEditor bearbeitet die 8 GB große Datei als handle es sich um einen Einkaufszettel.

Für 30 Tage kann der EmEditor kostenlos verwendet werden, danach kostet er im ersten Jahr 40,- und in den Folgejahren 20,- Euro.

Zeilen mit Adressaten filtern

Eine Zeile mit einer Empfängeradresse enthält den Text „To:“. Hier ist ein kurzer Auszug aus diesen Mailstore-Dateien:

...
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8;
format=flowed
Content-Transfer-Encoding: 8bit
Date: Mon, 29 Mar 2021 11:59:54 +0200
From: Tom Test tom.test@univie.ac.at
To: Franz Fiala franz@fiala.cc
...

Wichtig ist nur die Zeile, die mit „To:“ beginnt. Man entfernt daher mit dem EmEditor alle Zeilen, die keine Adressen enthalten sind, also solche, die kein „To:“ enthalten. (Siehe auch Beitrag Zeilen entfernen)

^(?!.*To:.*).+$\
^^

Damit ergibt sich eine Datei mit etwa 16.000 Adressen, doch sehr viele sind mehrfach vorhanden. Man muss natürlich das „To:“ entfernen und verschiedene Adresse händisch nachbearbeiten und einige weitere Texte suchen und ersetzen.

Entfernen doppelter Zeilen

Es gibt ein prächtiges Kommando in PowerShell, das genau das kann: Doppelte Zeilen entfernen.

Get-Content s:\\desktop\\e-adressen.txt | Sort | Get-Unique > s:\\desktop\\e-adressen1.txt

Das ergibt schließlich eine Datei mit ca. 1800 Adressen.

Adresse in CSV-Datei

Die Adressen präsentieren sich nun in folgender Form:

Franz Fiala, franz@fiala.cc
ffiala@clubcomputer.at

Die erste Zeile ist ein Beispiel mit einem vorangestellten Namen, die zweite enthält nur eine Adresse.

Damit Thunderbird die Adressen auch importieren kann, müssen die Adressen in einem definierten Format vorliegen. Um zu sehen, wie Thunderbird einen Kontakt formatiert, gibt man eine beliebige Adresse ein und exportiert danach die Adressen. Hier ist diese CSV-Datei:

Vorname,Nachname,Anzeigename,Spitzname,Primäre E-Mail-Adresse,Sekundäre E-Mail-Adresse,Messenger-Name,Tel. dienstlich,Tel. privat,Fax-Nummer,Pager-Nummer,Mobil-Tel.-Nr.,Privat: Adresse,Privat: Adresse 2,Privat: Ort,Privat: Bundesland,Privat: PLZ,Privat: Land,Dienstlich: Adresse,Dienstlich: Adresse 2,Dienstlich: Ort,Dienstlich: Bundesland,Dienstlich: PLZ,Dienstlich: Land,Arbeitstitel,Abteilung,Organisation,Webseite 1,Webseite 2,Geburtsjahr,Geburtsmonat,Geburtstag,Benutzerdef. 1,Benutzerdef. 2,Benutzerdef. 3,Benutzerdef. 4,Notizen
Franz,Fiala,Franz Fiala,,ffiala@clubcomputer.at,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

Die folgenden regulären Ausdrücke waren bei der Bearbeitung der Adressen nützlich.

Finden einer E-Mail-Adresse

Damit findet man Zeilen, die keine E-Mail-Adressen enthalten.

[a-zA-Z0-9-_\\.\\+]+@[a-zA-Z0-9-_\\.\\+]+\

Finden mehrerer E-Mail-Adressen in einer Zeile

Wenn beim Versand mehrere Adressaten angegeben worden sind, dann stehen auch mehrere E-Mail-Adressen in der „To:“-Zeile. Welche Zeilen das sind, findet man so:

.+?@.+@

Zeilen in Felder umformen

Wenn schließlich alle kleinen Unsauberkeiten beseitigt worden sind, muss man das vom Thunderbird verstandene CSV-Format einstellen, und das geht so:

^(.*) ([a-zA-Z0-9-_\\.\\+]+@[a-zA-Z0-9-_\\.\\+]+)\

,,"$1",,$2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,\

Hat man nur eine E-Mail-Adresse, ist die Schreibweise

,,,,ffiala@clubcomputer.at,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

Wenn neben der E-Mail-Adresse auch ein Name in der To-Zeile angegeben war, steht in der CSV-Datei:

,,Franz Fiala,,ffiala@clubcomputer.at,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Zur Werkzeugleiste springen