Benno - Das Echte Mailarchiv

…archiviert nicht nur die Kopano Groupware, sondern arbeitet durch offene Protokolle, mit den meisten anderen bekannten Mailserverlösungen auch sehr gut zusammen.

Rechtssichere Emailarchivierung - was heißt das nun?

Benno MailArchiv ist die offene und flexible Lösung für die revisionssichere E-Mail-Archivierung. Der Einsatz von Benno MailArchiv ermöglicht signifkante Kosteneinsparungen beim Ablegen und Suchen von E-Mails im Unternehmen. E-Mails werden automatisch, sicher und zuverlässig archiviert. Die Textinhalte aller E-Mails (incl. der Attachements!) werden on the fly indexiert. Alle E-Mails sind damit Volltext suchbar (bspw. über den Mailtext, Absender, Empfänger, Betreffzeile, Mailheader und natürlich über die Inhalte der Attachements!). Benno MailArchiv unterstützt z.Z. ca. 1.200 verschiedene Dateiformate für Attachements. (ZIP-Dateien werden ausgepackt und dateiweise indexiert). Über die ausgefeilte Suchfunktion wird jede beliebige E-Mail in Sekunden treffsicher gefunden. Das Suchen und Anzeigen von E-Mails kann über die http-Schnittstelle als Web-Service in Drittanwendungen integriert werden. Benno MailArchiv ist damit bestens für die Integration in Geschätsprozesse (SOA) vorbereitet.

Benno entwickelt auf Debian. Die Installation hier bezieht sich auf Ubuntu 20.04 und Debian 10 mit Benno 2.8.9 in einem LXC auf Proxmox Virtualisierung. Abgeholt werden die Mails von einem UCS System wo Kopano als App installiert ist. Als erstes fügen wir für unsere Installation die Paketquelle hinzu:

wget -O - http://www.benno-mailarchiv.de/download/debian/benno.asc | apt-key add -
echo "deb http://www.benno-mailarchiv.de/download/debian /" > /etc/apt/sources.list.d/benno.list
apt update

Als nächstes installieren wir Benno Mailarchiv.

apt install benno-archive benno-rest benno-web apache2 benno-milter

Wenn du Benno MailArchiv ohne gültiges Lizenzfile betreibst, läuft Benno MailArchiv ab Archivierung der ersten E-Mail für 60 Tage im Demo-Modus. Im Demo-Modus stehen alle Funktionen uneingeschränkt zur Verfügung. Möchtest Benno MailArchiv danach weiter betreiben, benötigst du eine gültige Lizenz. Die Informationen zur Anforderung der Lizenz werden mit dem u.g. Kommando ermittelt. /etc/init.d/benno-rest info

Eine Lizenz kann dann unter https://www.benno-mailarchiv.de/lizenz/ angefordert werden. Nachdem man das Lizenzfile (benno.lic) bekommen hat, kopiert man es auf den Bennoserver und setzt die Rechte. Seit dem letzten Update (2.8.9) gibt es jetzt neben der Host-Info die sog. Instance-ID. Diese Instance ID ist natürlich eindeutig und man kann eine Lizenz nun viel einfacher anfordern. Wer mit der ADMIN-Rolle in der WebApp eingeloggt ist, kann im Info-Fenster (oben rechts, „i“ im Kreis) der WebApp die Instance-ID sehen und das Formular zur Anforderung einer Lizenz direkt per Link anklicken und erreichen!

(Die Host-Info geht nach wie vor (aus Kompatibilitätsgründen). Die Bindung an IP bzw. FQDN ist mit der Instance-ID allerdings hinfällig, was den Betrieb insgesamt leichter macht).

scp benno.lic root@benno.tux.lan:/etc/benno/benno.lic
chown benno:benno /etc/benno/benno.lic
systemctl restart benno-rest.service

Sicherheitscheck von Files:

chgrp benno  /etc/benno/benno.xml
chgrp www-data /etc/benno-web/benno.conf
chmod 640  /etc/benno/benno.xml
chmod 640  /etc/benno-web/benno.conf

ls -l  /etc/benno/benno.xml
-rw-r----- 1 root benno 2622 Nov 22 09:19 /etc/benno/benno.xml

ls -l /etc/benno-web/benno.conf
-rw-r----- 1 root www-data 238 Nov 20 21:52 /etc/benno-web/benno.conf

Um nun die LDAPanbindung zu aktivieren importiert man das CA-Zertifikat seiner UCS-Umgebung nach /usr/local/share/ca-certificates/ucs-root.crt. An diesem Punkt importiere doch auch gleich dein CA das du später für den Apache Webserver benötigst. Z.B. Das von deiner eigenen CA, oder eben ein anderes sofern dies für dich notwendig ist. Dananch führst du den Befehl aus.

