Beide Formate legen alle Mails in getrennten Dateien ab. Die Nachrichten lassen sich also mit dem oben beschriebenen Verfahren einfach in die Inbox von Benno kopieren. Listing 3 zeigt ein kleines Skript, das die Aufgabe rekursiv erledigt. Sie übergeben ihm ein Wurzelverzeichnis, es sucht alle relevanten Dateien (find-Kommando in Zeile 20 – Dateien, die nicht mit einem Punkt anfangen) und ruft für jede davon die drei oben beschriebenen Befehle cp, ln und rm auf.
Listing 3
#!/bin/bash
TARGET_DIR="/srv/benno/inbox"
root_src_dir="$1"
if [ -z "$root_src_dir" ]; then
echo "usage: $0 dir"
exit 3
fi
import_mail() {
local name=$(uuid)
cp "$1" "$TARGET_DIR/$name.tmp"
chown benno:benno "$TARGET_DIR/$name.tmp"
ln "$TARGET_DIR/$name.tmp" "$TARGET_DIR/$name.eml"
rm "$TARGET_DIR/$name.tmp"
}
while read line; do
import_mail "$line"
done < <( find "$root_src_dir" -type f -name "[^.]*" )
Thunderbird (oder Icedove, wie der Mailclient unter Debian heißt) verwendet hingegen das antiquierte Mbox-Format. Es verwaltet alle Mails eines Ordners in einer Datei. Vor dem Kopieren müssen Sie die einzelnen Nachrichten mittels eines geeigneten Programms daraus extrahieren. Das erledigen Sie beispielsweise mit der Thunderbird-Erweiterung ImportExportTools [3] direkt aus dem Mailclient heraus (Abbildung 3). Das Addon klinkt sich in das Kontextmenü der Ordner ein und erlaubt damit einen bequemen Export. Eine mögliche Alternative, das eigenständige Programm Mbox2eml [4], müssten Sie selbst kompilieren. Wie der nächste Abschnitt zeigt, lässt sich diese Aufgabe aber auch eleganter lösen.

Abbildung 3: Das Thunderbird-Addon ImportExportTools klinkt sich in das Kontextmenü des Mailclients ein und erlaubt daraus den problemlosen Export von Mails.
Alltägliches Archivieren
Im Alltag will man selten einen Ordner komplett archivieren. Thunderbird unterstützt die Archivierung über eigene Archivordner (Abbildung 4). Einmal angelegt, verschiebt der Klick auf den Archivieren-Button die aktuelle Nachricht dorthin. Bei Bedarf wandert der Ordner dann wie oben beschrieben komplett ins Archiv.

Abbildung 4: Den Archivordner legen Sie in den Einstellungen des Mailaccounts unter »Kopien&Ordner« fest.
Die Nachteile dieses Ansatzes liegen auf der Hand: Zum einen funktioniert das nur für Thunderbird, zum anderen müssen Sie es manuell ausführen und entsprechend daran denken. Einfacher erledigt diesen Job ein Automatismus, der alte E-Mails selbstständig ins Archiv schiebt oder exportiert.
Auch dafür gibt es ein Thunderbird-Addon, aber einfacher funktioniert es mit dem Archivmail-Skript. Das Python-Skript [5], ein Fork des Archivmail-Projekts [6], arbeitet im Grunde recht simpel: Per Kommandozeile gesteuert kopiert oder verschiebt es Nachrichten, die älter als x Tage oder älter als Datum y sind, in eine Archivdatei. Das Original erzeugt dabei komprimierte Mbox-Files, der Fork exportiert die E-Mails gleich im EML-Format als Einzeldateien (Listing 4).
Listing 4
$ archivemail -d 60 -e /tmp/mail2benno mail/* $ scp -r /tmp/mail2benno [email protected]:/tmp $ ssh [email protected] $ sudo import-mails /tmp/mail2benno
Das erste Kommando verschiebt alle Nachrichten, die älter als 60 Tage sind, aus allen Mailordnern unterhalb des Verzeichnisses mail in das Verzeichnis /tmp/mail2benno/. Anschließend kopiert das zweite Kommando das komplette Verzeichnis auf den RasPi – ersetzen Sie hier raspberrypi.local durch den Hostnamen beziehungsweise die IP-Adresse Ihres Geräts. Das vierte Kommando ruft dann das Skript aus Listing 3 auf dem Archivserver auf und kopiert die Dateien in die Inbox von Benno.
Das mächtige Archivemail-Skript bietet verschiedene Optionen. Eine kurze Erklärung rufen Sie mit dem Schalter -h ab. Die Erweiterung --all etwa exportiert alle E-Mails. Vorsichtige Naturen nutzen die Option --copy: Damit bleiben die Nachrichten zunächst in der Mbox erhalten. Nach erfolgreicher Archivierung holt ein zweiter Lauf mit --delete das Löschen dann nach.
Neben Mbox-Dateien unterstützt Archivemail auch andere lokale Mail-Formate. Außerdem erlaubt das Skript die Archivierung von Nachrichten, die auf entfernten IMAP-Servern liegen. Wer einen eigenen IMAP-Server betreibt, lässt das Skript aber sowieso direkt auf dem Server laufen.
Fazit
Mit Benno realisieren Sie schnell und unkompliziert ein Mailarchiv. Das regelmäßige Archivieren von Nachrichten macht nur wenig Arbeit, als Lohn der Mühe winkt eine schnelle Volltextsuche in den E-Mails per Webbrowser von allen Geräten im LAN.
Diese sicher nicht triviale Anwendung straft auch all jene Lügen, die den RasPi erst dann für ernsthafte Aufgaben als geeignet ansehen, wenn er Gigabit-Ethernet und USB 3 unterstützt. Außer für das schnelle Kopieren von großen Dateien eignet sich der Kleinrechner schon heute für die Mehrzahl aller Aufgaben im häuslichen Umfeld.
Der Autor
Bernhard Bablok arbeitet bei der Allianz Technology SE als SAP-HR-Entwickler. Wenn er nicht Musik hört oder mit dem Radl respektive zu Fuß unterwegs ist, beschäftigt er sich mit Themen rund um Linux, Programmierung und neuerdings Kleincomputer. Sie erreichen ihn unter mailto:[email protected].
Infos
- E-Mails von mehreren Geräten aus lesen: Bernhard Bablok, “Sammelstelle”, RPG 03-04/2017, S. 52, http://www.raspi-geek.de/38710
- Benno MailArchiv: http://http:/www.benno-mailarchiv.de
- ImportExportTools: https://freeshell.de/~kaosmos/mboximport-en.html
- Mbox2eml: https://sourceforge.net/projects/mbox2eml/
- Archivemail-Fork des Autors: https://github.com/bablokb/archivemail
- Archivemail: http://archivemail.sourceforge.net





