For the past few years I've hosted a service for spam-testing blog/forum comments, and I think it is on the verge of being retired.
- For the Debian Administration website.
- Which is now retired.
- For my blog
- Which still sees a lot of spam comments, but which are easy to deal with because I can execute Lua scripts in my mail-client
As a result of the Debian-Administration server cleanup I'm still in the process of tidying up virtual machines, and servers. It crossed my mind that retiring this spam-service would allow me to free up another host.
Initially the service was coded in Perl using XML/RPC. The current version of the software, version 2, is written as a node.js service, and despite the async-nature of the service it is still too heavy-weight to live on the host which runs most of my other websites.
It was suggested to me that rewriting it in golang might allow it to process more requests, with fewer resources, so I started reimplementing the service in golang at 4AM this morning:
The service does the minimum:
- Receives incoming HTTP POSTS
- Decodes the body to a
- Loops over that struct and calls each "plugin" to process it.
- If any plugin decides this is spam, it returns that result.
- Otherwise if all plugins have terminated then it decides the result is "OK".
I've ported several plugins, I've got 100% test-coverage of those plugins, and the service seems to be faster than the node.js version - so there is hope.
Of course the real test will be when it is deployed for real. If it holds up for a few days I'll leave it running. Otherwise the retirement notice I placed on the website, which chances are nobody will see, will be true.
The missing feature at the moment is keeping track of the count of spam-comments rejected/accepted on a per-site basis. Losing that information might be a shame, but I think I'm willing to live with it, if the alternative is closing down..