Don't filter by content, filter by graph connections. If the user doesn't have prior authorization to contact, just drop the message. Everyone can set their delivery limit to n connections. It gets hard for spammers to gain trust into the social graph. They are rare limited by the real people they can fool.
If you follow an interesting fool that keeps following bots or spammers you can just black list connections through them. That way you get to keep your friend but be immune to his foolish recommendations.