update-ca-certificates

Danach editiert man die LDAP-Konfiguration nano /etc/benno-web/ldapauth.conf. Hier ein Beispiel für UCS für die Domäne tux.lan

host = dc1.tux.lan:7389
basedn = dc=tux,dc=lan
usersuffix = cn=users,dc=tux,dc=lan
tls = true
email = mailPrimaryAddress, mailAlternativeAddress, univentionFreeAttribute15
adminuser = Administrator, maxi

Die Konfiguration enhält auch schon die Attributerweiterung für das UCS Modul. (mailAlternativeAddress, univentionFreeAttribute15) Die gesamte Dokumentation für das Ldapmodul findest du hier. Default hat jeder Benutzer nur auf seine Mails Zugriff, außer Benutzer die unter „adminuser“ eingetragen sind. Um nun auch anderen Benutzer bestimmte Mailboxen für das Archiv zu zuordnen erweitern wir unseren UCS um ein LDAPattribut. Das ganze installiert sich in UCS völlig automatisch mit dem Debianpaket unserer Haus internen Paketquelle.

apt install ucs-iteas-benno-schema

Wer die Schritte des Paketes manuell tun möchte, darf das selbstverständlich:

Ist das ganze durch, sehen wir uns noch die Hauptkonfiguration an: nano /etc/benno-web/benno.conf Das ist Default leer und benutzt eben auch die Defaultkonfiguration von Benno. Eine mögliche empfohlene Konfiguration findest du gleich hier:

#DEBUG           = 0
SHOW_IMAGES = true
SUPPRESS_LEADING_WILDCARD = 0
SUPPRESS_SINGLE_WILDCARD = 0
PERMALINK_UNAUTHENTICATED = no
REST_SSL_VERIFY = no
INFO_DISABLED = SYSDATA
USERPERMISSONS = ENABLED
LOGIN_SHOWLAST = 30
SHOW_SPAM = true

Diese Optionen sind im Benno Wiki im Detail beschrieben.

Benno-Milter wird so konfiguriert damit dieser auf TCP Ebene von unserem Kopanoserver die Mails entgegen nehmen kann. nano /etc/default/benno-milter

#
# Start options for benno-milter
#
#SOCKET=/var/spool/postfix/benno-milter/benno-milter.sock

SOCKET_TYPE=inet
SOCKET=22500@0.0.0.0

SPOOLDIR=/srv/benno/inbox
#MILTERARGS="-x myhostname"

MILTER_GROUP=postfix

#BENNOHOST=your.benno-archive.host

Nun starten wir den Serverdienst und Milter einmal neu und können uns danach auch schon mit unseren Usern am Webinterface einloggen.

systemctl restart benno-milter.service benno-archive.service

Um das Web-GUI per HTTPS abzusichern, muss der Webserver für HTTPS konfiguriert werden. Hierzu aktivieren wir das ssl Modul und die Default SSL Website im Apache Webserver. Zusätzliche bauen wir unser eigenes Zertifikat unserer CA ein. Du kannst natürlich eines mit UCS generieren, ein Wildcard deiner Organisation verwenden, Let's Encrypt, oder eines kaufen.

Hierzu kopiere deinen Key unter /etc/ssl/private/benno-apache.key setzte die Rechte, und installiere die nötigen Pakete.

chown root:ssl-cert /etc/ssl/private/benno-apache.key
chmod 640 /etc/ssl/private/benno-apache.key
apt install libapache2-mod-php -y
a2enmod ssl
a2ensite default-ssl

Das zuständige CA befindet sich ja schon am Server. Nun im File /etc/apache2/sites-enabled/default-ssl.conf die beiden Zertifikate setzen:

...
SSLCertificateFile      /etc/ssl/certs/benno-apache.crt
SSLCertificateKeyFile /etc/ssl/private/benno-apache.key
...

Apache neu starten: systemctl restart apache2 Weiters kann man unter /var/www/html/index.html noch eine einfache Weiterleitung erstellen. Zur internen Verwendung genügt das.

index.html
<html>
        <head>
                <meta http-equiv="refresh" content="0; URL=https://benno.tux.lan/benno/">
        </head>
</html>

Ansonsten sollte man dafür Apache selbst verwenden

Möchte man bestimmte Adressen von der Archivierung ausschließen, z.B. aus Datenschutz rechtlichen Gründen, ist das über ein File leicht möglich nano /etc/benno/benno.xml

