I use a multi-layer form of defense on Drupal. First, the comment form (and account registration form) has an invisible field (hidden by CSS) that a) regular sighted users won't see and b) is properly labeled so a blind user's screen reader will correctly identify it as something to skip over but c) a spambot will automatically fill something in it. If the form gets filled in, it's immediately discarded.
Second, I use something called Mollom that is pretty good at picking out spam.
Third, I have my comments fields set up so that people can leave a signature, and it's pretty easy to scan those to figure out which of the remaining posters are spammers and which aren't.
It works pretty well so far, but some of you get more traffic than I do.