Re: Comments on IM2000

James Craig Burley <[email protected]> 5 May 2005 23:27:33 -0000
Newsgroups gmane.mail.im2000
Message-ID <[email protected]>
>On Thu, May 05, 2005 at 05:07:15PM -0000, James Craig Burley wrote:
>> >But that does make me think of another option. Suppose all notifications
>> >were forced to come from the originating message store. If you want to
>> >forward a notification to someone else, you do it by asking the originating
>> >message store to do it for you. Hmm... I'd have to think if there would be
>> >any benefits in that.
>> 
>> I think JdBP's IM2000 proposal, which is much more detailed than djb's
>> and which commits to certain design decisions, commits to this one as
>> well: *all* notifications come from the originating message store.
>> 
>> Whether that permits a recipient to simply forward a notification to
>> another party without notifying the store depends mainly whether the
>> request for the contents of a message include the recipient's IP
>> address (or similarly unique identification) in the key or
>> authorization for such a request.  If not, forwarding of notifications
>> is trivial; if so, then, yes, the *store* would have to handle
>> forwarding at the request of a recipient.
>
>JdBP appears to allow the forwarding of notifications without the original
>message store being involved: [...]

Okay.  That seems reasonable.

>The blacklisting is done using the domain name of the message store
>(illegal.com), so I imagine it must be against notifications which come in
>where the originating message store is illegal.com, not that the source IP
>address of the notification is *.illegal.com

I believe that's the case as well.

>> On the SMTP side, it's not all *that* hard to prioritize incoming
>> messages based on a recipient's perception of the trustability of
>> upstream relays, including whether SMTP AUTH was used.  (But in cases
>> where use of AUTH isn't reliably reported in "Received:" headers,
>> either the relay in question always requires AUTH and thus acquires,
>> over time, lots of trust, or will have to find other ways to be sure
>> it avoids the problem of being a mixed source of UBE and desireable
>> email and, thus, untrusted.)
>
>The trouble is you can't rely on the sender *telling* you that the message
>was submitted via SMTP AUTH, and that therefore you should trust it. If so,
>spammers would just make their mail systems make the same declaration.
>
>With SMTP, you need to verify independently whether the mail server in
>question is actually trustworthy - for example by having trusted agents on
>that ISP's network performing the testing for you. Ick.

I'm saying, why care whether a third-party relay uses AUTH or any
other *particular* mechanism?

All you *really* care about is whether that relay is well-run enough
to avoid accepting more UBE, likely destined for your system, than you
feel comfortable with.

Leave it up to the operator of that relay to decide how best to gain
that trust.  It can advertise that it uses AUTH generally, or, via
"Received:" headers, *when* it uses AUTH.  Whether that impresses you
is up to you, since one relay might be AUTHless but UBE-free and
another might always AUTH but be a huge source of UBE.

AUTH is just another of those things that is an extra hoop to jump
through but, otherwise, not really needed most of the time.

Accordingly, until it's *required* to be used most or all of the time,
people won't bother with it.

And if they *do* require it, there'll be considerable pressure to
provide it in a "seamless" way that would ultimately make it nearly
useless in terms of determining whether a *particular* human being
tends, or tends not, to deliberately send UBE to the rest of us.

(Even if you do test a network for AUTH, what does that really tell
you?  That it won't let just *any* random spammer access it -- just
the paying ones?  Etc.)

Make AUTH sufficiently easy for everyone to use, and everyone --
including those with 0wned machines -- will use it.

>> >With dynamic IP pools, source IP doesn't tell you *which* paying customer,
>> >only that they are *a* paying customer.
>> 
>> Really?  Why not?
>
>I dial into a modem, and I get an IP address out of a pool. The SMTP server
>knows that I'm connecting from IP address x.x.x.x, but not my customer ID.
>It could only find that out by some out-of-band database which associates in
>real time IP addresses with customers - for example, you could build some
>infrastructure which takes RADIUS accounting packets and builds a real-time
>mapping, and query that using some suitable protocol (LDAP perhaps). Even
>then, you'd have to live with the fact that RADIUS accounting is UDP-based
>and unreliable, and so occasionally you will associate x.x.x.x with the
>wrong customer.

Amazing.  I just assumed ISPs had better internal coherency in their
infrastructure -- that any (internal) server could do the equivalent
of an rDNS lookup on x.x.x.x and get a unique ID for a customer, even
though the outside world might see something much more opaque (like
the same IP address encoded and decorated).

