Spam is a plague. It's antisocial behaviour.
Unfortunately there are no signs of hope, since the irresponsible assholes don't seem to die out.
You think this wording is too strong? Consider for a moment what would happen if we applied the Spammers business and ethics rationale (it's possible, therefore ok) to nuclear arms: they would sell it to every extremist, just because it's possible, therefore ok.
We'd all be dead by now. So: different business, same attitude. Wording too strong? I think not.
For a more analytical look at spam, read that essay. It also explains what spam is, in case you don't know.
So, since they won't go away, here is what you can do. A list of measures that can be taken and that will help (albeit with varying degrees of success).
Try to avoid exposing your mailaddress. The more exposed it is, the more SPAM you'll get. Unfortunately making your mailaddress known is part of what makes the internet usable.
If you want to display your mailaddress in a HTML mailto link on a web page, here is a code snippet to hide it better from the harvesters (using Javascript).
Users with Javascript turned off will still be able to see it, though not clickable:
<script>
myat=String.fromCharCode(64)
myadr="John.Doe"+myat+"mydomain.net"
document.write("<a href=\"mailto:" + myadr + "\">")
</script>
John . Doe @ mydomain . net
<script>
document.write("</a>")
</script>
<a href="mailto:alias@mydomain.net?subject=[keyword]:%20Do%20not%20change%20the%20subject%20left%20of%20the%20colon.">mail to me</a>
Blocking Spam on the mailserver is by far the most effective way to deal with the problem. Because:
Write a script that collects all addresses that your users sent mail to and write them to a file. An example shellscript is here: make_global_mailadr_whitelist.sh
You need to adjust it accordingly, and then run it with an hourly cron job.
Add the following line to Postfix's main.cf, e.g.:
check_sender_access hash:/etc/postfix/uce_spam/global_whitelist
If you have control over your SMTP mail server configuration, enable the use of an open mail relay black list. Almost all spam originates from either open mail relays or dialup IP address ranges of Internet providers (such as AOL). See the Open Relay Database for details. This will weed out 90% of the spam, while not a single important mail gets lost (it may bounce back to the sender though, in which case he can take appropriate action). There are several blacklists, choose some that suit you:
reject_rbl_client ix.dnsbl.manitu.net,
reject_rbl_client relays.ordb.org,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client combined.njabl.org,
reject_rbl_client sbl-xbl.spamhaus.org,
reject_rbl_client dul.dnsbl.sorbs.net,
reject_rbl_client list.dsbl.org,
reject_rbl_client opm.blitzed.org,
If you combine that with the whitelisting above in Postfix's smtpd_recipient_restrictions you'll catch most of the current spam.
There are many ways to filter mail. Preferably you'd want to do it on the mail server, thus avoiding having to download the SPAM (in case you have a dialup line). Some of the more succesful methods are:
As a last option (if you have no control over your mail server), you can filter mail as it arrives on your client PC. Part of the damage is already done at this point, because you have to pay for the mail being downloaded to you machine.
Another downside is that at this point in the mail processing chain, some of the info a mail server has is no longer available to the spam filter program, so that the filters work content-based only.
If you have a Windows client, try Spampal.
This is most often a waste of time, but if you feel like it, complain to the provider of the mail server that delivered the spam and to the ISP that hosts the advertised domain.
Usually their acceptable use policy (AUP) forbids sending spam and they may be able to take some action (at least cancel the account).
This makes it more difficult for spammers, as they have to switch ISPs all the time (and they may get sued by the ISP for violating the AUP).
Send a complaint with the full mail + headers to abuse@ISP.domain or postmaster@ISP.domain.
If you are able to identify the spammer (because the website is advertised in the spam), you may try to sue them or charge them/send them an invoice. Some people have been doing that with varying degrees of success, depending on your countries legal system you mileage may vary. Usually only works if the spammer resides in the same jurisdiction (country).