This is an old version of the document!
For connecting Benno MailArchiv to Unix-like email systems, we recommend the MILTER interface.
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
These headers are configured by default in the archiver as “<senderheaders /> “ or “<recipientheaders /> They are also listed as “<secretheaders /> “ marked so that they are not displayed when an email is viewed.
On Debian and Debian-based systems, the basic installation is performed directly from the benno-milter in the repository. Afterwards, only the connection of the Postfix configuration necessary.
On other systems, manual installation should be performed.
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.
If multiple systems are connected as import sources, the notes for the multi-import configuration be observed.
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.
The package will then be installed.
apt-get install benno-milter
After installing the package, the MILTER daemon is connected to Postfix.
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 MailArchive Milter smtpd_milters = unix:/benno-milter/benno-milter.sock non_smtpd_milters = local:/benno-milter/benno-milter.sock milter_default_action = tempfail ### /Benno MailArchive 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.
Falls der MILTER Daemon auf einem vom SMTP-Service getrennten Host installiert werden soll, muss der MILTER Daemon an einen TCP-Socket gebunden werden und der Deamon muss nicht mit der Gruppe postfix gestartet werden. Hierfür wird vom Pre-Install Script des Pakets die Override-Datei /etc/systemd/system/benno-milter.service.d/override.conf angelegt.
In the Postfix configuration, the paths to the socket are replaced by specifying the hostname/IP address and port:
smtpd_milters = inet:benno.lw-systems.net:22500 non_smtpd_milters = inet:benno.lw-systems.net:22500
During package installation, the system checks whether the Postfix spool directory exists. If so, the MILTER daemon is configured to connect via a Unix domain socket. Otherwise, the connection is configured via a TCP socket.
In the case of a logical separation between the MTA and the archiving system, the emails must be transferred to the archiving system and stored there unchanged.
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.
This configuration has the disadvantage that the actual mail transport depends on another host.
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.
On the MTA host, the hostname ( BENNOHOST= ) of the archiving system must be configured in the file /etc/default/benno-milter
# # 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 a Univention environment, the MailArchiv app is connected to the central mail server. The UCR variables are set as follows for configuration.
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
The hostname can be the FQDN of the Benno MailArchiv system or the IP address.
To activate the configuration, a restart of Postfix is required: 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.
Many spam and virus filters require an SMTP daemon to feed the analyzed emails back into the system. Configuring the MILTER connection in the main.cf configuration file affects all Postfix SMTP services globally. This means that an email passing through both SMTP services will be imported into the archive twice. Each SMTP service adds its own headers, so the email's checksum changes, preventing it from being identified as a duplicate.
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=
The MILTER is deactivated by the two lines “-o *_milters=".
As an alternative to configuring it in "main.cf", MILTER can also be configured in the SMTP service definition in "master.cf". This type of configuration is not quite as straightforward as main.cf, but it offers the advantage of preventing MILTER from being accidentally enabled for multiple SMTP services.
# ============================================================================ # 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.
When specifying the path to the socket, the service's chroot configuration is important. If chroot is set to n , or if the default value is specified as n in the comment line , the path must be specified as the complete path to the socket. In the example above, the path is configured relative to the chroot directory.
The pre-compiled program, including init scripts and description, can be installed from the tar archive maildump-milter.tar.gz.
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 bennoadduser benno postfixmkdir /srv/benno/inboxchown benno.postfix /srv/benno/postfixmkdir /var/spool/postfix/maildump-milterchown benno.postfix /var/spool/postfix/maildump-miltercp init.d/maildump-milter /etc/init.d/maildump-milterupdate-rc.d maildump-milter start 05 2 3 4 5 . stop 01 0 1 6 .cp default/maildump-milter /etc/default/maildump-miltercp sbin/maildump-milter /usr/local/sbin/maildump-milter/etc/init.d/maildump-milter startThe following lines are added to main.cf.
### Benno MailArchive 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 exists : # lmtpd_milters = unix:/maildump-milter/socket ### /Benno MailArchive Milter
cp sbin/maildump2smtp /usr/local/sbin/maildump2smtpcp sbin/benno-maildumpimport /usr/local/sbin/benno-maildumpimportcp cron.d/benno-import /etc/cron.d/benno-import/