I Solved Spam in the 90s (Nobody Cared)

RUM - Real User Mail. Challenge-response before challenge-response was cool.

Illustration for I Solved Spam in the 90s (Nobody Cared)
rum-challenge-response-spam In the 1990s, I built RUM (Real User Mail) - a challenge-response system to fight spam. It worked. I never released it. Years later, the industry reinvented it. spam, email, challenge-response, RUM, Real User Mail, TMDA, email filtering, 1990s

30 years ago, I solved spam completely. My inbox hit zero junk mail in 1997 while everyone else drowned in Nigerian prince emails. I built RUM - Real User Mail - a challenge-response system years before the concept had a name. Simple, effective, and like too many things I built, never released.

TL;DR

Study RUM's challenge-response approach to spam. Attacking economics, not content, is often more effective. The same principle applies to modern abuse vectors.

Add it to the pile of things I built that solved real problems and never shipped. But RUM is interesting because the approach - challenge-response - became a category. TMDA (Tagged Message Delivery Agent) appeared in 2000. Services like Boxbe and ChoiceMail built businesses on the concept. The idea was sound. I just didn't commercialize it.

The Spam Problem in the 90s

To understand why RUM mattered, you need to remember email in the mid-1990s:

Spam was new and growing. The first major spam incident was 1994 (the infamous "Green Card Lottery" spam). As CNET's history of spam documents, by 1996-1997, spam was becoming a significant problem. I've watched my inbox go from useful to overwhelmed. It wasn't the tsunami it would become, but when I was at MSNBC, the growth curve was alarming.

Filters didn't exist. No Bayesian filtering. No SpamAssassin. No machine learning classifiers. The tools we take for granted today didn't exist. Spam was mixed with legitimate mail, and you had to sort it manually.

Email addresses were public. Address harvesting from websites, Usenet posts, and mailing lists was trivial. Once your address got on spam lists, there was no escape.

Blocking was ineffective. Spammers rotated through domains and IPs. Blacklists were always playing catch-up. The addresses you blocked today would be different from the addresses sending spam tomorrow.

The fundamental problem: you couldn't tell legitimate email from spam by looking at technical characteristics. Spammers could forge headers, rotate origins, and make their messages look legitimate. What they couldn't do was actually respond to you.

How RUM Worked

RUM's approach was elegant in its simplicity:

Whitelist known senders. Anyone you'd emailed before was automatically whitelisted. Anyone in your address book was whitelisted. Mail from known senders went straight to your inbox.

Challenge unknown senders. Mail from addresses you'd never corresponded with got an automatic response: "Your message has been received but held pending verification. Please reply to this message to confirm delivery." The original message was quarantined, not deleted.

Whitelist on reply. If the sender replied, two things happened: their original message was delivered to your inbox, and their address was added to your whitelist. Future messages from them would be delivered directly.

Expire unchallenged messages. Messages that were never confirmed got deleted after 30 days. They were almost certainly spam - legitimate senders reply to challenges.

The key insight: spammers send millions of messages. They can't reply to millions of challenges. The economics don't work. But a human sending you a genuine email will reply to one challenge to get through to you.

Why It Worked

Challenge-response attacked spam at its economic core:

Spam is about volume. Spammers profit by sending huge volumes with tiny response rates. If even 0.001% of recipients respond, the math works. But if they have to reply to challenges first, the volume game doesn't work.

Automation can't reply. Spam is automated. The sending systems aren't set up to receive and process incoming mail. A challenge email goes into the void.

Reply cost is asymmetric. Replying to a challenge costs the sender almost nothing - if they're human. But it costs the spammer everything - they'd need to read and respond to millions of challenges.

False positive handling is built in. Worried about missing legitimate mail? The original message isn't deleted - it's quarantined. You can periodically review quarantined messages. If something legitimate slipped through, you'll see it.

RUM effectively reduced my spam to zero. Every message in my inbox was either from someone I'd corresponded with or from someone who'd proved they were human. The spam folder didn't exist because spam never got delivered.

The Problems I Couldn't Solve

Challenge-response had real problems that kept me from releasing it:

Mailing lists. If you subscribe to a mailing list, the list's mail comes from addresses you've never corresponded with. Sending challenges to mailing list posts doesn't work - the list address can't respond. You needed manual whitelisting for lists.

Transactional email. Order confirmations, password resets, shipping notifications - these come from automated systems that can't respond to challenges. You had to whitelist e-commerce addresses manually.

