[Postfixbuch-users] Interne Mails nicht prüfen
Patrick Ben Koetter
p at state-of-mind.de
Mo Mär 6 08:37:51 CET 2006
* Roland M. Kruggel <rk.liste at bbf7.de>:
> Am Montag, 6. März 2006 08:12 schrieb Andreas Winkelmann:
> > Am Monday 06 March 2006 08:06 schrieb Roland M. Kruggel:
> > > Ich habe postfix, amavis, spammassassin. (etch) Mails werden mit
> > > fetchmal geholt.
> > >
> > > Ein kleine Szenario:
> > > Fetchmail holet eine mail.
> > > Postfix mag sie nicht weil der body_checks/Header_checks positiv
> > > verkäuft. Postfix lehnt die mail ab und macht einen logeintrag.
> > >
> > > Bis hierher ist noch alles in Ordnung. Jetzt läuft logcheck. Er
> > > liest die logdatei mail.log baut den report zusammen und
> > > versendet ihn an mich. Da der zuvor abgelehnte body_check jetzt
> > > auch in der reportdatei steht, wird diese mail von postfix
> > > abgelehnt. Weil der body_check positiv verläuft.
> > >
> > > So. mist.
> > > Wie kann ich jatzt postfix sagen, daß er interne Mails nicht
> > > checkt? Er soll sie auch nicht an amavis weiterreichen.
> >
> > Erstelle einen zweiten SMTPD (Listener) in der master.cf, den Du
> > entsprechend anders konfigurierst. Wenn Du amavis benutzt, sollte
> > es bereits so einen geben, gemeinhin auf Port 10025. Sag Deinem
> > logcheck es soll Mails an diesen Port leiten. Wenn man dort keinen
> > Port angeben kann, benutze eine unterschiedlich IP.
>
> Ok. Das wäre eine Möglichkeit. Die greift dann jedoch nur für
> logckeck. Alles andere was intern läuft muss ich dann auch expliziet
> 'umbiegen'. Nicht gut. Gibt es in Postfix nicht eine einstellung in
> der ich sagen kann, das alles was intern versendet wird nicht
> gecheckt wird? Oder was an einen bestimmt User ausgeliefert wird
> nicht gecheckt wird. Die Systemmeldungen werden an einen speziellen
> User gesand.
Globales filtern ausschalten, filtern per Domain einschalten und das nach
eingehender und ausgehender Mail trennen:
3.3 E-Mails pro Empfänger-Domain filtern
Postfix kann E-Mails je nach eingehender Empfänger-Domain filtern. Dazu wird
der content_filter-Parameter nicht, wie in XREF angegeben, global in main.cf
gesetzt, sondern eine Map erstellt, die die zu prüfenden Empfänger-Domains
zusammen mit der FILTER-Aktion listet. Die folgende Beispiel-Map
/etc/postfix/filter_recipient_domains legt fest, dass für die Domain
example.com E-Mails an den Filter amavis gesendet werden sollen:
example.com FILTER amavis:[127.0.0.1]:10024
Mit dem Kommando postmap wird die Datei /etc/postfix/filter_recipient_domains
anschließend in eine indizierte Map umgewandelt:
# postmap /etc/postfix/filter_recipient_domains
Ein weiterer Aufruf des postmap-Kommandos testet die Map, indem es nach der
Domain example.com fragt; findet postmap den Domain-Namen, listet es die damit
verbundene Aktion auf:
# postmap -q "example.com" /etc/postfix/filter_recipient_domains
FILTER amavis:[127.0.0.1]:10024
Die getestete Map wird anschließend in die Liste der
smtpd_recipient_restrictions in main.cf eingebunden. Als Auslöser für die
Prüfung der Map dient dabei der Postfix check_recipient_access-Parameter; er
spricht auf den envelope-recipient an, den ein SMTP-Client in einer
SMTP-Session an Postfix übergeben hat.
Das folgende Beispiel bindet die Map so ein, dass sie auf alle Clients angewendet wird:
smtpd_recipient_restrictions =
...
check_recipient_access hash:/etc/postfix/filter_recipient_domains
...
permit_mynetworks
reject_unauth_destination
...
Dieses Beispiel bindet die Map so ein, dass nur Inhalte fremder (externer)
Clients, die eine zu überprüfende Empfänger-Domain angegeben haben, an
amavisd-new übergeben werden. Dies geschieht, indem vorher alle bekannte
(interne) Clients durch die permit_mynetworks-Restriktion, von einer weiterer
Auswertung der smtpd_recipient_restrictions ausgenommen werden:
smtpd_recipient_restrictions =
...
permit_mynetworks
reject_unauth_destination
check_recipient_access hash:/etc/postfix/filter_recipient_domains
...
3.4 E-Mails pro Sender-Domain filtern
Generell macht es wenig Sinn, E-Mails anhand der Sender-Domain zu filtern,
denn die Angabe der Sender-Domain im envelope-sender während einer
SMTP-Session kann auf das Einfachste gefälscht werden. Sinnvoll ist Filter pro
Sender-Domain nur dann, wenn nicht global gefiltert wird, aber sichergestellt
werden soll, dass alle ausgehenden E-Mails der eigenen Domain viren- und
spamfrei sind.
Die Konfiguration folgt im Wesentlichen den Angaben in XREF, nur dass zum
filtern pro Sender-Domain der check_recipient_access-Parameter durch den
check_sender_access-Parameter ausgetauscht wird. Eine Map, z.B.
/etc/postfix/filter_sender_domains, die das Filtern der Sender-Domain
example.com veranlassen soll, sieht wie folgt aus:
example.com FILTER amavis:[127.0.0.1]:10024
Nach der Konvertierung der map mit postmap /etc/postfix/filter_sender_domains,
wird die Map wie folgt in die smtpd_recipient_restrictions eingebaut:
smtpd_recipient_restrictions =
...
check_sender_access hash:/etc/postfix/filter_sender_domains
...
permit_mynetworks
reject_unauth_destination
...
Wichtig
Die Map muss vor permit_mynetworks geprüft werden, denn nur dann findet
sie auch Anwendung auf jene Clients, die aus mynetworks stammen.
HTH,
p at rick
--
Das »Postfix«-Buch
<http://www.postfix-buch.com>
saslfinger (debugging SMTP AUTH):
<http://postfix.state-of-mind.de/patrick.koetter/saslfinger/>
Mehr Informationen über die Mailingliste Postfixbuch-users