(I'm still confused as to how IM2000 significantly changes any of
this, other than to perhaps *require* ISPs to do what you're saying
they would find annoyingly necessary to do for SMTP anyway.)

>> >Any sort of closed-user-group model doesn't have this problem. But if you
>> >wish to be able to accept mail from strangers on the Internet, then it is a
>> >major problem. Some FUSSP suggestions are basically ways of making it
>> >difficult for strangers to introduce themselves to you - such as "hashcash".
>> >Challenge-response systems are in that class too (but they won't work once
>> >spammers build systems to response automatically to the challenges)
>> 
>> Right.  My ideal is that incoming email from total strangers would
>> *tend* to be immediately accepted, and my *proposals* revolve around
>> the notion that, prior to the human recipient actually reading a given
>> message, the sending stranger's MUA repeatedly requesting status (or,
>> in ecrulisting, resending the message) would, in the absence of other
>> information on the tendency of the sender to send Bulk email, tend to
>> *increase* the priority of that message as seen in the recipient's
>> list of pending messages.
>
>OK, but a spammer can emulate that behaviour too.

Of course.  A spammer can do so for any *particular* message she
sends.

Can a spammer do it reliably, consistently, for all the 100M or so
messages she sends out each day, without triggering auto-detect
mechanisms?

I'm not sure that'd be possible.  And I think this approach even
handles the problem of massive numbers of 0wned machines on the net,
until their 0wnership is turned into making the machines *accept*
incoming UBE and prioritize it highly (at which point their users will
take their machines' 0wnership more seriously ;-).

>> Since it would be mostly a matter of automation to infer whether it is
>> Bulk Email as well, that means that a sender of UBE becomes recognized
>> as such on a per-site basis.
>
>In the limiting case, the spammer generates a new on-line identity for every
>individual message sent out. It looks like lots of new individuals popping
>up on the Internet, sending their first E-mail. How do you deal with that?

They have only so many IP addresses from which to send their *Bulk*
email, and they send them to so many spamtraps, that the recipient's
MTAs and MUAs can fairly easily detect such activity and flag such
messages as "likely UBE", even before any content analysis is
performed (though it can be performed anyway).

>> So, by sites individually choosing to deploy some spamtraps, and
>> perhaps using RBL and other technologies not to necessarily *block*
>> incoming messages but, rather, to simply *ignore* them and let the
>> senders repeatedly inquire as to their status...
>> 
>> ...*receivers* of UBE turn their systems into "black holes" for mail
>> that actually *is* Unsolicited Bulk Email.
>...
>> If it's not Bulk, a receiving system can easily recognize that it
>> hasn't seen 1M messages coming in from that particular sender's IP
>> address in the past 48 hours, most or all of which have gone unread or
>> marked as Unsolicited by their readers.
>
>Ah, but that's it then. You *do* need to rely on a sender's IP address as
>part of their identity in order to detect "bulk", not just their domain name
>or public key.

More precisely, one relies *primarily* on a sender's IP address as
part of their identity, and can often not bother looking up their
domain name, public key, reputation, etc., in order to determine that
the IP address in question is a source of UBE.

A receiving agent can accomplish this without relying on any third
party, *including* DNS!

I think that's pretty cool, and darn near bullet-proof, assuming the
concept as a whole makes sense (which it might not).

>Which brings us back to shared SMTP relays, and the fact that legitimate and
>bulk E-mail may spew forth from the same machine, which is really what makes
>life difficult right now. So then it's just down to whether spammers 'track'
>their outbound mail in a pattern which is similar to how a legitimate sender
>would do so.

My approach makes it much more expensive, over time, to run SMTP
relays that accept UBE, since they find it much harder to foist
responsibility for that UBE on to other hosts, and in the meantime
even *legit* email tends to sit around on the server much longer while
downstream entities (including recipients) use finer-grained
techniques to assess the likelihood that any *given* email is UBE,
given that they can't easily make that decision based on the IP
address of the relay (as it is a "mixed blessing").

Indeed, I assume (some) spammers *will* simply use the same sort of
tracking algorithm that legit MUAs employ.  That's part of the beauty
of this approach: they'll be investing much more, in the way of
resources, into each email they send.  It's what IM2000 promises,
without the warts (delays reading messages) or expense (designing and
implementing a whole new email infrastructure) -- namely, that
*senders* bear more of the cost of sending UBE.

>> So it "punishes" senders of UBE in that they either become (well,
>> remain) careless senders -- which recipients can more easily
>> distinguish from caring ones -- or they expend a great deal more
>> resources to send and care for each outgoing piece of their Bulk
>> email, while taking the very significant risk that Bulk email sent to
>> spamtraps and/or sites that otherwise autodetect Bulk sending will
>> result in such care accomplishing literally *nothing* in terms of
>> getting a message into a given end user's eyeballs.
>
>The 'care' taken is, presumably, comparable to that needed to deal today
>with getting a 4xx response and to resend later. I don't think it's hard;
>it's what standard MTAs do all the time.

That's correct, modulo a few well-known cases (old versions of Lotus
Notes; Yahoo Groups; etc.), I gather.