benno.xml
...
<simplecontainer>
 <identifier>BennoContainer</identifier>
   <conditions>
     <not> 
       <or>  
         <address sender="true" recipient="true" from="true" to="true" cc="true">bewerbungen@tux.lan</address>
         <address sender="true" recipient="true" from="true" to="true" cc="true">datenschutz@tux.lan</address>
       </or>
     </not>
   </conditions>
    ...
 

Achte hier auf den richtigen Container.

Am Kopanoserver müssen auch die Quellen wie schon auf der Seite beschrieben eingebunden werden. Installiert wird lediglich das Webapp-Plugin. Damit integriert sich das Archiv als eigener TAB vollheitlich in Kopano.

apt install benno-kopano-webapp-plugin

Während der Installation wird nach den RestSettings gefragt. Dort muss der Name deines Benno MailarchivServers angegeben werden. Z.B. so:

https://benno.tux.lan/benno/rest.php

Bei Nachfrage nach dem Bennotcontainer einfach BennoContainer reinschreiben. Danach solltest du unbedingt noch einen Blick auf die Konfiguration des Plugns werfen, ob du etwas ändern möchtest.

nano /etc/benno-kopano-webapp-plugin/config.php

Damit Benno auch alle Mails bekommst, holen wir diese mit dem MILTER Daemon ab. Das ganze bauen wir UCS konform.

ucr set mail/postfix/mastercf/options/smtps/milter_default_action=tempfail
ucr set mail/postfix/mastercf/options/smtp/milter_default_action=tempfail
ucr set mail/postfix/mastercf/options/smtps/smtpd_milters=inet:benno.tux.lan:22500
ucr set mail/postfix/mastercf/options/smtp/smtpd_milters=inet:benno.tux.lan:22500

Nun noch zusätzliche Config in die main.cf schreiben. nano /etc/postfix/main.cf.local

non_smtpd_milters = inet:benno.tux.lan:22500
milter_default_action = tempfail

Konfiguration aktivieren:

ucr commit /etc/postfix/{main,master}.cf
systemctl restart postfix.service

Achte drauf das dein Benno MailarchivServer mit den gesetzten Ports auch erreichbar ist. Sprich 443 und 22500. Ist dies gesetzt, werden deine gesamten Mail bereits alle archiviert.

Hier gibt es mehrere Möglichkeiten. beispielweise Microsoft Exchange, Office365, u.a. auch POP3, oder wie hier beschrieben die IMAP-Schnittstelle.

Installiert wird diese mit apt install benno-imap -y

Mit dem ImapConnector werden die Mails des gesamten Kontos abgeholt. Dieser dient zum einmaligen Import. Im Gegensatz zu IMAP selbst, wo Benno die Mails permanent über das Protokoll abholt. Leider ist der ImapConnector in Ubuntu 20.04 noch nicht funktionsfähig, da dieser zuerst auf Python3 migriert werden muss. Benno wird Default auf Debian entwickelt. Diese haben andere Releasezyklen als Ubuntu. Benno ist hier drann um auch dieses Feature wieder zu akivieren. Zu unserem Glück funktioniert der Imap-Connector in Debian 10 vom feinsten.

Beispiel:

benno-imap -u meinUserName -H benno.tux.lan -f -v -p 'geheim'

Hier gestaltet sich die Konfiguration im Cow Docker sehr einfach. Zu editieren sind 3 Dateien.

Grundsätzlich sollte ja für Postfix nur die Datei extra.cf editiert werden, daher tun wir das auch.

nano extra.cf
milter_default_action = tempfail
smtpd_milters = inet:rspamd:9900 inet:benno.tux.lan:22500
non_smtpd_milters = inet:rspamd:9900 inet:benno.tux.lan:22500

</code> Danach noch den Docker für Postfix neu starten: docker compose restart postfix-mailcow Ab dem Zeitpunkt sollte alles sauber archiviert werden. Sollte das Mailarchiv nicht verfügbar sein, können auch keine Mail versendetet werden. Auch empfangene Mails werden erst zugestellt wenn Benno wieder erreichbar ist. Somit wird gewährleistet das alle Mails als erstes in Benno landen.

Großer Dank gilt hier dem Entwickler von Benno, LW-Systems die mich hierbei stark untersützt haben. Die Firma hat ein tolles Team und einen fachkundinge Support. Benno ist ein MEGA Produkt und ich darf es jedem der etwas auf seine Maildaten hält, wärmstens empfehlen. Stell dir doch mal vor: „Kein Mail wird mehr gelöscht!“ Sprich auch wenn du versehentlich etwas löscht, ist es noch immer im Archiv und für dich verfügbar. Bitte, wie genial ist das denn 8-)!