Benno-client ist ein Kommandozeilen-Client für das REST API von Benno MailArchiv. Dieses Perl-Script kann als Basis für eigene Implementierungen genutzt werden.
Daneben bietet es auch die Möglichkeit, größere Mengen von E-Mails anhand von Suchkritereien zu ermitteln und diese z.B. aus dem System zu exportieren.
Benno Client ruft stellt Suchanfragen per REST-API an Benno MailArchiv. Die Anfragen können mit Hilfe der Lucene Query-Syntax formuliert werden.
Eine Suche gibt die Anzahl der gefundenen E-Mails anhand der Benno E-Mail Ids zurück. Die Anzahl der Rückgabewerte wird durch den Parameter –limt 20 festgelegt. Falls er nicht angegeben wird, ist die Voreinstellung 20.
# benno-client -q 'From:m.hendriks@hansen-und-meyer.de' 2016:446E2DD35A73880A569992D2CAC77EE78ACDA94383EA42247869D81CA5AD850800 2016:3B582513165E3BCEEF113F44F200FA9A4534EB3BFAE37264867745CE4EB4424500 2016:3B582513165E3BCEEF113F44F200FA9A4534EB3BFAE37264867745CE4EB4424500 3 mails found (first: 1, last: 20, limit: 20)
Die letzte (Status-)Zeile wird auf STDERR ausgegeben und kann mit 2>/dev/null
entfernt werden. Damit kann die Liste als Eingabe zum Herunterladen der E-Mails dienen.
# benno-client -i 2012:E51F8A601C08E09004C02833347EFC2D7AD92E757FE4CEC5B10AD869E0D5BB2800
Im unten aufgeführten Beispiel sollen alle E-Mails des Benutzers „m.hendriks@hansen-und-meyer.de“ vom Jahre 2017 exportiert werden. Falls für den Benutzer mehr als 10.000 E-Mails archiviert wurden, sollte das Limit entsprechend höher gesetzt werden.
#!/bin/bash # # EXPORTDIR=/tmp/export mkdir $EXPORTDIR benno-client --limit 10000 -q '(Sender:m.hendriks@hansen-und-meyer.de OR Recipient:m.hendriks@hansen-und-meyer.de) AND Date:[201701010000 TO 201808271605]' 2>/dev/null | \ while read bennoId; do [ "$bennoId" = "No results found." ] && exit benno-client --export $EXPORTDIR --id $bennoId done
Usage: /usr/sbin/benno-client [-h] [-s <secret>] [-r <rest host>] [-c <container>] [-p <port>] <-q <query>|-i <mailid>> -c '<container>' archive container -u|--scid <scid>' subcontainer id (if configured) --filter '<filter>' lucene filter string or file with filter --first '<num>' first email in response list -l|--limit '<num>' limit response list to <num> mails -i|--id '<id>' fetch mail with id -j dump raw JSON response -p <port> REST port (21080) -q '<query>' lucene query string or file with filter (search header as "HEADER-<HEADER-NAME>") -r <resthost> (localhost) -s <secret> shared secret -v verbose -h print this help (search header as "HEADER-<HEADER-NAME>") --export <dir> write emlfile to directory <dir> --xheader <string> prepend output file with header string --instance-id print Benno MailArchive Instance ID --license print license data