I created something to do this a couple of months ago and integrated it in to spamassassin. I should probably shoot them an email, though its kind of klugy since its scraping the spamvertised sites off of spamcop.net periodically. If anyone is interested, let me know and I will post the code. I basically use WWW::Mechanize to grab http://www.spamcop.net/w3m?action=inprogress&type=www every so often and pull all the links and output a file called spamcop_url.cf which lives under /etc/mail/spamassassin/. This gets picked up when a mail is checked for spam. An entry in the conf file looks something like:
uri SPAMCOP_NET_URI_5 /http\:\/\/www\.1callerid\.com\/rm\/index\.html/i
describe SPAMCOP_NET_URI_5 Matches SPAMCOP URI http://www.1callerid.com/rm/index.html (generated: Thu Feb 12 18:00:01 PST 2004)
score SPAMCOP_NET_URI_5 1.80
I keep one day back of urls in a serialized file using storable. This has worked pretty well and definitely increased the number of points that spams receive.
I think a better approach would be one where spamcop or some other service were to provide a URL that you could pass a URI and it would tell you whether its been banned, how many have reported, how long, etc. The spamfilter would then decide how many points to give it based on those params. I think this could not only be effective with links, but also with images as well, since that is how some spams seep through.
The only downside to this is the service may need to get intelligent since spammers would use wildcard A DNS records, so it would have to resolve the ip of the host instead of just doing a string comparison against what was passed in.
If someone is willing to give me hosting space, i would be happy to consider working on the service.