Re: Harvest netblocks of good MTAs from SPF for whitelisting from greylisting

"Constantine A. Murenin" <[email protected]> Tue, 12 Feb 2013 16:19:42 -0800
Newsgroups gmane.mail.spam.spf.discuss
Message-ID <CAPKkNb7soz8vpAdF-V6VXcvB2NR0ndCmBKOsTQ-U0S_bHhkOMA@mail.gmail.com>
On 12 February 2013 14:55, Stuart D Gathman <[email protected]> wrote:
> On Feb 12, Constantine A. Murenin transmitted in part:
>
>
>> I'd guesstimate that a setup with pf(4) whitelisting of common MTAs
>> through the SPF harvesting approach described, together with
>> greylisting at the firewall level, for my domains would be much more
>> effective in combating spam than any kind of SPF or DKIM
>> implementations at my MTA level, and without the false positives.
>
>
> But you are doing the same thing as SPF - except guessing the valid MTAs
> instead of using the official list conveniently provided in SPF records.
> If you are worried about efficiency, SPF records that don't involve
> localpart or PTR macros can be resolved to a set of IPs (more general
> than a netblock) with a TTL, and cached.  I believe libspf2 has this
> feature already.  Take the union of the IP sets of all your "good"
> domains if you are going to treat them all the same.

No.  I cannot have my firewall do SPF evaluations, and I'm not
attempting to do the same thing as SPF.  I am also not guessing valid
MTAs, I'm getting their list deterministically based on static SPF
information that is published by relevant entities whose mail I might
care to never delay.

Let's do a quick reality check here:  SPF cannot block spam.  It can
only block forgeries, and if you configure it as such, it is also very
much so likely to have many false positives, too.

My approach, as described above, involves the following:

* collect SPF information statically (every week or so) and compile a
list of netblocks
* pass connections from such whitelist directly to sendmail/qmail/mta of choice
* pass other connections to spamd, to do greylisting
* if a host passes greylisting, spamd updates the firewall, and the
next connection attempt will go to sendmail/qmail/etc

The novelty of my approach is collecting a whitelist through an
SPF-based record harvesting.

SPF-wise, this approach has limitations of, for example, obviously not
supporting SPF's "ptr" and "exists" declarations, and also not being
real-time; however, even for such domains that rely on such features,
they'd still be able to deliver mail after passing greylisting, and
with no false positives.

Non-SPF-wise, this approach might make SPF actually useful for those
who think that it is not, and would complement any greylisting policy
with very little overhead and a 0,000% false positive rate.

Yes, I'm not trying to use SPF as it was designed, but who cares?
It's not like we use IPv4 for what it was originally designed either,
is it?

Right now I'm trying to see if someone has already done this before,
as it seems simple enough.  Else, some ideas on a possible
implementation, or perhaps just stirring some interest amongst people
who are thinking of better ways to use the SPF records that remain
largely unused.

Best regards,
Constantine.