Marcin Rzepecki a écrit :
> Hello,
>
> I have configured DSPAM to act as a deamon and bind it to Postfix via
> LMTP:
> # forward to dspam
> smtp inet n - n - - smtpd
> -o content_filter=lmtp:unix:/var/run/dspam/sock
> # back route from dspam
> 127.0.0.1:10026 inet n - n - - smtpd
> -o content_filter= -o smtpd_authorized_xforward_hosts=127.0.0.0/8
> -o
> receive_override_options=no_unknown_recipient_checks,no_header_body_checks
> -o smtpd_helo_restrictions= -o smtpd_client_restrictions= -o
> smtpd_sender_restrictions=
> -o smtpd_recipient_restrictions=permit_mynetworks,reject -o
> mynetworks=127.0.0.0/8
>
> It works fine, but such configuration makes Postfix to filter all messages
> that
> are relayed to other domains too. That produces unneeded load and makes
> dspam to create new databases depend on message recipient, so it's very
> bad behavior :)
> How to make to filter only incoming mail for specific domains (e.g. from
> $my_destination) and let the other to be relayed without any checks?
>
[methdo 1]
configure dspam... for example, if using mysql as a backend, don't set
AUTO_INCREMENT in the "virtual users" table, or don't give dspam write
access to this table. dspam may complain in logs, but it's ok.
[method 2]
if you want skip filtering when mail comes from mynetworks when the user
was authenticated:
smtpd_sender_access =
check_client_access pcre:/etc/postfix/filter_msa
permit_mynetworks
permit_sasl_authenticated
check_client_access pcre:/etc/postfix/filter_default
== filter_msa:
/./ FILTER relay:[127.0.0.1]:10026
== filter_default
/./ FILTER lmtp:unix:/var/run/dspam/sock
[method 3]
if you want per recipient filtering, setup multiple instances and use
transport_maps to pass mail to the filter (no content_filter setting).
The reason this won't work with a single instance using content_filter
(or FITER) is because if mail has multiple recipients, only one filter
is selected.