Skip to content

Tracking Blog Spam

My blog is getting killed with spam, greater than 300 per day. Does anybody know how to implement CAPTCHA in typo? Or make Akismet do a better job of ranking?

In the meantime I’ve taken to blocking IP addresses. Here’s a handy little script I worked up (regex from the Perl regex FAQ) to take a block of arbitrary text (copy ‘n paste from my typo admin console’s log of comments) and spit back iptables blockrules for any IP addresses found in the text:

#!/usr/bin/perl -w
use strict;
use warnings FATAL=>'all';

my (@addresses);
while (<>) {
    my $str = $_;
    if ($str =~ /d{1,3}.d{1,3}.d{1,3}.d{1,3}/)
    {  #{1,3} says find at least 1 and no more than 3 of d.
        # we must escape the dots . which are normally wild cards
        # to make them match dots.
        # you might have notice already that $& contains the last match
        my $remoteHost = $&;
        push(@addresses,$remoteHost);
    }
}

foreach my $address (@addresses) {
    if ($address ne '127.0.0.1') {
        print "-A RH-Lokkit-0-50-INPUT -s $address -j DROPn";
    }
}

Now, this isn’t the best strategy as of 789 spams, there were 189 unique hosts, so it’s more distributed than I’d like. Perhaps it’s a start, though.

Update: I installed Typo 4.1 which has a feature called ‘Enable Spam Protection’, which looks at blacklists.