E-Mail/Manuelle Konfiguration/Archivierung

Aus schokokeks.org Wiki
Version vom 31. August 2010, 08:32 Uhr von Bernd (Diskussion | Beiträge) (→‎Script)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Ankommende E-Mails werden bei uns typischerweise in einer Mailbox vom Typ »Maildir« gespeichert. Dieses Mailbox-Format hat zwar bei der normalen Verwendung unschlagbare Vorteile, wird aber sichtbar langsamer wenn sich zu viele E-Mails in einem Verzeichnis befinden.

Typischerweise sollten sich nicht mehr als 5.000 E-Mails in einem Unterordner befinden, damit der IMAP-Server diese schnell auflisten kann.

Automatische Archivierung

Da man in der Regel seine E-Mails nicht löschen möchte, bietet es sich an, eine automatische Archivierung einzurichten. Hierfür haben wir das Programm cleanup-maildir in einer angepassten Version installiert.


Ganze Mailbox-Hierarchie archivieren

Bei einer Mailbox mit mehreren Unterordnern bietet es sich an, die gesamte Hierarchie in einer zweiten IMAP-Mailbox als Archiv nachzubilden. Damit werden die archivierten E-Mails nicht mehr innerhalb der Mailbox des täglichen Bedarfs gespeichert und verlangsamen den regulären Zugriff nicht. Da Sie bei uns mittels grep oder mutt auch direkt auf dem Server zugreifen können, ist eine Suche nach alten Nachrichten auch möglich ohne stets den gesamten Nachrichtenbestand in das E-Mail-Programm zu laden.

Vorbedingungen

In unserem Beispiel befindet sich die reguläre Mailbox in ~/mailbox/inbox/, was gleichzeitig auch der Pfad des IMAP-Kontos ist. Eine separate Mailbox unter ~/mailbox/attic/ ist als separates Postfach eingerichtet und soll das Archiv aufnehmen.

Die Archivierung soll so erfolgen, dass jeder Ordner der Original-Mailbox im Archiv um Unterordner für Jahr und Monat erweitert wird.

Script

Folgendes Script nutzt cleanup-maildir um eine gesamte Mailbox mit allen Unterverzeichnissen zu archivieren. Beachten Sie, dass die Zeilen sehr lang sind. Vor dem Zeilenumbruch befindet sich ein \, der dafür sorgt, dass der Zeilenumbruch ignoriert wird. Dies muss entweder exakt so beibehalten werden oder der \ muss zusammen mit dem Zeilenumbruch entfernt werden.

# Mit abschließendem / angeben!
MAILBOX=~/mailbox/inbox/
ARCHIVE=~/mailbox/attic/
DAYS=90 

# Alle Ordner finden:
find "${MAILBOX}." -maxdepth 1 -type d -and -not \( -name tmp -or -name cur -or -name new -or -name courierimapkeywords -or -name courierimaphieracl -or -name . \) -printf "%f\0" | \
  xargs -0 -I FOLDER /usr/local/bin/cleanup-maildir --trial-run -a "${DAYS}" -d 2 --archive-folder="${ARCHIVE}"FOLDER --folder-prefix="" --maildir-root=${MAILBOX} archive FOLDER


Bitte ersetzen Sie in der letzten Zeile --trial-run durch --quiet, wenn Sie sicher sind, dass die Archivierung die korrekten Ordnernamen benutzt.