[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