Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:postfix_centos_7_-_amavis_anbinden_filter

Postfix CentOS 7 - AMaViS anbinden (filter)

Postfix ist Wietse Venema's Mail-Server, welcher bei „IBM research“ als Alternative zum ehemals weit verbreiteten Programm Sendmail entwickelt wurde. Postfix erhebt den Anspruch ein schneller, einfach zu administrierender und sicherer Mail-Server zu sein.

AMaViS (A MAil Virus Scanner) ist ein Prüfprogramm, welches e-Mails auf SPAM und Viren untersucht und sich dabei externer Programme wie dem sehr bekannten SpamAssassin und z.B. ClamAV bedient und diese in sich selbst einbindet.

Voraussetzungen für nachfolgende Konfigurationen ist die Installation von AMaViS, wie dies unter nachfolgenden internen Link beschrieben ist:

:!: WICHTIG - Bei CentOS ab der Version 7.x ist Postfix in der Version 2.10.1 enthalten, was die Nutzung einiger Möglichkeiten neuerer Postfix Versionen verhindert. Deshalb soll Postfix aus nachfolgendem Drittanbieter-Repository installiert werden! - Siehe dazu den nachfolgenden internen Link:

Postfix wird von Wietse Venema entwickelt.

Ab hier werden zur Ausführung nachfolgender Befehle root-Rechte benötigt. Um der Benutzer root zu werden, melden Sie sich bitte als root-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root:

$ su -
Password:

Konfiguration: filter

Nachfolgende Änderungen werden an der Konfigurationsdatei

  • /etc/postfix/master.cf

durchgeführt, um eine Anbindung des Postfix an den AMaViS zu realisieren.

Dabei soll die Anbindung von Postfix an den AMaViS mit dem Verfahren

  • smtpd_proxy_filter
  • content_filter

erfolgen.

/etc/postfix/master.cf

Hier die Änderungen an der Konfigurationsdatei /etc/postfix/master.cf

(Nur relevanter Ausschnitt):

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
...
...
...
# Tachtler - new - 
# Outgoing traffic from trusted networks, with amavisd-new (altermime).
192.168.1.60:smtp      inet  n       -       n       -       -       smtpd
  -o content_filter=
  -o smtpd_proxy_filter=192.168.0.70:10024
  -o smtpd_client_connection_count_limit=4
  -o smtpd_proxy_options=speed_adjust
192.168.0.60:smtp      inet  n       -       n       -       -       smtpd
  -o content_filter=
  -o smtpd_proxy_filter=192.168.0.70:10024
  -o smtpd_client_connection_count_limit=4
  -o smtpd_proxy_options=speed_adjust
127.0.0.1:smtp      inet  n       -       n       -       -       smtpd
  -o content_filter=
  -o smtpd_proxy_filter=192.168.0.70:10024
  -o smtpd_client_connection_count_limit=4
  -o smtpd_proxy_options=speed_adjust
# Tachtler - new -
# Outgoing traffic, BACK from amavisd-new from smtpd_proxy_filter.
192.168.0.60:10025     inet  n       -       n       -       -       smtpd
  -o content_filter=
  -o smtpd_proxy_filter=
  -o smtpd_milters=
  -o smtpd_authorized_xforward_hosts=127.0.0.0/8,192.168.0.0/24,192.168.1.0/24,192.168.2.0/24,88.217.171.167/32
  -o smtpd_client_restrictions=
  -o smtpd_helo_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_relay_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o smtpd_data_restrictions=
  -o mynetworks=0.0.0.0/32,127.0.0.0/8,10.7.0.0/24,10.7.1.0/24,192.168.0.0/25,88.217.171.167/32
  -o receive_override_options=no_unknown_recipient_checks
# Tachtler - new -
# Outgoing traffic, BACK from amavisd-new from content_filter.
192.168.0.60:10027     inet  n       -       n       -       -       smtpd
  -o content_filter=
  -o smtpd_proxy_filter=
  -o smtpd_milters=
  -o smtpd_authorized_xforward_hosts=127.0.0.0/8,192.168.0.0/24,192.168.1.0/24,192.168.2.0/24,88.217.171.167/32
  -o smtpd_delay_reject=no
  -o smtpd_client_restrictions=
  -o smtpd_helo_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_relay_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o smtpd_data_restrictions=reject_unauth_pipelining
  -o smtpd_end_of_data_restrictions=
  -o smtpd_restriction_classes=
  -o mynetworks=0.0.0.0/32,127.0.0.0/8,10.7.0.0/24,10.7.1.0/24,192.168.0.0/25,88.217.171.167/32
  -o smtpd_error_sleep_time=0
  -o smtpd_soft_error_limit=1001
  -o smtpd_hard_error_limit=1000
  -o smtpd_client_connection_count_limit=0
  -o smtpd_client_connection_rate_limit=0
  -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters
  -o local_header_rewrite_clients=
