Inhaltsverzeichnis

E-Mails per API löschen

Benno MailArchiv bietet seit Version 2.10.0 eine Schnittstelle mit der E-Mails im laufenden Betrieb aus dem Index gelöscht werden. Diese Funktionalität benötigt koordinierten Schreibzugriff auf den Index und wird daher vom Archiver bereit gestellt. Der Archiver selbst kann E-Mails ausschließlich aus dem Index löschen. Das Löschen von E-Mails aus dem Repo ist hier nicht implementiert und kann nur extern durchgeführt werden!

Beim Aufruf der Löschfunktion werden die relevanten Einträge der E-Mails aus dem Index gelöscht und es werden entsprechende Einträge in das Journal-Log des Containers geschrieben. Der Index wird vom Archiver asynchron aktualisiert. Während der Aktualisierung wird eine Datei mit einer Liste der betroffenen E-Mails erstellt und unterhalb des Repo-Verzeichnisses gespeichert. Damit ist der Löschvorgang auf dem Index abgeschlossen.

Diese Funktion bietet damit im ersten Schritt ein softdelete an. Die E-Mails existieren zwar noch im Repo, können aber nich mehr gefunden werden. Wenn die E-Mails aus dem Repo reimportiert werden, können sie auch wieder gefunden werden.

Falls die E-Mails komplett aus dem Archiv gelöscht werden sollen, muss dieses auf Basis der Listendateien mit Hilfe eines externen Programms durchgeführt werden.

Beide Funktionen werden vom Programm benno-archive-delete aus dem Paket benno-archive-tools bereit gestellt.

Aktivierung

Die Funktionalität wird in der Konfigurationsdatei aktiviert. Für den Zugriff ist zusätzlich ein shared Secret notwendig, das aus der ersten Zeile der Passwort-Datei gelesen wird.

<benno deletePermission="true" passwordFile="/etc/benno/archive.secret">

Liste der zu löschenden E-Mails

Die aus dem Archiv zu löschenden E-Mails werden anhand des Container und der Benno-Id der jeweligen E-Mail adressieret. Diese Liste kann mit Hilfe von Suchanfragen an die REST-Schnittstelle erstellt werden.

Alternativ kann die Liste mit Hilfe des im Paket benno-web enthaltenen Tools ``benno-client`` erstellt werden:

CONTAINER=BennoContainer
benno-client -C ${CONTAINER} -q '(Date:[197001010000 TO 201212312359])' | \
while read BENNOID;
  do echo  "${CONTAINER};${BENNOID}" >> delete_${CONTAINER}.csv
done
unset CONTAINER

benno-archive-delete

Mit Hilfe des Kommandos benno-archive-delete kann die Schnittstelle angesprochen werden.

Mit dem Aufruf

benno-archive-delete < /path/to/listfile

werden die aus dem Index zu löschenden E-Mails eingelesen. Die Angabe der E-Mails erfolgt zeilenweise im Format <ContainerId>;<BennoId>.

Nachdem der Index aktualisiert wurde, können die E-Mails mit dem folgenden Kommandoaufruf vom Filesystem gelöscht werden.

benno-archive-delete -d

Dieser Aufruf iteriert über alle konfigurierten Container und löscht die E-Mails, die in den Listendateien für den jeweiligen Container vermerkt wurden. Zusätzlich wird dieses ebenalls im Journal-Log vermerkt.