Newsletter challenges. If a company newsletter triggers a challenge, and thousands of users subscribe, the company gets thousands of challenges. This was essentially a DOS attack on senders you actually wanted to hear from.

Reply-address spoofing. If a spammer spoofed an innocent person's address, the challenge would go to that innocent person. They might reply, thinking they needed to confirm something, inadvertently whitelisting the spammer.

User education. Non-technical users didn't understand why they needed to reply to a robot before their email went through. The cognitive overhead was real.

These problems weren't insurmountable. The commercial challenge-response systems that came later solved most of them with various heuristics - recognizing transactional email patterns, whitelisting known newsletters, etc. But they added complexity that made the system harder to maintain. It's the same pattern I've seen with the shareware distribution model—simple concepts that become complicated in practice.

What Came Later

Challenge-response didn't stay obscure:

TMDA (2000). Tagged Message Delivery Agent implemented challenge-response as open source. It was exactly the same concept, more polished than RUM, available for anyone to use.

Boxbe (2006). A commercial challenge-response service that integrated with major email providers. Raised funding, got acquired by eDataSource. Real business built on the concept.

ChoiceMail (2002). Desktop software implementing challenge-response. Sold licenses for years.

SpamArrest. Another commercial challenge-response service that lasted for over a decade.

The concept I built in my spare time became a product category. Not a huge category - challenge-response never became the dominant anti-spam approach - but a real one, with real companies and real customers.

Why Content Filtering Won

Challenge-response didn't become the dominant anti-spam solution. Content filtering did - Bayesian classifiers, machine learning, reputation systems. Why?

Invisible to users. Content filtering happens automatically. Users don't have to understand or interact with it. As the history of anti-spam shows, challenge-response requires senders to do something, which creates friction.

Handles transactional email. Filters can learn that order confirmations from Amazon aren't spam. Challenge-response systems need explicit whitelisting or complex heuristics.

Scales to providers. Gmail, Yahoo, Outlook can implement content filtering at the provider level. Challenge-response is harder to implement at scale without the problems I mentioned (DOS'ing legitimate senders).

Got better over time. Machine learning kept improving. The gap between spam and legitimate mail got easier for algorithms to detect. Challenge-response stayed about the same.

Challenge-response was a good approach for individual power users willing to manage whitelists. Content filtering was a better approach for the mass market. The mass market won.

The Lesson About Solutions

In my experience building tools that solve real problems, RUM taught me something about solution timing:

Right problem, right time, not-quite-right approach. Spam was a real problem getting worse. Challenge-response was a real solution that worked. But the dominant solution turned out to be something else. Being right about the problem doesn't mean you're right about the solution.

Power user vs. mass market. RUM was great for people willing to manage whitelists and understand the system. That's a small market. Solutions that work invisibly for everyone capture bigger markets.

Simple isn't always simpler. Challenge-response is conceptually simple. "Reply to prove you're human." But the edge cases - mailing lists, transactional email, newsletters - add complexity. The "simple" solution wasn't simple in practice.

What I'd Do Differently

If I'd shipped RUM, I probably would have discovered the edge case problems faster - through user feedback rather than my own usage. I might have evolved the approach. Or I might have concluded earlier that content filtering was the right direction and pivoted.

What I actually did was build something that worked for me, use it for years, and watch others commercialize the same idea. That's a pattern I've repeated too many times - same story with my personal web crawler that predated Instapaper and Pocket.

The truth is, the lesson isn't "ship everything." Some things shouldn't be shipped. But RUM should have been. The problems were solvable. The market existed. I learned the hard way that I just didn't pursue it when the window was open.

The Bottom Line

I solved spam in the 90s - at least for myself. Challenge-response worked. It was simple, effective, and addressed spam's economic fundamentals. I never released it, and years later watched others build companies on the same concept.

Content filtering ultimately won the spam war, not challenge-response. But the concept was sound enough that real products and real companies were built on it. RUM could have been one of them.

Add it to the pile.

"I solved spam in the 90s - at least for myself. Challenge-response worked. It was simple, effective, and addressed spam's economic fundamentals."

Sources

Security & Infrastructure

Email, authentication, anti-abuse - problems I've been solving since the 90s.

Let's Talk

Learned Different Lessons?

If you were there and drew different conclusions, I'm curious what shaped your take.

Send a Reply →