...
...
...
# Tachtler - enabled - 
submission inet n       -       n       -       -       smtpd
  -o syslog_name=postfix/submission
  -o content_filter=lmtp:[192.168.0.70]:10026
  -o lmtp_use_tls=yes
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
  -o smtpd_recipient_restrictions=
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
...
...
...
pickup    unix  n       -       n       60      1       pickup
  -o content_filter=lmtp:[192.168.0.70]:10024
  -o lmtp_use_tls=yes
...

Nachfolgend Erklärungen zu den WICHTIGSTEN Konfigurationen:

  •   -o content_filter=

Deaktivieren der Weitergabe der auf diesem Weg eingelieferten e-Mails an weitere Filter.

  • smtpd_proxy_filter=192.168.0.70:10024

Die Option sorgt dafür, dass mit Angabe eines Hostnamen/IP-Adresse und TCP-Ports eine e-Mail an einen e-Mail-Filter-Proxy-Server weitergeleitet wird, hier z.B. AMaViS. AMaViS erhält die e-Mail vom Postfix SMTP-Server, um dann das Ergebnis zu einem weiteren Postfix SMTP-Server-Prozess wieder zurückzugeben.

  •   -o smtpd_milter=

Deaktivieren der Weitergabe der auf diesem Weg eingelieferten e-Mails an weitere Milter.

  • smtpd_client_connection_count_limit=4

Die Option beschränkt die Anzahl der gleichzeitige Verbindungen, die jeder Client auf diesen Service aufbauen kann. Die Option kann auf die Anzahl der maximalen AMaViS Prozesse max_servers gesetzt werden

  • smtpd_proxy_options=speed_adjust

Die Option sorgt dafür, dass hier eine Liste von Optionen angegeben werden kann, die steuert wie der Postfix SMTP-Server mit einem „Pre-Queue“ - smtpd_proxy_filter - Inhaltsfilter kommuniziert.

speed_adjust bewirkt, dass das erst eine Verbindung zum Content Filter, hier AMaViS aufgebaut wird, wenn die gesamte Nachricht empfangen wurde. Dies reduziert die Anzahl der gleichzeitig „Pre-Queue“ - smtpd_proxy_filter - Inhaltsfilterprozesse.

  • 192.168.0.60:10025     inet  n       -       n       -       -       smtpd

Festlegung auf welcher IP-Adresse und welchem Port ein weiterer smtpd-Dienst/Daemon des Postfix läuft, um e-Mails entgegenzunehmen, welche von AMaViS bereits überprüft wurden. Dies ist erforderlich, dass keine e-Mail-Schleife entsteht und bei der Einlieferung nicht noch einmal alle Überprüfungen der e-Mail durchgeführt werden!

  •   -o smtpd_authorized_xforward_hosts=127.0.0.0/8,192.168.0.0/24,192.168.1.0/24,192.168.2.0/24,88.217.171.167/32

Angabe von Clients, welche die XFORWARD Funktion nützen dürfen. Siehe auch:

  •   -o smtpd_client_restrictions=
      -o smtpd_helo_restrictions=
      -o smtpd_sender_restrictions=
      -o smtpd_relay_restrictions=
      -o smtpd_recipient_restrictions=permit_mynetworks,reject
      -o smtpd_data_restrictions=
  •   -o smtpd_data_restrictions=reject_unauth_pipelining

Setzen der einzelnen Restrictions auf leeren Inhalt, somit finden keinerlei Prüfungen bei der Wiedereinlieferung nach Postfix statt. Eine bzw. zwei Ausnahmen von diesen Regelungen bestehen bei den smtpd_recipient_restrictions=permit_mynetworks,reject, was sicherstellt, dass nur Clients aus mynetworks auf Postfix Wiedereinliefern dürfen und bei smtpd_data_restrictions=reject_unauth_pipelining das PIPELINING deaktiviert ist!

  •   -o mynetworks=0.0.0.0/32,127.0.0.0/8,192.168.0.0/24,192.168.1.0/24,192.168.2.0/24,88.217.171.167/32

Definition von mynetworks, kann für die Wiedereinlieferung nach Postfix von den sonstigen Definitionen für mynetworks abweichen.

  •   -o receive_override_options=no_unknown_recipient_checks
  •   -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters

