kb

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste Überarbeitung Beide Seiten der Revision
kb [2012/01/06 14:01]
flacco
kb [2012/01/06 16:55]
flacco
Zeile 240: Zeile 240:
  
 Eingetragen werden muss an dieser Stelle die lokale Domain des Servers. Eingetragen werden muss an dieser Stelle die lokale Domain des Servers.
 +
 +==== Postfix - Mail-Annahme====
 +
 +Postfix spielt die zentrale Rolle im gesamten Mail-Setup.
 +
 +Da wir es bezogen auf ein invis-Server-Setup "​lediglich"​ mit einem Mailserver in einem lokalen Netzwerk zu tun haben, werden die in der Grafik genannten Restrictions nicht konfiguriert. Unser Server bekommt emails entweder nur via //​**fetchmail**//​ oder von lokalen Benutzern eingeliefert. In beiden Fällen ist das Einliefern von Mails ohne Beschränkung erlaubt.
 +
 +Zunächst muss Postfix der eigene Zuständigkeitsbereich bekannt gemacht werden. Die zugehörigen Einstellungen werden in <​file>/​etc/​postfix/​main.cf</​file>​ vorgenommen.
 +
 +Die notwendigen Konfigurationen:​
 +
 +<​code>​
 +# INTERNET HOST AND DOMAIN NAMES
 +myhostname = server.invis-net.loc
 +
 +mydomain = invis-net.loc
 +masquerade_domains = $mydomain
 +
 +# SENDING MAIL
 +myorigin = $mydomain
 +
 +# RECEIVING MAIL
 +inet_interfaces = $myhostname,​ localhost
 +....
 +mydestination = $myhostname,​ $mydomain, localhost.$mydomain,​ localhost
 +</​code>​
 +
 +Dabei legt //​myhostname//​ den lokal gültigen FQDN und //​mydomain//​ die lokale Domain des Servers fest. Die Option //​myorigin//​ definiert beim Versand von Mails die Absende-Domain,​ so nicht angegeben. Die Option //​masquerade_domains//​ maskiert Subdomains oder Hostnamen in Email-Adressen mit der dahinter angegebenen Domain. D.h. Wird eine Mail von "​host1.invis-net.loc"​ versandt so würde Postfix im gezeigten Beispiel daraus schlicht "​invis-net.loc"​ machen. Emails versendende Hosts im lokalen Netz würden also hinter der lokalen Domain "​versteckt"​.
 +
 +Dies kann als zusätzliche Sicherheitsmaßnahme verstanden werden, die dabei hilft, das lokale Mailrouting vor Fehlern zu schützen.
 +
 +Über die Option //​inet_interfaces//​ wird festgelegt, auf welchen Netzwerkschnittstellen Postfix überhaupt Mails annimmt. Die hier getroffene Einstellung erlaubt die Annahme nur auf der Loopback-Schnittstelle sowie allen Schnittstellen denen der eigene FQDN zugewiesen wird. In der Praxis wird hier häufig einfach der Wert "​all"​ angegeben, was bedeutet, das Postfix die Einlieferung von Mails auf allen Schnittstellen des Servers erlaubt. Dies schließt auch das externe, mit dem Internet verbundene Netzwerk-Device mit ein. In Kombination mit einer fehlerhaft konfigurierten Firewall, kann das durchaus dazu führen, dass der Server von unerlaubter Seite als Mail-Relay missbraucht werden könnte.
 +
 +Die Option //​mydestination//​ legt die Ziele fest, für die Postfix Endpunkt der Email-Zustellung,​ also nicht weiterleitendes "​Relay"​ ist.
 +
 +Nach der Annahme einer Mail, muss diese an AMaViS weitergegeben werden. Für die Einbindung von AMaViS als Viren- und Spam-Filter stehen mit "​content_filter"​ und "​smtpd_filter_proxy"​ zwei deutlich unterschiedliche Wege zur Verfügung. Während sich AMaViS mit der "​smtpd_filter_proxy"​ Methode direkt in die Einliefernde SMTP-Sitzung einklinkt und diese bis zum Abschluss der Prüfung offen hält, schließt sich die "​content_filter"​ Methode an die erfolgte Einlieferung an. Ist auf einem Internet-Mailserver Methode 1 die deutlich bessere, da hier "​verseuchte"​ gar nicht erst angenommen werden, so macht dieses Vorgehen auf einem invis-Server keinen Sinn, da die Mails hier vom lokalen Fetchmail-Dienst eingeliefert werden und somit eine Blockade nicht Zielführend ist.
 +
 +Die Einbindung von AMaVis als Content-Filter findet an zwei Stellen im Postfix-Setup statt. In der Datei "​main.cf"​ erfolgt die eigentliche Integration des Filters durch Benennung eines "​Transportweges",​ welcher in <​file>/​etc/​postfix/​master.cf</​file>​ konfiguriert wird. Zunächst die Datei "​main.cf":​
 +
 +<​code>​
 +## Virenscanner
 +content_filter=smtp-amavis:​[127.0.0.1]:​10024
 +</​code>​
 +
 +Hier wird festgelegt, dass alle auf "​normalem"​ Wege eingehenden Mails über die Adresse 127.0.0.1 auf Port "​10024"​ dem Content-Filter zugeführt werden. Der eigentliche Transportweg wird hier mit "​smtp-amavis"​ benannt. Damit Postfix weiß, was es mit diesem Transport weg auf sich hat, muss dieser wie gesagt in der Datei "​master.cf"​ konfiguriert werden:
 +
 +<​code>​
 +# Weitergabe an Amavis (betrifft nur content_filter,​ nicht smtp_proxy_filter)
 +smtp-amavis ​    ​unix ​   -       ​- ​      ​y ​      ​- ​      ​2 ​      smtp
 +    -o smtp_data_done_timeout=1200
 +    -o smtp_send_xforward_command=yes
 +    -o disable_dns_lookups=yes
 +    -o max_use=20
 +</​code>​
 +
 +Wichtig hierbei sind vor allem die beiden Angaben in Zeile eins. Postfix wird mitgeteilt, dass die Weiterleitung per "​smtp"​ erfolgt und maximal zwei parallele Sitzungen gleichzeitig geöffnet werden dürfen. Die Anzahl der maximalen SMTP-Verbindungen kann in Abhängigkeit der lokalen Rechenleistung und dem Mail-Aufkommen variiert werden. In der Konfiguration des AMaViS-Dienstes befindet sich ein korrespondierender Parameter, der mindestens auf den gleichen Wert eingestellt sein muss.
 +
 +Die nachfolgenden Optionen im Einzelnen:
 +  * **smtp_data_done_timeout**:​ Timeout, nachdem die Weitergabe abgebrochen wird. Die Einstellung hier ist mit 1200 Sekunden doppelt so hoch wie der Vorgabewert,​ kann ja sein, dass AMaViS mal länger braucht. ;-)
 +  * **smtp_send_xforward_command**:​ Die Daten der einliefernden Sitzung wie Name, Adresse, Protokoll und HELO Name des original SMTP-Clients werden einfach an den Content-Filter weitergereicht.
 +  * **disable_dns_lookups**:​ Es werden zur Ermittlung des Endpunkts keine DNS-Anfragen gestartet. Da ja ohnehin die IP-Adresse angegeben wurde ist das auch nicht notwendig.
 +  * **max_use**:​ Postfix erlaubt maximal X eingehende Verbindungen für diesen Transportweg.
 +Von Bedeutung ist hier vor allem das "​xforward"​ Kommando, da die darüber an AMaViS übermittelten Informationen in die SPAM-Bewertung einfließen können.
 +
 +==== AMaViS ====
 +
 +In der AMaViS-Konfiguration müssen keine besonderen Einstellungen für Annahme und Rückgabe der Mails vorgenommen werden, da die bisher besprochenen Transportwege den Standard-Vorgaben von AMaViS entsprechen.
 +
 +Wichtig ist allerdings die Konfiguration des lokalen Host-Namens sowie der lokalen Domain in der Datei <​file>/​etc/​amavisd.conf</​file>​
 +
 +//​**Hinweis:​** Bei der Datei handelt es sich um eine Perl-Datei, es ist also besonders auf korrekte Syntax zu achten.//
 +
 +<​code>​
 +##​invis-server.org -- Default-Settings
 +$mydomain = '​julgs-net.loc'; ​     # (no useful default)
 +
 +$myhostname = '​zentrale.julgs-net.loc'; ​ # fqdn of this host, default by uname(3)
 +</​code>​
 +
 +Sollte der Weg der Rücklieferung vom Standard abweichen, müssen die folgenden Zeilen vom Kommentarzeichen befreit und entsprechend den Gegebenheiten angepasst werden:
 +
 +<​code>​
 +#​$forward_method = '​smtp:​[127.0.0.1]:​10025'; ​ # where to forward checked mail
 +#​$notify_method = $forward_method; ​           # where to submit notifications
 +</​code>​
 +
 +Weiterhin ist darauf zu achten, dass die Anzahl der maximal gestarteten AMaViS-Prozessen gleich oder größer der für Postfix vorgenommenen Einstellung ist. Der im Beispiel genannte Wert war "​2":​
 +
 +<​code>​
 +$max_servers = 2;     # num of pre-forked children (2..30 is common), -m
 +</​code>​
 +
 +==== Postfix - Rücknahme und Weitergabe an Dovecot ====
 +
 +Postfix nimmt von AMaViS geprüfte und nicht beanstandete Mails auf Port "​10025"​ wieder entgegen. Auch hierfür muss in <​file>/​etc/​postfix/​master.cf</​file>​ ein Transportweg eingerichtet werden:
 +
 +<​code>​
 +## Ruecktransport von amavis an Postfix
 +localhost:​10025 inet    n       ​- ​      ​n ​      ​- ​      ​- ​      smtpd
 +  -o smtpd_tls_security_level=none
 +  -o content_filter=
 +  -o smtpd_proxy_filter=
 +  -o mynetworks=127.0.0.0/​8
 +  -o smtpd_recipient_restrictions=permit_mynetworks,​reject
 +</​code>​
 +
 +In Zeile 1 wird zunächst festgelegt, dass der Endpunkt dieses Transportweges ein SMTP-Dienst ist. Eine Beschränkung der maximalen Anzahl der Prozesse ist hier nicht notwendig, da hier ohnehin nur das ankommen kann was zuvor den bereits auf zwei max. Sitzungen beschränkten Weg durch AMaViS genommen hat. (Zugegeben, so ganz richtig ist das nicht, da durchaus auch andere Programme auf dem Server Mails auf 127.0.0.1:​10025 einliefern könnten.)
 +
 +Die weiteren Optionen im Einzelnen:
 +
 +  * **smtp_tls_security_level**:​ Da die gesamte Kommunikation über die Loopback-Schnittstelle des Servers läuft ist eine Verschlüsselung obsolet.
 +  * **content_filter** & **smtpd_proxy_filter**:​ Beiden Optionen ist kein Wert zugewiesen, was dazu führt, dass bei der Rücklieferung der Mails diese nicht in Form einer Endlosschleife wieder an AMaViS übergeben werden.
 +  * **mynetworks**:​ Legt das Netzwerk fest auf dem dieser Transportweg zur Verfügung steht. Hier werden die im normalen Postfix-Setup genannten Netzwerke auf dass Loopback-Netz beschränkt. Benötigt wird diese Einstellung vor allem für die nachfolgende Zeile.
 +  * **smtpd_recipient_restrictions**:​ Hiermit wird die Einlieferung von Mails auf den zuvor benannten Netzwerken ohne weitere Restriktionen erlaubt. Alle Einlieferungsversuche aus anderen Netzen jedoch unterbunden.
 +
  
  • kb.txt
  • Zuletzt geändert: 2020/10/20 10:47
  • von flacco