Benutzer-Werkzeuge

Webseiten-Werkzeuge


mail-import_via_milter

Mail-Import via MILTER

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

  • X-REAL-MAILFROM
  • X-REAL-RCPTTO

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.

Installation aus Debian Package

Nachdem das Benno MailArchiv Repository konfiguriert wurde, wird das Paket benno-milter per apt installiert.

apt-get install benno-milter

Nach der Installation des Pakets wird der MILTER Daemon an Postfix angebunden.

Anbindung an 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.

/etc/postfix/main.cf

...
### 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.

Details der Anbindung

  • smtpd_milters - Pfad zum Socket des MILTER-Daemons für per SMTP eingehende E-Mails. Der Pfad wird relativ zur chroot(2) Umgebung der Postfix-Installation angegeben.
  • non_smtpd_milters -Pfad zum Socket des MILTER-Daemons für E-Mails, die per sendmail(1) in das System eingespeist werden.
  • milter_default_action - Verhalten des Systems, falls eine MILTER-Komponente nicht verfügbar ist.
  • lmtpd_milters - Anbindung eines MILTERS an den Daemon zur Auslieferung von Mails in lokale Mailboxen. Wird hier nicht benötigt.

Besonderheiten / spezielle Konfigurationen

Postfix ist ein sehr flexibel konfigurierbarer Mailserver. Daher muss die individuelle Konfiguration der Anbindung des MILTERS in einigen Fällen von den hier aufgeführten Beispielen abweichen. Wir haben hier einige häufig auftretende Anwendungsfälle aufgeführt.

Anbindung bei getrenntem Benno MailArchiv Host

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.

benno-smtp

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

benno-milter2smtp

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.

Univention Mailserver

Ein Univention-Setup mit einem einzelnen Server für Benno MailArchiv erfordert die Installation des benno-milter Pakets direkt auf dem UCS Mailserver. Hier wird das Repository von Benno MailArchiv auf dem UCS System eingetragen und benno-milter installiert.

Die Konfiguration der Postfix-Anbindung wird mit Hilfe der Univention-Config-Registry durchgeführt.

ucr set mail/postfix/mastercf/options/smtp/smtpd_milters=unix:/var/spool/postfix/benno-milter/benno-milter.sock
ucr set mail/postfix/mastercf/options/smtp/milter_default_action=tempfail
ucr set mail/postfix/mastercf/options/smtps/smtpd_milters=unix:/var/spool/postfix/benno-milter/benno-milter.sock
ucr set mail/postfix/mastercf/options/smtps/milter_default_action=tempfail

MILTER für Amavis deaktivieren

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.

Alternative Anbindung in der "master.cf"

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.

MILTER per TCP-Socket

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

Manuelle Installation

Das vorcompilierte Programm kann einschließlich Init-Scripte und Beschreibung aus dem Tar-Archiv maildump-milter.tar.gz installiert werden.

Vorbereitung

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.

  1. useradd –system –gid postfix –shell /bin/false –home /srv/benno/inbox benno
  2. adduser benno postfix
  3. mkdir /srv/benno/inbox
  4. chown benno.postfix /srv/benno/postfix
  5. mkdir /var/spool/postfix/maildump-milter
  6. chown benno.postfix /var/spool/postfix/maildump-milter
  7. cp init.d/maildump-milter /etc/init.d/maildump-milter
  8. update-rc.d maildump-milter start 05 2 3 4 5 . stop 01 0 1 6 .
  9. cp default/maildump-milter /etc/default/maildump-milter
  10. cp sbin/maildump-milter /usr/local/sbin/maildump-milter
  11. /etc/init.d/maildump-milter start

Anbindung an Postfix

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

Installation der Scripte

  • 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/
mail-import_via_milter.txt · Zuletzt geändert: 2019/01/07 14:57 von lwsystems