[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