Use
https://akismet.com/wordpress/Also...
Check the following boxes under /wp-admin/options-discussion.php
Comment author must fill out name and e-mail
Users must be registered and logged in to comment
E-mail me whenever
E-mail me whenever Anyone posts a comment
A comment is held for moderation
Before a comment appears
Before a comment appears Comment must be manually approved
Comment author must have a previously approved comment
Also set
Comment Moderation
Hold a comment in the queue if it contains 1 or more links. (A common characteristic of comment spam is a large number of hyperlinks.)
This is how my blog site is set up and it's effectively spam free.