Dies ist eine alte Version des Dokuments!
Zur Re-Indexierung eines Containers müssen alle E-Mails einmal neu gelesen und indexiert werden. Benno MailArchiv ist so aufgebaut, dass dem Repository und dem Index ausschließlich Daten angehängt werden können. Ein Löschen der Daten ist mit Benno-internen Methoden nicht möglich.
Um einen Container komplett zu re-indexen ist es erforderlich, den bestehenden Index zu löschen und alle E-Mails aus dem Repository erneut zu importieren. Für den Re-Import werden die E-Mails aus dem Repository in das Inbox-Verzeichnis übertragen. Wir empfehlen die folgende Vorgehensweise.
Zuerst werden der Archvierungs- und der REST-Daemon gestoppt. Dann wird der Index gelöscht oder verschoben.
mv /srv/benno/archive/index /srv/benno/archive/index_old
Nach dem Neustart der Dienste wird das Index-Verzeichnis wieder angelegt.
Im Repo-Verzeichnis liegen die E-Mails als gezippte Dateien in einem erweiterten RFC822-Format vor. Da beim Re-Import nur die ursprüngliche E-Mail importiert werden soll, muss zuerst der Header abgetrennt werden. Danach muss die E-Mail "atomar" in die Inbox geschrieben werden. Zusätzlich ist zu beachten, daß der Speicherbedarf der Java-VM bei einner großen Anzahl gleichzeitig in die Inbox geschriebener E-Mails stark ansteigt. Daher sollte darauf geachtet werden, dass immer nur ca. 100 E-Mails gleichzeitig importiert werden.
Zur Vereinfachung des Imports stellen wir das Perl-Script benno-bennobox2eml zur Verfügung. Dieses durchsucht das Repo-Verzeichnis nach den Archivdateien, extrahiert die Header und schreibt die E-Mails atomar in das Inbox-Verzeichnis. Die Anzahl gleichzeitig zu importierender E-Mails kann optional angegeben werden.
Usage: ./benno-bennobox2eml [-h] [-d] [-v] [-m <num>] -a <archive directory> [-e <export directory] -a archive directory -e export files to this directory (default current archive directory) -d dry run -m <num> max files in inbox directory -v verbose
Beispiel-Aufruf:
./benno-bennobox2eml -m 250 -a /srv/benno/archive/2014/repo_old -e /srv/benno/inbox
Die Verzeichnisstruktur unterhalb des repo_old Verzeichnisses wird nach Archiv-Dateien durchsucht. Aus den Dateien werden die RFC822 E-Mails extrahiert und in das Inbox-Verzeichnis geschrieben. Falls mehr als 250 .eml Dateien in der Inbox liegen, wird pro „überzähliger“ .eml-Datei eine Pause von 0.5 Sekunden eingelegt, bevor die nächste Archivdatei extrahiert wird.