I would like to give unregistered visitors the chance to send emails to node authors through a contact form. What would be the best and most efficient way to filter out spam?
1) Simply add a CAPTCHA to the contact form. However, I experienced CAPTCHA module to be not very reliable and I won't be able to afford Mollom.
2) Involve an external Gmail account and make use of their sophisticated spam filters. For example, when user A submits a contact form on a node created by user B, the email is first sent to an external Gmail account, filtered, and then - if spam free - forwarded to user B.