Dies ist eine alte Version des Dokuments!
Benno IMAP (benno-imap) ist für die Synchronisation der E-Mails aus IMAP Mailboxen vorgesehen. Hierbei werden die E-Mails in regelmäßigen Abständen vom IMAP-Server in das MailArchiv importiert.
Zum einmaligen Import bestehender E-Mail Bestände sollte er Import per POP3 (mittels benno-pop3) oder IMAP (mittels benno-imapimport) durchgeführt werden.
Die Anbindung an das E-Mail System sollte generell möglichst direkt über die hiefür vorgesehenen Schnittstellen erfolgen.
Die Anbindung per IMAP sollte nur dann konfguriert werden, falls keine direkte Anbindung möglich ist. Hier besteht systembedingt die Gefahr, daß E-Mails auf dem IMAP-Server gelöscht werden, bevor sie archiviert wurden.
Die für diese Funktionalität benötigten Software-Komponenten werden mit Hilfe des Pakets benno-imap installiert.
Bei Nutzung einer MySQL Datenbank werden zusätzlich die Pakete python-mysqldb und php5-mysql benötigt.
Die Authentisierung erfolgt gegen einen IMAP-Server mit Hilfe des externen Authentisierungs-Moduls benno_imapauth.
Das Authentisierungs-Modul wird in der Konfigurationsdatei /etc/benno-web/benno.conf festgelegt.
EXTERNAL_AUTH = /usr/lib/benno-imap/benno_imapauth
Die Konfiguration für das Authentisierungs-Modul „benno_imap“ wird in der Datei /etc/benno-imap/imapauth.conf gespeichert. Diese Datei ist im INI-Format ausgeführt (https://de.wikipedia.org/wiki/Initialisierungsdatei) und muss für den User des Webservers lesbar sein.
Nach erfolgreicher Authentisierung wird das Passwort in der Datenbank
/var/lib/benno-web/bennoweb.sqlite
in der Tabelle
„imapuser“ gespeichert. Vor dem Speichern wird es mit dem Public-Key
(imapauth.conf: keyfile verschlüsselt.
Die IMAP Passwörter werden reversibel verschlüsselt in der Datenbank gespeichert.Das Schlüsselpaar hierfür wird mit OpenSSL angelegt.
openssl req -newkey rsa:2048 -new -sha256 -x509 -days 3650 -keyout benno-imap.rsakey -out benno-imap.crt
openssl rsa -outform der -des3 -in benno-imap.rsakey > /etc/benno-imap/benno-imap.key
openssl x509 -outform der -pubkey -noout -in benno-imap.crt > /etc/benno-web/benno-imap.pub
Die Zertifikatsdateien benno-imap.rsakey und benno-imap.crt werden nicht mehr benötigt und können gelöscht werden.
Der private Schlüssel wird in der Konfigurationsdatei von benno-imapsync (/etc/benno-imap/imapsync.conf
)
festgelegt. Das Passwort für den Schlüssel kann hier ebenfalls konfiguriert
werden.
Falls kein Schlüssel angegeben ist, liest benno-imapsync beim Start den unverschlüsselten Schlüssel von STDIN. Dieser kann z.B. von Remote übergeben werden. Falls der Schlüssel angegeben wird, aber keine Passphrase, wird beim Start versucht, diese von STDIN zu lesen.
Ein neuer Benutzer wird mit dem Program benno-imapuser angelegt, falls das Programm mit -u <username> -i <imaphost> -C <container> aufgerufen wird.
Nicht übergebenen Parameter werden mit den Defaultparameatern der Konfigurationsdatei vorbelegt.
benno-imapuser -u benno@lw-systems.net -i imap.lw-systems.net -C LWsystems \ -n 'Benno LWsystems' -e benno@lw-systems.net,info@lw-systems.net
Das Passwort kann optional übergeben werden. Andernfalls wird es mit einem erfolgreichem Login am Web-UI in der Datenbank gespeichert.
Mit benno-imapuser -D -u <username>
wird der Benutzer aus der Datenbank
gelöscht. Damit wird auch keine Synchronisation des IMAP Kontos mehr
vorgenommen.
Falls das Passwort eines Benutzers auf dem IMAP-Server geändert wird, muss sich der Benutzer einmal mit diesem Passwort am Web-Interface anmelden. Dann wird das neue Passwort in der Datenbank gespeichert und die E-Mails können vom IMAP-Server importiert werden.
Alternativ kann das Passwort mit dem Kommando benno-imapuser -u <username> -p <password>
geändert werden.
Der Import von neuen E-Mails erfolgt mit dem Programm benno-imapsync. Die Konfiguration erfolgt in der mit dem Parameter -c übergebenen Datei (/etc/benno-imap/imapsync.conf). Hier können Beispielsweise Ordner wie Drafts von der Synchronisation ausgeschlossen werden.
Die zu importierenden Accounts werden aus der Tabelle „imapuser“ gelesen. Das Passwort wird mit dem privaten Schlüssel (imapsync.conf: keyfile = …) entschlüsselt.
Falls hier die Meldung „RSA key format is not supported“ ausgegeben wird, wurde versehentlich ein RSA-Key statt des 3DES Keys erstellt / konfiguriert.
Der private Key der verschlüsselten Passwörter sollte nie auf dem Server gelagert werden. Der Import kann per Cron-Job von einem System aus dem internen Netz getriggert werden, wobei der Key per STDIN übergeben wird.
Als Beispiel sei die folgende Konfiguration vorgeschlagen.
Ein Cron-Job auf dem internen System startet das Script zum Aufruf der Synchronisation.per ssh und übergibt den privaten Schlüssel auf STDIN.
cat $KEYFILE | ssh -q benno@$CLOUDHOST '/etc/benno-imap/benno-imapsync.sh'
Hier wird ein Script zum Start des Synchronisationsprozesses erstellt. Dieses Script schreibt die Logdaten für jeden Tag in eine getrennte Logdate.
#!/bin/sh # # THISDAY=$(date +%Y-%m-%d) LOGLEVEL=INFO /usr/bin/sudo -u benno \ /usr/sbin/benno-imapsync \ -c /etc/benno-imap/imapsync.conf \ -L $LOGLEVEL \ -f /var/log/benno/imapsync-${THISDAY}.log