Technically known as a spew, e-mail spam is happening to everybody, and there are lots of ways to get email addresses. One sure fire way to get junk mail is to post something to Usenet. They won't find you on the inch.* newsgroups since we don't send them to the rest of the world, but there are programs out there that just search for addresses.
I used to forward the message with full headers and a complaint to the administrators for the domain from which the message came, but now I just use the "bounce" function on my mailer.
Use your mailer to look at the _full_ headers of the message. Most of that info can be forged, but the topmost "Received:" line cannot. It should say something like
From firstname.lastname@example.org Sat Apr 12 11:03:18 1997 Received: from mail.redrove.com (secserver.redrove.com [126.96.36.199]) by arutam.inch.com (8.8.5/8.6.12) with SMTP id LAA13919 for Sat, 12 Apr 1997 11:03:17 -0400 (EDT)
Without getting into too much detail, the only thing you can trust every time is this "Received: " line. It tells you where the mail came from, so you can do a whois on the domain and complain to their contact person. Often times, the contact person is part of the spamming organization, so you have to complain to the company providing their internet access. To find that, you use the "traceroute" command to find the network they're on, then do a whois on that domain, then send a complaint.
These sites should have the address "email@example.com" or "firstname.lastname@example.org" set. So, in the above example, I bounced the message to the following:
|ADDRESS||GOT INFO FROM||WHY|
|sharon@REDROVE.COM||whois redrove.com||contact for this domain|
|email@example.com||traceroute mail.redrove.com||network provider|
|firstname.lastname@example.org||whois sprintlink.net||good measure|
|email@example.com||whois sprintlink.net||good measure|
The last 2 addresses I sent because sprint irritates me with their apparent practice of silently ignoring complaints. I have yet to see them respond or take action against a spammer, yet I don't want to roll over and accept this type of situation.