Startseite>Mail-Archivierung mit Benno auf dem RasPi
Aus Raspberry Pi Geek 08/2017

Mail-Archivierung mit Benno auf dem RasPi (Seite 2)

Suche via Webfrontend

Die aufgeräumte Oberfläche von Benno-Web erlaubt es dem Anwender, zwischen einem einfachen Suchfeld (Abbildung 1) oder einer komplexen Suchmaske (Abbildung 2) umzuschalten. Die Suche selbst gestaltet sich rasend schnell. Die Treffer landen in der mittleren Spalte, eine Vorschau der Mails zeigt der rechte Teil der Webseite.

Abbildung 1: Das übersichtliche Webfrontend erleichtert die schnelle Volltextsuche nach E-Mails.

Abbildung 1: Das übersichtliche Webfrontend erleichtert die schnelle Volltextsuche nach E-Mails.

Abbildung 2: Auch komplexe Suchen mit vielfältigen Kriterien erlaubt das Archivierungsprogramm.

Abbildung 2: Auch komplexe Suchen mit vielfältigen Kriterien erlaubt das Archivierungsprogramm.

Darüber hinaus lassen sich komplexe Suchläufe speichern und fungieren dann quasi als virtuelle Ordner mit den Treffern. Die Nachrichten lassen sich wahlweise im Originalformat herunterladen oder auch einfach an eine E-Mail-Adresse senden.

Die Weboberfläche arbeitet responsiv, sie passt sich also dynamisch dem verfügbaren Platz auf dem Display an. Bei einem kleineren Browserfenster ändert sich das dreispaltige Layout zu einem zweispaltigen. Die Treffer erscheinen dann oben, die Vorschau der E-Mail unten. Auf Mobilgeräten mit noch weniger Bildschirmplatz bekommen die Suche, die Trefferliste und die Nachrichtenansicht jeweils ein eigenes Fenster. Dadurch lässt sich das System jederzeit optimal bedienen.

Das Archiv füllen

Zunächst gilt es aber, die Nachrichten aus dem Mailprogramm zu exportieren und in Benno zu importieren. Wie Ersteres funktioniert, hängt vom verwendeten Mailclient beziehungsweise vom Format ab, in dem dieser die Mails speichert. Den einfachen Import beleuchten wir aber zuerst.

Der Archiv-Daemon benno-archive überwacht das Verzeichnis /srv/benno/inbox/ auf neue Dateien mit der Endung .eml. Jede davon enthält eine Nachricht im normalen E-Mail-Transportformat, wie es jeder Mailer über die Leitung schickt. Neue Dateien im Verzeichnis indexiert der Daemon und verschiebt sie dann in komprimierter Form in ein Unterverzeichnis von /srv/benno/archive/repo/.

Damit die Software die Mails nicht schon liest und indiziert, bevor sie komplett in der Inbox vorliegen, empfiehlt Benno das in Listing 2 gezeigte Vorgehen. Dieser Ablauf kopiert die Mail zuerst mit einer anderen Endung in das Verzeichnis (erste Zeile). Der zweite Befehl erstellt einen Hardlink mit der korrekten Endung in dem Verzeichnis, das der Benno-Daemon überwacht. Der atomare Befehl kopiert keine Daten, Benno sieht also die komplette Datei auf einen Schlag. Der dritte Befehl löscht dann den ersten, temporären Namen der Datei.

Listing 2

 

$ cp mail.eml /srv/benno/inbox/mail.tmp
$ ln /srv/benno/inbox/mail.tmp /srv/benno/inbox/mail.eml
$ rm /srv/benno/inbox/mail.tmp

Die Performance auf dem RasPi 3 genügt in der Regel problemlos den Anforderungen des normalen E-Mail-Alltags. Die über 10 000 alten Mails des Autors mit einem Volumen von etwa 1,3 GByte archivierte das System in 105 Minuten – das entspricht knapp 100 Mails pro Minute. Auf dem System lag dabei die CPU-Auslastung nur bei 1,25. Im Alltag mit seinen deutlich geringeren Anforderungen lässt sich die entstehende Last vernachlässigen. Der Index umfasste nach der Archivierung 56 MByte, das Archiv der Mails selbst belegte 965 MByte.

Nach dem Archivieren fehlten ungefähr 50 Mails im Archiv: Es handelte sich um solche, die Benno während der Archivierung als Dubletten erkannte. Eine Mehrfachablage von Mails in mehreren Ordnern ist in einem Volltextarchiv nicht nötig. Benno dokumentiert identische Kopien während der Archivierung in seinem Logfile /var/log/benno/archive.log.

Vom Mailer zum Archiv

Für den Weg vom Mailprogramm zum Archiv kommt zum einen die Komplettarchivierung alter Mails infrage, die schon getrennt von den täglichen Mails vorliegen. Zum anderen bevorzugen einige Nutzer sicherlich das laufende Archivieren eingehender Mails.

An erster Stelle steht immer der Export der Mails in das von Benno benötigte Format. Mailer, die auf dem sogenannten Maildir-Format aufsetzen, bereiten die wenigsten Probleme. Hierzu zählen zum Beispiel KMail oder der Mailserver Dovecot. Dasselbe gilt für das MH-Format des schlanken Linux-Mailers Claws-Mail, den auch Raspbian in der Pixel-Installation schon mitbringt.

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.

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.

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.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland