I'll tell you what I do. This wouldn't work for a high volume of users signing up. It works for me as my site gets about 1 new user every 2, 3, 4 days or so.
1. Get the Stop Spam plugin https://www.q2apro.com/plugins/stop-spam
and set a question
2. Go to the Users tab in the admin panel
3. Tick Custom message in email sent to new registered users:
4. Put this message inside:
"Please email me to get approved. firstname.lastname@example.org This is only required to verify you are a real person. Please include your Username (see below). I will respond to your email within (time period of your choice)."
5. Go to the Spam tab in the admin panel
6. Tick or un-tick as follows:
Un-tick Request confirmation of user emails:
Tick Enable moderation (approval) of users:
7. Go to the Permissions tab in the admin panel
8. Set the following to Approved users only
Voting on questions:
Voting on answers:
Voting on comments:
That's it. I get zero spam posts out of about 8000 posts per month on my site.