Inhaltsverzeichnis

Migration von Benno MailArchiv 1.x nach 2.x

ACHTUNG! Beim Update auf Benno MailArchiv 2.0 muss die primäre Gruppe des Benutzers „benno“ auch die Gruppe „benno“ sein!

 usermod -g benno benno

Verfahrensprinzip

Um archivierte Mails von Benno 1.x nach Benno 2.x zu portieren, müssen alle archivierten Mails aus dem Repo von Benno 1 ausgelesen und das „inbox“ Verzeichnis von Benno 2 eingestellt werden.

Die Mails im Archiv liegen gezippt vor (müssen also ausgepackt (entzippt) werden). Im Inbox-Verzeichnis müssen die Mails durch den User „benno“ lesbar und schreibbar sein.

Das nachstehende einfache Skript kopiert alle E-Mails aus dem Repository von Benno 1 und stellt sie ausgepackt und passend berechtigt (User benno) in das Spool-Verzeichnis von Benno 2.

WICHTIGER HINWEIS

Das Skript kopiert alle Mails auf einmal. Das bedeutet: Es muss ausreichend Platz (Diskspace) für die ausgepackten E-Mails zur Verfügung stehen. Die Mails in der Inbox werden zwar nach der Archivierung gelöscht, aber das Kopieren läuft schneller als das Archivieren!!

Das unten stehende, einfache Skript kopiert alle Mails aus dem alten Repository in die Inbox von Benno 2.

Workaround bei großen Datenmengen

Damit während der Migration nicht übermäßig viel Festplattenplatz verbraucht wird, könnte man bspw. die oberste Verzeichnishierarchie aus dem Repo-Verzeichnis (also bspw. die jeweiligen Verzeichnisse 7/, 8/, c/, e/, …) einzeln verarbeiten. Hierzu müsste im Skript jeweils das Verzeichnis in der Variablen REPODIR angepasst werden.

Einfaches Migrationsskript

#!/bin/sh
# Simple migration script to copy archived and zipped mails
# from Benno MailArchiv 1.x Repository to the "inbox" directory
# of Benno MailArchiv 2.x
# YOU USE THIS SCRIPT AT YOUR OWN RISK!!!
#
REPODIR=/srv/mailarchive/repo
FILEPATH=/srv/benno/inbox
 
for GZFILE in `find ${REPODIR} -type f -name *.gz`;do
  GZFILENAME=`basename ${GZFILE}`
  FILENAME=`echo ${GZFILENAME} | sed -e 's/\.gz/\.reimport/'`
  echo "Create file ${FILENAME}"
  zcat ${GZFILE} > ${FILEPATH}/${FILENAME}
  chown benno ${FILEPATH}/${FILENAME}
  ln ${FILEPATH}/${FILENAME} ${FILEPATH}/${FILENAME}.eml
  rm ${FILEPATH}/${FILENAME}
 
done