DSPAM generally did a good job, but just had too many issues.
When using the Berkeley DB backend, it ran fast enough, but the database got corrupted way too easily. Anytime I was correcting an e-mail as spam/ham, while another e-mail arrived, the database would end up corrupted.
So I tried the SQL DB backend, which ran reasonably well at first, but after a couple of weeks, it started getting really slow. And really big. When I finally decided to change, and deleted my DSPAM signature/token database, it was almost 600MB! There's a problem somewhere when it gets that big (and that was after I'd gone through and "cleaned" the database of stale entries, as per the instructions.
So I decided to try CRM114, which, ironically enough, I discovered through praise from the DSPAM author as being one of the better anti-spam utilities around. And so far, I have to agree. It's been reasonably fast, and it uses fixed-sized data files. So once their "full", it flushes out older entries to make room for new ones, instead of growing. And once that starts happening, it also tends to run at a fixed speed.
You can manually increase the size of the data files if you want, though. Depending on the variety of e-mail and spam you get, more data can lead to greater accuracy. I'm gonna leave it at the default for now, and increase it if I feel it's warranted later.
I'm also going to try to get ClamAV setup to kill trojan-spam/virus-spam before it even gets to me. That'll be next week's project.