Re: PR Problem?

"Eric S. Johansson" <[email protected]> Tue, 14 Nov 2006 00:22:54 -0500
Newsgroups gmane.mail.spam.hashcash
Message-ID <[email protected]>
Todd A. Jacobs wrote:
> Well, ideally this is where hybrid systems with DNS records and such
> would come into play, but in a more realistic and practical system I
> think one just defines a best-practice. That's why I tossed the idea of
> basing the "standard policy" on the number of addresses in the mail out
> there: because the MUA *does* know how many addresses are involved.
> Granted, that doesn't mean the destined recipients will check, but if
> they did they should probably be following the "recommended standards,"
> whatever they end up being.

It would be interesting to see if one could define best practices and 
then make it possible to some mechanism to let the sender match the 
receiver's needs.  If the standard practice becomes score fudging, I'll 
probably just force the stamp to be large enough so that it overwhelms 
whatever scoring mechanism underlies the system.

It will also be interesting to see if we can model at to see if there is 
a golden window for spammers as well with the score fudging technique. 
I've closed the window elsewhere.


> You keep assuming "hybrid environment," whatever that means, but I don't
> think that's currently a practical real-world scenario. Real-world, you
> aren't slowing down the botnets, you're busting the performance of an
> ISP or e-commerce server.

Some how I get the feeling we're talking at cross angles to each other. 
  I apologize for my part of any confusion.

A hybrid system (in my definition) is a system which uses external data 
or predicate based on that data to reduce the spam generation load.

A naïve system's generates stamps at maximum rate (i.e. the same rate as 
messages coming through).

so, it's exceptionally practical in the real world.  It reduces load so 
that an ISP or in e-commerce server can generate stamps when necessary. 
  But it only works in a system where the receiving filter has a 
matching hybrid nature.  That it can accommodate only a few stamps and 
then by observing the behavior of the end user, figure out who no longer 
need stamps and treat them appropriately.

The hybrid predicates that I can see having value are: "who do I know?" 
and, "what does DNS say?"
> 
> Statistics claim that 80% of all email traffic is spam. Well, if you're
> an ISP, you want to track botnets by spam volume (e.g. reading your
> logs), not by seeing which server has just crashed because its CPU is
> pegging out at 100%.

You mean you would put a stamp generator in place that doesn't do rate 
limiting?  If the system has maxed out and the queue length has grown 
beyond 10 minutes worth of messages, I would just send the messages on 
without stamps.  No sense making enemies of your friends.

in a hybrid system, this is the T0 problem.  and the only solution I see 
is to dump stamp generation when the load gets too high.  Eventually, 
the required workload will settle down to something much more practical.

> Slow-minting is a selling point to *recipients*, not senders. So, if you
> want centralized minting, you have to come up with a better slogan than
> "we'll crash your servers if your users are sending spam." :)

:-) indeed.  What we should probably try to emphasize is the minting 
differential between spammer and defender.  Again, the hybrid broken 
record says that you minimize stamp generation while keeping the spammer 
load at the same level.  This lets you specify a larger value stamp for 
the same amount of resources used with a naïve system which increases 
load on the spammer but not so much on the defender.

> 
>> It looks like your description is of a received side chain.  Hash cash
>> would be injected prior to the first postfix.  If a stamp is valid and
> 
> Yes. That would allow a policy daemon to verify stamps outbound, too,
> which *would* be a win from an ISP or enterprise point of view.

Yes.  One could change the outbound filter chain to verify stamps 
outbound.  it would detect zombies trying to serial or parallel double 
spend.

>> present, the first procmail should detect that and abort processing in
>> the rest of the chain if successful.  Otherwise you process is normal.
> 
> See, that's sort of my point. I'm not sure that hashcash should assume
> it is the final arbiter of what is or isn't spam. I realize that at
> present all it does is mint or verify hashcash stamps; I just think it
> should be hashcash's job to append or validate the RFC 822 headers in
> filtering mode.

I disagree that's the job of hash cash.  It's only task should be to 
validate or create stamps/tokens.  If you want another library to handle 
that then, by all means, feel free to create one.

> 
> If you want to talk Unix philosophy (one tool, one job) that's a
> different conversation--although most Unix tools are capable of being
> used directly in a pipeline wile hashcash can't . But if the question is
> "Why don't more people implement this as part of their toolchain," I
> think that the inability to simply drop it in as a filter (in the sense
> of filter-processing, not mailbox filtering) is part of the reason.

don't be hampered with a data handling model that is over 30 years old 
and only works with one particular user model.

If you look at most UNIX commandline tools, they are no longer one tool 
one job.  And while one tool one job is a strength in the small, it 
breaks down in the large.  when you start trying to chain things in 
e-mail, you really need to look at it from a very different perspective. 
  I think the postfix filter is one of the best filter interfaces 
around.  It's based on an enhanced SMTP environment and have reasonable 
expectations of queuing, retrying etc..  it also lets you deal with data 
bidirectionally if you're clever.  Pipes don't do that and that's why 
they are bad for e-mail.

if you look in the twopenny blue filter chain, I have a series of 
objects all derived from the same basic filter archetype.  Then on 
customization, I create a list of objects that I can just call in a 
sequence.  As I've mentioned earlier, I would love to drag those objects 
outside of the twopenny blue post filter and let them self assemble just 
by their presence.  Unfortunately, I don't know enough.

That's the level of configurability that should be in any filter.  Not 
because he can string it together with a bunch of UNIX pipes.  But have 
real control and data handling.

>> If you need the verification header into abort processing or otherwise
>> modify it later on, then that's your own filter responsibilities, not
>> that of anybody else.  I think this falls in the category of filter
>> philosophy.
> 
> Yes and no. Most tools, including bogofilter, spamassassin, and even
> procmail support the idea of acting as a pass-through filter and provide
> error codes and header modification (although in procmail's case you
> have to shell out to formail for the latter). I'm *not* saying that
> hashcash should decide what to do with an email; I'm saying that it
> *should* be able to mark an email as containing a valid or invalid
> stamp.

if you wish to limit yourself to that model you can do that by putting a 
wrapper around hash cash as it stands today.  but that very model is 
also part of the reason why filters are the way they are today.  Over 
the past few years starting with the first challenge response plus hash 
cache system and moving onward through the pipe type oriented model you 
describe, pipe-based filters have always come up short.  Performance is 
bad and I don't have all the information I need to do more advanced 
filtering and signal analysis.  it just didn't behave the way I wanted 
it to behave.

E-mail is inherently loopy with lots of feedback possibilities.  By 
taking advantage of feedback loops, paying attention to and and using 
information on both inbound and outbound sides of your MTA/MUA 
environments, you will increase effectiveness, reduce user workload, and 
make it possible to throw the maximum load back on the spammers.

Another thing to consider is if it was useful and easy to use pipe-based 
filters, why hasn't anyone done it with hash cash, and why are most of 
the content filters operating as a internal component of the MTA and not 
as a delivery agent component?

---eric