However, you are right, the Linux OOM killer BLOWS.
I have encountered the same problem as you with spamassassin.

Fortunately, it is possible to disable the OOM killer. The tradeoff is that it is then possible for poorly-written programs (such as spamassassin) to exhaust memory and then not terminate; depending on the programmer's level of ineptness, they will either continue blithely on after a failed malloc producing unpredictable results, or sit there and spin forever waiting for the malloc to succeed.

I guess the only real solution is to run programs which are well written and nice to your system by design. I had an idea once about taking priority into account when in a OOM situation, but never wrote any code. The idea would be that lower priority processes would be killed in preference to higher priority ones. That way, if you know you have a misbehaving app like spamassassin, you can just nice it to 10 or something - that way it is harder to DoS the system, and it becomes the first choice for the OOM killer.

Pissed me off too, the night that it happened I had been drinking quite heavily at the local bar and wound up coming in to work at 11 pm totally plowed.
Yeah, I know that feeling. Fortunately I'm not employed as a sysadmin right now ;)