Anyway, last night, I turned anonymous comments back on after installing Akismet checks for anonymous posts (a small change to talkpost_do.bml).
This morning, I found that 40 spam comments had been blocked (yay!) but a couple still got through, and I wanted to feed those back into Akismet. A modification to talklib.pl did the job.
Hope this helps someone else out there.
--- cvs/livejournal/cgi-bin/talklib.pl 2007-07-05 15:44:25.186758848 -0400 +++ cgi-bin/talklib.pl 2007-07-16 11:08:52.073345947 -0400 @@ -1764,6 +1764,25 @@ return 1 unless $ip; } + if($LJ::DO_AKISMET) { + my $akismet = Net::Akismet->new(KEY => $LJ::AKISMET_KEY, + URL => 'http://www.openweblog.com/', + ) or die('Key verification failure!'); + + my $verdict = $akismet->spam(USER_IP => $ip, + COMMENT_CONTENT => $body, +# REFERRER => $referer, + ) or die('Is the server here?'); + + if ($verdict) { + warn "Akismet accepted spam report: $ip, $subject\n"; + return LJ::server_down_html(); + } + else { + warn "Akismet failed on spam report: $ip, $subject\n"; + } + } + # step 3: insert into spamreports $dbh->do('INSERT INTO spamreports (reporttime, posttime, ip, journalid, posterid, subject, body) ' . 'VALUES (UNIX_TIMESTAMP(), UNIX_TIMESTAMP(?), ?, ?, ?, ?, ?)', --- cvs/livejournal/htdocs/talkpost_do.bml 2007-02-10 13:49:08.543614258 -0500 +++ htdocs/talkpost_do.bml 2007-07-16 11:04:11.060038865 -0400 @@ -31,6 +31,31 @@ return LJ::server_down_html() if $LJ::SERVER_DOWN; + if($LJ::DO_AKISMET && $POST{'usertype'} eq 'anonymous') { # akismet check + my $ip = $ENV{'REMOTE_ADDR'}; + my $body = $POST{'body'}; + my $referer = $ENV{'HTTP_REFERER'}; + my $subject = $POST{subject}; + + my $akismet = Net::Akismet->new(KEY => $LJ::AKISMET_KEY, + URL => 'http://www.openweblog.com/', + ) or die('Key verification failure!'); + + my $verdict = $akismet->check( + USER_IP => $ip, + COMMENT_CONTENT => $body, + REFERRER => $referer, + ) or die('Is the server here?'); + + if ('true' eq $verdict) { + warn "Akismet reports spam: $ip, $referer, $subject\n"; + return LJ::server_down_html(); + } + else { + warn "Akismet reports no spam: $ip, $referer, $subject\n"; + } + } + LJ::need_res('stc/display_none.css'); # Set the title to be for an error, it will be changed later