[Postfixbuch-users] Sind content_filter auch über smtpd_*_restrictions oder smtpd_restriction_classes steuerbar?

Achim Lammerts ml-pbu at admin.syntaxys.net
Mo Aug 21 19:32:31 CEST 2006


Hallo,

dank Patricks Tipp konnte ich mir am Wochenende die gewünschte 
Filter-Strategie ausarbeiten. Jetzt können vertrauenswürdige Quellen am 
Virenscanner oder Spamfilter vorbei in die Mailboxen sortiert werden, 
was den Vorteil einer homogeneren Black/Whitelist-Verwaltung und eine 
geringere Serverlast bringt. Hier die Lösung:


Eingehende Mails werden wie bisher gegen die diversen restrictions geprüft.

> smtpd_client_restrictions = reject_unauth_pipelining
>
> smtpd_helo_restrictions = check_helo_access 
> regexp:/etc/postfix/userConf/helo_checks
>
> smtpd_sender_restrictions =
>
> smtpd_recipient_restrictions =
>     permit_sasl_authenticated,
>     permit_mynetworks,
>     reject_unauth_destination,
>     reject_non_fqdn_recipient,
>     reject_unknown_recipient_domain,
>     check_sender_access regexp:/etc/postfix/userConf/sender-checks,
>     check_recipient_access regexp:/etc/postfix/userConf/recipient-checks,
>     permit
>
> smtpd_restriction_classes =
>     greylisting,
>     spam_restrictions_rbl,
>     spam_restrictions_global
>    
> greylisting = check_policy_service inet:127.0.0.1:10023
>
> spam_restrictions_rbl =
>     reject_unknown_client,
>     reject_invalid_hostname,
>     reject_non_fqdn_hostname,
>     reject_unknown_sender_domain,
>     reject_non_fqdn_sender,
> #    reject_rhsbl_sender    dsn.rfc-ignorant.org,
>     reject_rbl_client    dnsbl.sorbs.net,
>     reject_rbl_client    combined.njabl.org,
>     reject_rbl_client    list.dsbl.org,
>     reject_rbl_client    cbl.abuseat.org,
>     reject_rbl_client    relays.ordb.org,
>     reject_rbl_client    sbl.spamhaus.org,
>     reject_rbl_client    bl.spamcop.net,
>     reject_rbl_client    opm.blitzed.org,
>     reject_rbl_client    dnsbl.net.au,
>     reject_rbl_client    dul.dnsbl.sorbs.net
>
> spam_restrictions_global =  check_client_access 
> pcre:/etc/postfix/dialups.pcre
>

Statt wie bisher den Rest, der durch kommt, in der main.cf an amavisd 
(Port 10024) weiter zu geben, landen die Mails in einer vorgeschalteten 
Instanz:

----------------------------------------------

content_filter = smtp:[127.0.0.1]:10020

-----------------------------------------------



In der master.cf wird hierfür ein Transport definiert:

-----------------------------------------------

localhost:10020 inet    n    -    n    -    -    smtpd
    -o mynetworks=127.0.0.0/8
    -o smtp_send_xforward_command=yes
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o smtpd_restriction_classes=filterFork_by_sender
    -o smtpd_client_restrictions=
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=filterFork_by_sender
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o content_filter=
    -o disable_dns_lookups=yes
    -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

-----------------------------------------------



sowie ein alternativer Transport der ohne weitere Filter zur Mailbox führt:

-----------------------------------------------

localhost:10021 inet    n    -    n    -    -    smtpd
    -o mynetworks=127.0.0.0/8
    -o smtp_send_xforward_command=yes
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o smtpd_restriction_classes=
    -o smtpd_helo_restrictions=
    -o smtpd_client_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -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
    -o disable_dns_lookups=yes
    -o content_filter=

-----------------------------------------------



und die restriction-Klasse in der main.cf:

-----------------------------------------------

filterFork_by_sender =

    check_sender_access regexp:/etc/postfix/userConf/filterFork_by_sender

-----------------------------------------------



In dieser acces table kann nun definiert werden, wie die Mails weiter 
behandelt werden:

-----------------------------------------------

# Ausnahmen

/^root at server\.(domain1|domain2)\.tld$/    FILTER smtp:[127.0.0.1]:10021
# alle sonstigen Sender
/^.*@.*$/                    FILTER smtp-amavis:[127.0.0.1]:10024

-----------------------------------------------



Normalerweise könnte man gegen die access table auch schon in der ersten 
Instanz prüfen, aber in einer solchen Konfiguration wird bei mir der 
amavisd-Filter wohl auch dann ausgelöst, wenn die Mail von postgrey 
schon zurückgewiesen wurde. Zumindest steht im log:

-----------------------------------------------

Aug 21 18:57:57 salamucha postfix/smtpd[14507]: NOQUEUE: filter: RCPT 
from hccdb6a8bf1.bai.ne.jp[219.106.139.241]: <877huzur at chocofan.com>: 
Sender address triggers FILTER smtp-amavis:[127.0.0.1]:10024; 
from=<877huzur at chocofan.com> to=<xxxx at xxxx.de> proto=SMTP 
helo=<hccdb6a8bf1.bai.ne.jp>
Aug 21 18:57:57 salamucha postfix/smtpd[14507]: NOQUEUE: reject: RCPT 
from hccdb6a8bf1.bai.ne.jp[219.106.139.241]: 450 <xxxx at xxxx.de>: 
Recipient address rejected: Greylisted, see 
http://isg.ee.ethz.ch/tools/postgrey/help/xxxx.de.html; 
from=<877huzur at chocofan.com> to=<xxxx at xxxx.de> proto=SMTP 
helo=<hccdb6a8bf1.bai.ne.jp>

-----------------------------------------------



Es läuft zwar alles prächtig, aber für Feedback bzgl. weiterer 
Optimierung wäre ich dankbar. Zum Beispiel wüsste ich gerne, wie ich 
statt auf localhost:10021 die Mail nochmals an Postfix zu übergeben, 
diese gleich an den MDA ausliefern kann. Geht das auch?


Ciao

Achim




Mehr Informationen über die Mailingliste Postfixbuch-users