Postfwd firewall fuer postfix: Unterschied zwischen den Versionen

Aus
(→‎Voraussetzungen: funzen - funktionieren :-))
(→‎Intergration in Postfix: postgrey nicht vergessen!)
 
Zeile 46: Zeile 46:
</pre>
</pre>
Nach einem Reload des Postfix sollte der policy service in die Mailzustellung integriert sein
Nach einem Reload des Postfix sollte der policy service in die Mailzustellung integriert sein
Falls in der Postfix Konfiguration bereits greylist eingebunden wurde, muss dieser in eine eigene Regel ausgelagert werden, da es nur eine Einstellung für check_policy_service geben kann, die letzte Zuweisung würde die vorige(n) überschreiben. Daher legt man für postgrey dann eine eigene Regel an:
<pre>
...
smtpd_restriction_classes = greylist
greylist = check_policy_service inet:127.0.0.1:60000
...
</pre>
[[Category:Mailstation]]
[[Category:Mailstation]]
[[Category:Postfix]]
[[Category:Postfix]]

Aktuelle Version vom 23. März 2017, 11:25 Uhr

Postfwd - Postfix Firewall Daemon

Postfwd - Postfix Firewall Daemon - ist ein Policy Server, der wie eine Firewall für den Postfix Prozess agieren kann.

Voraussetzungen

  • Zugang auf die DS als root via telnet oder ssh
  • Umgang mit einem Konsoleneditor wie z.B. vi oder nano (via ipkg)
  • Perl installiert (ich habe es mit der ipkg Version gemacht, weiss aber nicht ob die Default Version auch funktionieren würde)
  • postfwd.pl
  • Perl Module:
    • Net::Server::Multiplex
    • Net::DNS

Diese Module sollte es in ipkg geben und sonst kann man sie von cpan direkt laden

perl -MCPAN -e shell
install <Module>

Installation

Wenn die benötigten Module vorhanden sind, dann kann man einfach das Perlscript runterladen und in einem beliebigen Verzeichnis auf der DS speichern. Zusätzlich zum Perlscript muss eine Config Datei erstellt werden (beliebiger Name und Verzeichnis, der Einfachheit halber am besten postfwd.cf im gleichen Verzeichnis wie das Perlscript) Beim Perlscript muss man ggf den Pfad zum Perl Interpreter noch anpassen v.a. wenn man die ipkg Version von Perl verwendet (erste Zeile im Perlscript)
Damit ist die Installation auch schon abgeschlossen

Konfiguration

Damit postfwd überhaupt weiss was zu tun ist, müssen im Config File Regeln und Aktionen definiert sein. Die Regeln und Aktionen in postfwd sind ein sehr sehr umfangreiches Thema. Es hat jedoch in der Doc einige Beispiele. (z.B. [1] und [2])

Grundsätzlich ist eine Regel so aufgebaut

id=RULE-02 ;  sender==$$recipient ;  action=REJECT not allowed

id ist eine beliebige Zeichenfolge. Sollte jedoch im Config File eindeutig sein. Danach folgt die Bedingung (hier Senderadresse gleich Empfängeradresse) und danach die durchzuführende Aktion.

Dabei ist wichtig zu verstehen, dass nicht postfwd die Email verwirft, sondern die Aktion an Postfix zurückmeldet und dieser dann die Email ablehnt. Bei action= kann also alles übergeben werden, was Postfix an Aktionen kennt (z.B. DEFER, OK, REJECT oder auch nummerische Fehlercodes z.B. 550 oder 450 oder auch eine selber definierte Postfix Aktion, dazu mehr beim Beitrag zu Postgrey).

Starten

Damit postfwd losrennen kann muss er auch gestartet werden. Das geht mit folgendem Befehl relativ einfach

/path/to/postfwd -d -f /path/to/postfwd.cf

Per default startet postfwd unter dem User nobody und lauscht auf Port 10040. Ob alles geklappt hat könnt ihr z.B. so prüfen

netstat -an | grep 10040

Intergration in Postfix

Damit der Postfix Server diesen Daemon auch verwenden kann muss man Postfix in dessen Konfig noch beibringen, diesen zu verwenden. Das geschieht in der main.cf unter dem Parameter smtpd_recipient_restrictions z.B.

smtpd_recipient_restrictions = ... ,
check_policy_service = inet:127.0.0.1:10040,
...

Nach einem Reload des Postfix sollte der policy service in die Mailzustellung integriert sein

Falls in der Postfix Konfiguration bereits greylist eingebunden wurde, muss dieser in eine eigene Regel ausgelagert werden, da es nur eine Einstellung für check_policy_service geben kann, die letzte Zuweisung würde die vorige(n) überschreiben. Daher legt man für postgrey dann eine eigene Regel an:

...
smtpd_restriction_classes = greylist
greylist = check_policy_service inet:127.0.0.1:60000
...