>If I were writing a bulk SMTP sender, I wouldn't use a standard MTA, which
>is not optimised for keeping track of 10M recipients for one message.
>Rather, I'd write my own which keeps one copy of the spam and tracks the
>recipients in some sort of database (10M recipients can be kept in a hash
>table in RAM very easily, given say 512MB of RAM). I'm almost inclined to do
>so as a proof-of-concept.

Sure.  As with IM2000, it isn't the huge number of message *contents*
that a UBE sender has to deal with, because, as you noted, a typical
sender of UBE has just a small number of *unique* messages to send to
a huge audience.  (Accordingly, IM2000 actually penalizes senders of
large numbers of *unique* messages moreso than it does most senders of
UBE.)

So, let the sender track *all* those messages, as you suggest.  Now
they're expending much more, in the way of their resources, per
*important* outgoing message than the typical sender of legitimate
email, *both* of whom get to shovel the *content* across the wire the
first time they try.

(Note that this implies the legit sender will tend to spend much more
of her content-shoveling bandwidth on *desired* email than will the
sender of UBE.  With IM2000, the sender of UBE isn't wasting their
outgoing bandwidth on email that's never read, while the sender of
legit bulk email has not only a huge outgoing bandwidth budget but
also the need to run a mail store.  *Always* try to tilt the economic
wins in favor of the white hats, and the losses towards the black
hats.)

As counterintuitive as that sounds, it give legitimate senders and
recipients of email a "leg up" on spammers, because they *already*
care about *their* messages, don't mind having to demonstrate that
care, and in fact, on today's Internet, would likely welcome a system
that would tend to *reduce* the costs of exchanging their email
(mainly because it basically eliminates bounces) while making it
easier to know just how a given message is progressing.

(In particular, a sufficiently smart MTA that handles all incoming and
outgoing messages for a site can decide to reject or simply ignore all
incoming *bounces* as long as it has no outstanding deliveries that it
is unable to track in the new way.  Bounces don't vanish overnight;
they, along with joe jobs, become *gently* less expensive as they're
needed less often.  Of course, "outstanding deliveries" would include
messages sent to traditional SMTP servers anytime in, say, the
preceding two weeks, and for which no conclusive bounces/DSNs had been
received.)

>I don't think spammers are stupid; E-mail is their business, and they know
>how it works very well. Maybe the few days' programming needed isn't worth
>their while yet, which is why the greylisters are seeing some benefit, but
>it only needs the next version of SpamSenderPro or whatever to have this
>feature, and greylisting will die overnight.

Yes, that's long been predicted, and will probably come to pass.  But
greylisting provides no benefits to those exchanging legit emails,
because it can only *delay* such exchanges.  So the UBE senders are
still in a better position, since they don't really care whether their
UBE arrives in a mailbox immediately, or five, ten, or twenty minutes
later, as long as it is accepted before they are forced to move on,
whereas people exchanging legit emails *often* want instant delivery.

(Ecrulisting, as well as my other proposal, doesn't make things any
worse for ordinary users exchanging emails.  It's the underlying
infrastructure that might have to work harder, or not -- maybe a lot
harder for the sender, a little harder and a bit more cleverly for the
receiver, etc.)

By "move on" I mean senders no longer (re)send email from that same IP
address, or at all.  Equivalently, they no longer request tracking of
messages previously sent from that same IP address; they no longer
send message notifications from that address; they no longer provide a
message store from that address; etc.  And maybe "from that address"
is impertinent; it's not clear there's any need to design a
requirement that tracking or resending must come from the same IP
address into the system.

