※[2006/01/25]分かりづらかったので書き直しました。
※[2006/04/15]書きとめておくのを忘れてた、英文のみの投稿を拒否するスパム対策ネタを追加しました。

掲示板SPAMが鬱陶しい今日この頃、stlfbbsユーザーも同じ感想ではないでしょうか。
発信元が分かっていれば「.htaccess」でdenyすれば良いとして、各所から単発で来られると面倒。
(最近顕著な発信元は[server.myhostnet.net]。ログの8割がそれで埋まってるし……)

一番楽なのは、NGワード機能が付いている他の掲示板プログラムに乗り換えることなのですが、なんかそういうのはシャクなので、粛々と対応してみようかと試してみます。

●下準備

  • Windowsなら「秀丸」など、Macなら「mi」「Jedit」などの高機能なエディタを用意しておく。
  • FTPソフトで、日頃使っているstlfbbs.cgiをバイナリモードでダウンロードする。
  • 失敗した時の為に、スクリプトをコピーしてバックアップをとっておく。

●修正方法

70行目に下記のような行があるので、(「?」は半角の「¥」です。)

if ($url !~ /http:?/?/.{3,}/) { $url = ''; }

if ($mode eq 'reg') {

ここに、こんな1行を追加します。

if ($url !~ /http:?/?/.{3,}/) { $url = ''; }

if ($note =~ /ほにゃらら/) { &return_error('stlfbbs', '禁止語句が含まれます。'); }

if ($mode eq 'reg') {

何をやっているのかと言うと、本文の内容に「ほにゃらら」が含まれていたら、「禁止語句が含まれます。」というメッセージを出してエラーにするというもの。
日本語や、複数指定することも可能です。例えば、「catalog」「success」「drug」「ほげほげ」という単語を禁止したい時は

if ($url !~ /http:?/?/.{3,}/) { $url = ''; }

if ($note =~ /catalog/) { &return_error('stlfbbs', '禁止語句が含まれます。'); }
if ($note =~ /success/) { &return_error('stlfbbs', '禁止語句が含まれます。'); }
if ($note =~ /drug/) { &return_error('stlfbbs', '禁止語句が含まれます。'); }
if ($note =~ /ほげほげ/) { &return_error('stlfbbs', '禁止語句が含まれます。'); }

if ($mode eq 'reg') {

という塩梅に増やせば良いだけ。わりと簡単。
で、単語の中にハイフンやドットなどの記号が含まれる場合は、必ず「?」(半角の「¥」)を入れてください。
下記は、書込まれた内容に「.ru」「buy-」が含まれている場合の記述。

if ($note =~ /?.ru/) { &return_error('stlfbbs', '禁止語句が含まれます。'); }
if ($note =~ /buy?-/) { &return_error('stlfbbs', '禁止語句が含まれます。'); }

ホントはブラウザ上で語句を追加出来るのがベストなんですが、火急的速やかな対処としてはこれがとても効果的。
あとは、書き換えたスクリプトを同じ場所にアップロードするだけ。
きちんと動くか、禁止語句がきちんと弾かれるか試してみてください。

●追記(060415):英文だけの投稿を拒否するネタ

IPをコロコロ変更されたり、普通の文章に見せかけた嫌がらせに苦慮している方は、この方法が効果的です。
(Blosxom Starter Kitで使われてた英文スパムよけを参考にしてます)

if ($note =~ /^[?x00-?x7f]+$/) { &return_error('stlfbbs', 'ASCII only Comment.'); }

これを上の解説と同様に加えるだけ。簡単です。お試しあれ。