Zur Anbindung von Benno MailArchiv an unixoide E-Mail-Systeme empfehlen wir die MILTER Schnittstelle.
Dieses hat gegenüber der Anbindung von Benno MailArchiv per (always_)bcc oder einem ähnlichen Mechanismus den Vorteil, daß die eigentlichen Envelope-Informationen nicht verloren gehen. Bei E-Mails, die per BCC verschickt werden, existiert kein entsprechender Header in der E-Mail selbst. Diese Information wird als sogenannter Envelope von Mailserver zu Mailserver übermittelt.
Der MILTER Daemon „benno-milter“ speichert jede eingehende E-Mail im Inbox-Verzeichnis von Benno MailArchiv. Beim Schreiben der Datei speichert der MILTER die Envelope-Informationen (MAIL FROM, RCPT TO) in den zusätzlichen Headern
Diese Header sind per Voreinstellung in der Konfiguration des Archivers als „<senderheaders />“ bzw. „<recipientheaders />“ eingetragen. Zusätzlich sind sie als „<secretheaders />“ markiert, so daß sie bei der Anzeige einer E-Mail nicht ausgegeben werden.
Auf Debian und auf Debian basierenden Systemen erfolgt die Grund-Installation direkt aus dem Paket benno-milter aus dem Repository. Danach ist nur noch die Anbindung der Postfix-Konfiguration notwendig.
Auf anderen Systemen sollte die manuelle Installation vorgenommen werden.
Hinweis: Das Milter-Paket und die diesbezüglichen, an dieser Stelle dargestellten Informationen, stehen als demonstratives Beispiel und „as is“ ohne Anspruch auf Vollständigkeit zur Verfügung.
Falls mehrere Systeme als Importquellen angebunden werden, sollten die Anmerkungen der Multi-Import Konfiguration beachtet werden.
Nachdem das Benno MailArchiv Repository konfiguriert wurde, wird das Paket benno-milter per apt installiert. In der Voreinstellung ist benno-milter für die Implementierung in einen vorher installierten Postfix MTA konfiguriert. Daher sollte vor der Installation des Packages die Installation und Konfiguration des MTA abgeschlossen sein.
Anschließend wird das Paket installiert.
apt-get install benno-milter
Nach der Installation des Pakets wird der MILTER Daemon an Postfix angebunden.
Die MILTER-Anbindung wird in der Konfigurationsdatei /etc/postfix/main.cf
vorgenommen. Hierfür werden hier die folgenden Konfigurationsparameter hinzugefügt.
Achtung Falls Amavis als Post-Queue Filter installiert ist, sollte die Konfiguration des MILTERs wie in MILTER für Amavis deaktivieren beschrieben durchgeführt werden.
... ### Benno MailArchiv Milter smtpd_milters = unix:/benno-milter/benno-milter.sock non_smtpd_milters = local:/benno-milter/benno-milter.sock milter_default_action = tempfail ### /Benno MailArchiv Milter
Falls der MILTER Daemon vom MTA getrennt installiert werden soll, kann der Benno MILTER Daemon per über TCP angebunden werden.
Danach den Postfix-Daemon neu starten. Achtung: Falls das System so konfiguriert ist, daß eine Mail einen Filter durchläuft und dann erneut über einen zweiten SMTP-Prozess eingeliefert wird, muss der MILTER in diesem SMTPD deaktiviert werden. Dieses ist zum Beispiel beim Einsatz von Amavis der Fall.
Das benno-milter Paket ist so konfiguriert, das der MILTER Daemon über den Socket /var/spool/postfix/benno-milter/benno-milter.sock
vom Postfix angesprochen wird. Das Verzeichnis /var/spool/postfix/benno-milter
wird bei der Installation automatisch angelegt.
Falls dieses Verzeichnis nicht angelegt werden konnte, weil kein Postfix installiert war, kann der MILTER Daemon nicht starten.
Nach Installation von Postfix kann die automatische Konfiguration mit Hilfe des Kommandos
apt install –reinstall benno-milter
durchgeführt werden.
Die Anbindung an einen anderen MTA sollte per TCP-Socket durchgeführt werden.
Bei logischer Trennung zwischen dem MTA und dem Archivierungssystem müssen die E-Mails auf das Archiverungssystem übertragen werden und hier unverändert gespeichert werden.
Die einfachste Möglichkeit ist, den MILTER-Daemon auf dem Archivierungs-Host zu installieren. Der MILTER wird so konfiguriert, daß er einen TCP-Socket bindet, so daß die Kommunikation zwischen MTA und MILTER über das Netwerk erfolgen kann.
Diese Konfiguration hat den Nachteil, daß der eigentiche Mailtransport von einem weiteren Host abhängig ist.
Eine andere Möglichkeit ist die Konfiguration des MILTER Daemons auf dem MTA und die Übertragung der E-Mails per SMTP zum Archivierungssystem. Hier wird auf dem Benno MailArchiv Host wird das Paket benno-smtp installiert. Das Paket enthält den SMTP Daemon, der über Port 2500 eingelieferte E-Mails werden ohne Veränderung im Benno Import Verzeichnis speichert.
Auf dem MTA-Host muss der Hostname (BENNOHOST=) des Archivierungs-Systems in der Datei /etc/default/benno-milter konfiguriert werden.
# # Start options for benno-milter # SOCKET=/var/spool/postfix/benno-milter/benno-milter.sock SPOOLDIR=/srv/benno/inbox #BENNOHOST=your.benno-archive.host
Danach wird die Übertragung per Cron-Job in /etc/cron.d/benno-milter
durch entkommentieren des Kommandos aktiviert.
# # Import mails from maildump milter # #*/15 * * * * benno /usr/sbin/benno-export2archive
Dieser Cron-Job ruft letztendlich das Programm benno-milter2smtp auf, mit dem die E-Maildatein per SMTP übertragen werden.
Die X-REAL-* Header der Maildump-Dateien werden beim Versand entfernt und als Envelope-Informationen übertragen. Daher muss bei der Konfiguration von benno-smtp darauf geachtet werden, dass in der Konfigurationsdatei /etc/benno-smtp/benno-smtp.conf
die Einstellung envelope_header = true
gesetzt ist.
In einer Univention-Umgebung wird die MailArchiv App auf dem zentralen Mailserver angebunden. Zur Konfiguration werden die UCR-Variablen wie folgt gesetzt.
ucr set mail/postfix/mastercf/options/smtp/smtpd_milters=inet:benno-hostname:22500 ucr set mail/postfix/mastercf/options/smtp/milter_default_action=tempfail ucr set mail/postfix/mastercf/options/submission/smtpd_milters=inet:benno-hostname:22500 ucr set mail/postfix/mastercf/options/submission/milter_default_action=tempfail ucr set mail/postfix/mastercf/options/smtps/smtpd_milters=inet:benno-hostname:22500 ucr set mail/postfix/mastercf/options/smtps/milter_default_action=tempfail
Als Hostnamen kann der FQDN des Benno MailArchiv Systems oder die IP-Adresse angegeben werden.
Zur Aktivierung der Konfiguration ist ein Neustart von Postfix notwendig: systemctl restart postfix
Die Kommunikation zwischen MTA und Benno Mailarchiv per MILTER erfolgt unverschlüsselt. Falls sich der Mailserver und die Benno MailArchiv App auf der gleichen Maschine befinden, kann die Kommunikation auch über den Hostnamen localhost erfolgen.
Viele SPAM- und Virenfilter benötigen einen SMTP-Daemon, über den die analysierten E-Mails wieder in das System eingespeist werden. Die Konfiguration der MILTER-Anbindung in der Konfigurationsdatei main.cf wirkt sich global auf alle SMTP Dienste des Postfix aus. Damit wird eine E-Mail, die beide SMTP-Dienste durchläuft zweimal in das Archiv importiert. Jeder SMTP-Dienst fügt eigene Header hinzu, so dass sich die Checksumme der E-Mail ändert und diese dadurch nicht als Duplikat erkannt werden kann.
Achtung: Bei SPAM-Filterung per Amavis muss der MILTER für den smtpd auf Port 10025 deaktiviert werden, falls Amavis als Post-Queue Filter konfiguriert ist. Im Falle einer Pre-Queue Konfiguration können die -o smtpd_milters= und -o non_smtpd_milters= Konfigurationen entfallen.
127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o smtpd_authorized_xforward_hosts=127.0.0.0/8 -o strict_rfc821_envelopes=yes -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_milters= -o non_smtpd_milters=
Der MILTER wird durch die beiden „-o *_milters=“ Zeilen deaktiviert.
Alternativ zur Konfiguration in der „main.cf“ kann der MILTER auch in der Definition des SMTP Dienstes in der „master.cf“ konfiguriert werden. Diese Art der Konfiguration ist nicht ganz so einfach wie die der main.cf, bietet aber den Vorteil, dass der MILTER nicht versehentlich für mehrere SMTP Dienste aktiviert wird.
# ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== smtp inet n - - - - smtpd -o smtpd_milters=unix:/benno-milter/benno-milter.sock -o non_smtpd_milters=local:/benno-milter/benno-milter.sock -o milter_default_action=tempfail
Falls der submission-Port ebenfalls gebunden ist, muss die MILTER-Konfiguration hier ebenfalls eingefügt werden.
Bei Angabe des Pfades zum Socket ist die chroot Konfiguration des Dienstes wichtig. Falls chroot auf n gesetzt wird oder der Defaultwert in der Kommentarzeile mit n angegeben ist, muss der Pfad als kompletter Pfad zum Socket angegeben werden. Im Beispiel oben ist der Pfad relativ zum chroot-Verzeichnis konfiguriert.
Falls der MILTER Daemon auf einem vom SMTP-Service getrennten Host installiert werden soll, muss der MILTER Daemon an einen TCP-Socket gebunden werden. In der Konfigurationsdatei /etc/default/benno-milter
wird die Parameter
SOCKET_TYPE=inet SOCKET=22500@0.0.0.0
gesetzt. In der Postfix-Konfiguration werden die Pfade zum Socket durch die Angabe von Hostname/IP-Adresse und Port ersetzt:
smtpd_milters = inet:benno.lw-systems.net:22500 non_smtpd_milters = inet:benno.lw-systems.net:22500
Das vorcompilierte Programm kann einschließlich Init-Scripte und Beschreibung aus dem Tar-Archiv maildump-milter.tar.gz installiert werden.
Vor der Konfiguration des MILTER Daemons muss sichergestellt werden, dass das Spoolverzeichnis /srv/benno/inbox existiert. Dieses Verzeichnis sollte ist der Installation von Benno MailArchiv auf dem System angelegt worden. Falls der MILTER-Daemon auf einem anderen System installiert wird, muss das Verzeichnis nachträglich erstellt und der Benutzer benno angelegt werden. Dieser muss Schreibrechte auf dem Verzeichnis /srv/benno/inbox erhalten.
Auf einem Debian System wird das Paket benno-milter installiert. Dieses führt die Schritte zur Inbetriebnahme des MILTER Daemons automatisch durch.
useradd –system –gid postfix –shell /bin/false –home /srv/benno/inbox benno
adduser benno postfix
mkdir /srv/benno/inbox
chown benno.postfix /srv/benno/postfix
mkdir /var/spool/postfix/maildump-milter
chown benno.postfix /var/spool/postfix/maildump-milter
cp init.d/maildump-milter /etc/init.d/maildump-milter
update-rc.d maildump-milter start 05 2 3 4 5 . stop 01 0 1 6 .
cp default/maildump-milter /etc/default/maildump-milter
cp sbin/maildump-milter /usr/local/sbin/maildump-milter
/etc/init.d/maildump-milter start
Der main.cf werden die folgenden Zeilen hinzugefügt.
### Benno MailArchiv Milter smtpd_milters = unix:/maildump-milter/socket non_smtpd_milters = local:/maildump-milter/socket #milter_default_action = accept milter_default_action = tempfail ## if lmtp milter exist : # lmtpd_milters = unix:/maildump-milter/socket ### /Benno MailArchiv Milter
cp sbin/maildump2smtp /usr/local/sbin/maildump2smtp
cp sbin/benno-maildumpimport /usr/local/sbin/benno-maildumpimport
cp cron.d/benno-import /etc/cron.d/benno-import/