Continuing here, I'm assuming that many users don't read their inbox
frequently enough to be sure the sender is still online when they
finally see the message.  So the general question here is what happens
when the sender has moved on before the reader finally gets around to
invoking their MUA and seeing the in-box?  I don't mean in specific
cases, I mean what happens in terms of the ability of senders of large
amounts of legit email versus senders of UBE?

Looking at these issues, with vanilla SMTP, once a sender moves on,
the fact that her outgoing email has been fully accepted makes it that
much more complicated for recipients to handle the fact that, despite
senders having "moved on" and/or been determined to send UBE, all the
*accepted* email must still be delivered, dropped, or bounced.  After
all, responsibility has already been accepted.  And bouncing email
after accepting responsibility for it during an SMTP conversation is a
big problem, as we all know.

With IM2000, if that email has not actually read by a real person, it
cannot be read at all, as the sender has moved on.  Once a few MUAs
detect that, they can notify the "collective" that *all* pending
notifications from that source are suspect.  Here, responsibility has
not been accepted, but it's not clear whether false positives are
involved (the "moving on" might have been a legit laptop sending legit
email being disconnected or given a new IP address), so there's a
problem with the fact that the messages aren't actually available to
the reader (or a content-analysis engine).

With my system, until that email is *fully* delivered, the sender
retains responsibility for it.  "Moving on" can therefore be
legitimately interpreted as no longer demonstrating interest in it.

But the message itself is (usually) available to the reader.  If the
reader wants to accept responsibility for the message, or signal some
other error, that sort of "bounce" is communicated upstream to the MTA
(SMTP server) -- tagged to the unique ID for the message, whatever
*that* is, kept by the MTA --- so that it can respond accordingly to
the next tracking request (or, with ecrulisting, next delivery
attempt).

I believe this makes it much more feasible for a host to keep track of
"origins of interest" for incoming email, and thus notice when a given
origin, representing a sufficient number of emails whose contents,
have been accepted but not for which responsibility has been accepted,
suddenly stops requesting tracking information (for ecrulisting, this
means it stops retrying delivery).

Such an event doesn't result in *loss* of email, since, in my system,
exchange errs on the side of duplicate delivery and duplication of
effort, but it can result in determining that the source was not
sufficiently interested in delivery -- or that it was, but lost
connectivity.  And it can do this based on a sampling of the pending
messages.

In the extreme (but likely frequent, in today's world) case, if an MTA
simply decides to drop *all* pending email from a given source, it can
do so in a fashion that either lets the sender discover the fact by
issuing new tracking requests (which either fail or yield "discarded
by server") or resending (which the MTA might /dev/null but not
disclose accordingly).  Such mail is never "lost", however, since it
was never truly *sent*, in that responsibility was never
*transferred*, in the first place.

My proposal also can perform content analysis of the sort that is
performed today -- without, as IM2000 tends to do, disclosing the
existence of "listening" recipients -- because the "default" is to
accept the full message without accepting responsibility for it.

This is definitely *not* the sort of "hard system" that most everyone
else proposes to deal with UBE.  It's more of a "soft" response that
allows for failure, in that it has fewer points of failure.

But "soft" responses, or defenses, can be much more effective against
an opponent that throws a flurry of misguided punches and then gives
up, only to move on to attack someone else, or return later.  Each
such punch goes further, because it isn't repelled, and sucks the
attacker into spending more time and energy throwing punches that, in
the end, accomplish little more than never having engaged in the
attack in the first place.

There are difficult aspects to my proposal.  With a new, clean design,
the challenges are mostly coming up with a design that won't have
aggravating aspects down the road; with SMTP, it'd be annoying to have
to take into account problematic aspects of that infrastructure,
including a biggie, the difficulty of uniquely identifying any message
*transmission* regardless of the *path* that message takes to reach a
given MTA.  (E.g. "Received:" headers largely don't make a difference
in message uniqueness, but the "older", or more-upstream, ones, if
they disagree about the origination point, might be enough to denote
two delivery attempts as pertaining to two distinct messages even if
the contents are otherwise identical.)

And, as with IM2000, my proposal requires lots more close
(fine-grained) interaction between MTAs and MUAs.  Probably something
new in place of mbox's and maildirs, for example.  I don't know for
sure.

-- 
James Craig Burley
Software Craftsperson
<http://www.jcb-sc.com>