Benutzer-Werkzeuge

Webseiten-Werkzeuge


re-indexierung

Dies ist eine alte Version des Dokuments!


Re-Indexierung eines Containers

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.

Vorbereitung

Zuerst werden der Archvierungs- und der REST-Daemon gestoppt. Dann werden das Index- und das Repo-Verzeichnis des Containers verschoben.

mv /srv/benno/archive/index /srv/benno/archive/index_old
mv /srv/benno/archive/repo /srv/benno/archive/repo_old

Danach können die Dienste wieder neu gestartet werden. Die Index- und Repoverzeichnisse werden jetzt neu angelegt.

Re-Import

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.

benno-bennobox2eml

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.

re-indexierung.1478596926.txt.gz · Zuletzt geändert: 2016/11/08 09:22 von 127.0.0.1