Let's look at it another way: Currently, I get several pieces of junk paper mail per day. With the same budgets, the advertizers would be able to send me tens of thousands of email messages per day. And that doesn't even begin to count wackos, people with a political message, etc.
Either way, it's chilling. Email usefulness would be undermined for everybody (including spammers, but would they care?).
Why don't all the direct marketing companies spend few percent of their budgets delivering junk email? Why don't all the wackos send their ramblings to the entire world? Why so little spam is sent to email users (and what's sent is usually sent by rogue idiots)?
I see the following factors that limit spam proliferation:
Why do ISPs take action against their paying customers? Why do direct marketing folks know better than to spam en masse? Why do legislators adopt laws that limit spam? Because people complain about spam.
Reporting spam is the deterrent factor that keeps email useful. If reporting were to stop, we'd be buried in a sea of junk mail.
Complaining to policy makers about individual instances of spam is silly. It might make sense to write a snail mail letter to your representatives that tells them how you feel about spam and urges them to supports good measures aimed at stopping it without hurting civil liberties. But whining about individual instances will only make the anti-spam cause look bad.
Hitting the spammer where it hurts and disconnecting their email address that they use to take orders may seem like the best idea. And it's effective. However, it only works for some fraction of spam. Firstly, there may be no means of contact (they may not be trying to sell anything using the message). Secondly, the means of contact may be hard to disconnect (try convincing a snail mail postmaster to not deliver mail to a valid address).
Complaining to the spammer himself can be efficient, if done, e.g., to their home telephone number or to their boss at work, but it's useless to try to send email to a spammer telling them to stop.
So, we're left with the delivering and originating parties as suitable complaint targets.
Sendmail dominance is over. A variety of MTAs are used, each using
its own format for Received: lines. The only reliably
parsable thing left are IP numbers. Luckily, the rest is just fluff
anyway. So, we just look for IPs.
We start with a set of "trusted" IP numbers (it's unique for each user and is relatively immutable) and a set of bogus IP numbers (it's a hardcoded set of local, multicast, internal use, etc., numbers).
Any address that's not trusted and not bogus is interesting.
Read the Received: lines starting from the top. Look
for things that parse as an IP number. While there are no
interesting IP numbers in a line, skip the line.
The last interesting IP number in the line we're looking at, if we haven't skipped all lines, is the delivering party IP number.
Repeat reading until we find a line with interesting IP numbers. The last of them is the potential originating party number. (If it doesn't exist originating party is the same as delivering party.)
Do RBL, DUL, and RSS lookups of the delivering IP address (peer). If peer is in RLB or DUL, undefine origin, even if it's defined (if a known spammer or a dial-up user claims they received the message from somebody else we don't trust them). If peer is not in RSS, and origin is defined, report peer to RSS (and maybe other open relay lists).
Let's now get back to the set of trusted IP numbers. This is a set of IP networks that host mailservers that you trust and that do not originate spam delivered to you (such as your mailserver, mailserver for another address that's forwarded to you, mailserver of a bona fide email list you're subscribed to, etc.). These machines generate headers that you can trust; and they must always include the IP number of their peer.
Determining the email addresses to send complaints to is a more
complicated business. Currently, a technique that I find reliable
(but that only discovers some addresses for roughly 25% of cases) is
to first do SOA DNS lookup of class C zone in
in-addr.arpa and then run the obtained domain through
whois.abuse.net.
The following proof-of-concept Perl code demostrates the use of this algorithm: spamtrak.