Keine Überprüfung von Empfängern, dies sollte bei der Wiedereinlieferung nach Postfix durch AMaViS gesetzt sein, um keine unnötige Überprüfungen durchzuführen, da dies ggf. dann auch fehlschlagen könnte.

  •   -o content_filter=lmtp:[192.168.0.70]:10024
  •   -o content_filter=lmtp:[192.168.0.70]:10026

Dies kann für die Einlieferung von e-Mails, welche lokal auf dem Server mit Postfix erzeugt werden, z.B. via /etc/cron.daily Skripten genutzt werden. In diesem Fall werden die e-Mail via pickup bei Postfix eingeliefert und können so auch an AMaViS, jedoch nicht via MILTER eingeliefert werden.

:!: WICHTIG - Falls dies zum Einsatz kommt, muss im AMaViS in der Konfigurationsdatei /etc/amavisd/amavisd.conf der Parameter

$forward_method = 'smtp:[192.168.0.60]:10025';
bzw.
$forward_method = 'smtp:[192.168.0.60]:10027';
gesetzt werden, da sonst bei der Weitergabe der e-Mail nach AMaViS über die Methode „Post-Queue“ - content_filter der Rückweg zu Postfix nicht mehr funktionieren würde, was bei einer reinen Einlieferung via MILTER nicht erforderlich wäre. Nachfolgende Fehlermeldungen würden erscheinen:
Oct 15 09:50:15 server70 amavis[3639]: (03639-01) (!!)TROUBLE in process_request: NOT ALL RECIPIENTS DONE, 
EMPTY DELIVERY_METHOD! at (eval 93) line 1184.
Oct 15 09:50:15 server70 amavis[3639]: (03639-01) (!)Requesting process rundown after fatal error
Oct 15 09:50:15 server70 amavis[3639]: (03639-01) (!)TempDir removal: tempdir is to be PRESERVED: 
/var/spool/amavisd/tmp/amavis-20151015T095010-03239-XVCbqPsd
und die Zustellung wäre nicht erfolgreich, was auch in der LOG-Datei von Postfix mit einem temporären Fehler zu sehen wäre, wie nachfolgender LOG-Datei-Ausschnitt zeigt:
...
Oct 15 09:39:16 server60 postfix/lmtp[31788]: 905B4180008F: to=<klaus@tachtler.net>, orig_to=<root>, 
relay=192.168.0.70[192.168.0.70]:10024, delay=22626, delays=22
620/0.04/0.01/5.6, dsn=4.3.2, status=deferred (host 192.168.0.70[192.168.0.70] said: 421 4.3.2 Service 
shutting down, closing channel (in reply to end of DATA command))
...

  •   -o lmtp_use_tls=yes

:!: WICHTIG - Versucht eine TLS verschlüsselte Verbindung zu initiieren, dies ist aber nur möglich, wenn der Empfangende Server dies auch unterstützt !!!

Neustart

Falls vorstehende Änderungen (natürlich an die jeweiligen Bedürfnisse angepasst) durchgeführt wurden, muss ein Neustart von Postfix durchgeführt werden.

Danach kann der postfix-Server mit nachfolgendem Befehle neu gestartet werden:

# systemctl restart postfix

Mit nachfolgendem Befehl kann der Status des abgefragt werden:

# systemctl status postfix
postfix.service - Postfix Mail Transport Agent
   Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled)
   Active: active (running) since Thu 2015-10-15 11:11:26 CEST; 7s ago
  Process: 1128 ExecStop=/usr/sbin/postfix stop (code=exited, status=0/SUCCESS)
  Process: 1144 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS)
  Process: 1141 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)
  Process: 1138 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS)
 Main PID: 1216 (master)
   CGroup: /system.slice/postfix.service
           ├─1216 /usr/libexec/postfix/master -w
           ├─1217 pickup -l -t unix -u -o content_filter=lmtp:[192.168.0.70]...
           └─1218 qmgr -l -t unix -u

Oct 15 11:11:26 server60.idmz.tachtler.net systemd[1]: Starting Postfix Mail...
Oct 15 11:11:26 server60.idmz.tachtler.net postfix/postfix-script[1214]: sta...
Oct 15 11:11:26 server60.idmz.tachtler.net postfix/master[1216]: daemon star...
Oct 15 11:11:26 server60.idmz.tachtler.net systemd[1]: Started Postfix Mail ...
Hint: Some lines were ellipsized, use -l to show in full.

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
tachtler/postfix_centos_7_-_amavis_anbinden_filter.txt · Zuletzt geändert: 2015/10/26 12:33 von klaus