Akismet is my favourite comment anti-spam plugin for WordPress. It connects to a central server which it uses to manage spam identification. It has an extremely high success rate, but recently I found that it had stopped working.
Akismet had stopped blocking spam and I was getting this error:
Akismet has detected a problem. Some comments have not yet been checked for spam by Akismet. They have been temporarily held for moderation. Please check your Akismet configuration and contact your web host if problems persist.
A bit more investigation into why Akismet was not working gave these errors on the Akismet settings page:
The key below was previously validated but a connection to akismet.com can not be established at this time. Please check your server configuration.
Unable to reach any Akismet servers.
Network Status: Re-trying
So Akismet wasn’t working because it couldn’t connect to the server to check whether comments were spam or not and therefore wasn’t blocking anything. The first thing I checked was my hosts firewall, ensuring that port 80 was open to the following IP addresses:
Next I checked the Akismet service status to ensure that the spam blocking servers were not down.
You can also check this (in a different way with nice graphs), but clicking on the link at the bottom of the Akismet Settings page.
The next thing that I checked was that my host hadn’t disabled PHP’s fsockopen and gethostbynamel functions, as this can also stop Akismet from blocking spam. When I spoke to my hosting provider (again) they told me that actually, they had closed the firewall ports temporarily while they addressed a hack that was occurring against their servers.