Why is there so much e-mail spam? The short answer is because there is money to be made. The bottom line is, first, because it's cheaper than sending snail mail. Second, because, according to this article here, 20 percent of the recipients actually buy through them.
The number seems much higher than numbers I've seen before but even if orders of magnitude wrong, it still answers the question of why so much spam. If you send out 100,000 e-mails, a number not out of line with figures I've seen before, and you get a one percent response rate, that's still 1,000 sales (Don Armstrong please double check my arithmetic). Making 1,000 sales on a cost of, probably, pennies per sale is one excellent way of making money. Hence, as long as it is profitable, people will continue to clog your e-mail box with stuff you may not want, but 20 percent of other people do.
As for me, I've modified how my e-mail is filtered. Recently, I've been using two layers of defense. The first is SpamAssasin that my host provider, pair.com uses. The second is what Mozilla Thunderbird has built in. But even with these two filters, much too much was getting through. So I re-installed a filter I've used in the past. It's called POPFile.
While I've only used the three together since yesterday, I'm already near 97 percent accuracy in identifying spam. However, I've found two POPFile bugs that weren't in the previous version I used. The latest version of POPFile (version 0.21.1) has a really nasty bug relating to the system tray icon. If you have it on, and you go to the "Buckets" tab of the POPFile user interface (UI), WindowsXP Pro will lockup so hard you will have to press the reset button. The temporary workaround is to disable the tray icon by using the UI (Configuration->Windows->Show POPFile icon in Windows system tray?->No). The second bug is not as big a deal. If you access the UI by going to the Windows Start menu -> All Programs -> POPFile and start the UI there, you may get an error message saying Windows cannot find 127.0.0.1:8080 (which is where the proxy runs). You can ignore the error as your browser will find the address just fine. The workaround for this is to access the UI directly by first starting your browser and then typing in the 127.0.0.1:8080 address yourself.