There seem to be an abundance of DNSBLs out there nowadays. Here are my observations on two, and an implementation question. The Good, the Bad and the Ugly:
GBUdb.com's truncated list (http://www.gbudb.com/truncate/) went public in May and seems to work very well, catching a lot of things missed by other RBLs, with <1% false positives. YMMV. It's related to Message Sniffer, a commercial anti-spam package, and is fully automated (no user submissions). I'd hazard that a starting score of 2.0 might be appropriate. header RCVD_IN_GBUDB_TRUNC eval:check_rbl('trunc-firsttrusted', 'truncate.gbudb.net.') describe RCVD_IN_GBUDB_TRUNC Connecting IP in truncate.gbudb.net. score RCVD_IN_GBUDB_TRUNC 1.5 tflags RCVD_IN_GBUDB_TRUNC net I've also had good experiences with bl.mailspike.net and the dynamic and noptr lists on spamrats (all.spamrats.com 127.0.0.3[67]). WPBL seems to be less useful than two years ago, with too many FPs. QUORUM.TO is a recent project of Julian Haight, creator of SpamAssassin. Some data is commercial, but there's also a public list, described at http://www.quorum.to/publicbl.html. I'm disappointed by my tests so far, showing its "base rule" as very fuzzy in distinguishing between ham and spam. In addition, quorum.to doesn't follow RFC 5782 convention, for example in its negative response to 2.0.0.127.list.quorum.to. In fact, I was most hopeful of using it as a cleanlist of hosts that had deliberately validated themselves, as it gives a positive response (127.0.0.0) for IPv4 addresses it has no data for. I've been trying it out with the following rules, but I wouldn't suggest anyone else does at the moment: header __RCVD_IN_QUORUM eval:check_rbl('quorum-firsttrusted', 'list.quorum.to.') describe __RCVD_IN_QUORUM Connecting IP in list.quorum.to. tflags __RCVD_IN_QUORUM net header RCVD_IN_QUORUM_BLOCK eval:check_rbl_sub('quorum-firsttrusted', '^127\.0\.0\.2$') describe RCVD_IN_QUORUM_BLOCK Connecting IP failed quorum.to tests score RCVD_IN_QUORUM_BLOCK 0.1 tflags RCVD_IN_QUORUM_BLOCK net header RCVD_IN_QUORUM_REJECT eval:check_rbl_sub('quorum-firsttrusted', '^127\.0\.0\.[45]$') describe RCVD_IN_QUORUM_REJECT quorum.to has been asked to dirtylist connecting IP score RCVD_IN_QUORUM_REJECT 0.01 tflags RCVD_IN_QUORUM_REJECT net meta RCVD_IN_QUORUM_GOOD (! __RCVD_IN_QUORUM) describe RCVD_IN_QUORUM_GOOD Connecting IP not listed on quorum.to (or servfail) score RCVD_IN_QUORUM_GOOD -0.1 tflags RCVD_IN_QUORUM_GOOD net As you can see, the only way to turn use it as a list of clean IPs is to negate any response. My problem, rather theoretical, is that as well as catching an NXDOMAIN response, the cleanlisting (RCVD_IN_QUORUM_GOOD) will trigger on bad configuration (SERVFAIL) or network problems, and it appears SA's Dns module treats all those conditions the same. Intuitively, I'd like to be able to do something like (invalid code follows): header RCVD_IN_QUORUM_GOOD2 eval:check_rbl_sub('quorum-firsttrusted', 'NXDOMAIN') or maybe header RCVD_IN_QUORUM_GOOD2 eval:check_rbl_sub('quorum-firsttrusted', '^$') Does anyone else think work on providing such a facility for negative cleanlists might be worthwhile? CK