Hi,

I'd like to encourage people to take more advantage of DNSWL.

I'm currently converting DNSWL entries into trusted_networks and using
shortcircuited ALL_TRUSTED to reduce unnecessary processing. Also DNS checks
are reduced.

With only 'med' and 'high' entries, 15% of my traffic hits ALL_TRUSTED.
I just also added 'low' to the mix, since it seems to have pretty much
identical ratio with 'med'. It doubled the entry-count, so have to wait and
see how much it helps. In future the list will be just getting bigger..

This should be quite safe, since the spam occurences that I see from
whitelisted relays come mostly through some mailing-list things (poster IP
should be in Received-headers, thus ALL_TRUSTED wont hit). Also there is
some tiny amount of backscatter, but I use amavisd-new bounce killer feature
outside of SA for that.

Of course one could skip SA completely when receiving from a whitelisted
relay. It would perhaps pass little more spam, but it would be the optimal
setup performance wise.

Getting this to work in SA requires some customizing due to some
deficiencies. Don't try if you are not comfortable patching. You can use
3.2 and 3.3 (SVN). Memory usage is raised about 10-20MB.

1)

Make sure your internal_networks is set up, so external checks (relay
connecting to your MX and beyond) are done correctly. trusted_networks also
needs to contain all the same internal_networks entries. This is basic
stuff, check wiki etc.

2)

To prevent helo and dynamic checks getting borked, you need to always run
this after using sa-update:

perl -i -pe 's/Relays-Untrusted/Relays-External/' /var/spamassassin/*/*org/*

Some rules check untrusted when they should be checking external. Waiting to
be fixed, https://issues.apache.org/SpamAssassin/show_bug.cgi?id=5856

3)

So trusted relays are never checked in DNSBLs (like they are not supposed
to), apply "DNSEval.pm fixes" patch for 3.2 or the SVN ones for 3.3 from
https://issues.apache.org/SpamAssassin/show_bug.cgi?id=5856

4)

Comment out the offending line from NetSet.pm add_cidr(). Checking for
duplicate entries is too intensive for big lists:

https://issues.apache.org/SpamAssassin/show_bug.cgi?id=5931

(Note that it probably breaks exclusions "!1.2.3.4" if you are using such)

5)

To optionally reduce unneeded DNS queries on shortcircuiting, you can use
this hack:

https://issues.apache.org/SpamAssassin/show_bug.cgi?id=5930

6)

cf:

priority ALL_TRUSTED -10000
score ALL_TRUSTED -10
shortcircuit ALL_TRUSTED on

7)

Rsync dnswl data (see their page for info) and convert it:

perl -ne 'print "trusted_networks $1\n" if /^(\d[^;]+);\d+;(?:low|med|high);/i' 
\
 < generic-dnswl > dnswl_trusted.cf



That's it.. if you are trying, maybe give a shout here how it works.

It would be nice to see something like this built into SA in the future,
possibly even distributing all the entries daily with sa-update. In the
grand scale, I guess it would be easier to "enforce" users into this than
expecting them to do it at MTA level. Resources and FPs saved for everyone.

Cheers,
Henrik

Reply via email to