We're currently suffering from a spammer who's messaging users direct.
What functionality can I use to (1) detect, (2) block and then (3) clean up spammers and spam of this kind?
Unfortunately, there is no detection logic for abuse within private messaging as currently the private content would be exposed to moderators. The most effective action an affected user can take is to flag the account as abusive.
The easiest way to block members it to change existing member's private messaging configuration to only allow friends. Deleting spam accounts should also remove their messages.
(3) clean up spammers and spam of this kind
The most effective way is to delete the spam user account.