SpamAssassinでBayesフィルタが効かない(訂正)

むかしSpamAssassinでBayesフィルタがきなかいってことで、こんなエントリをかきましたが、うそっぽいです。
bayes_tokenテーブルがUTF8で作成されていて、spamassassinがそれを読めないって言ってるんだから、UTF8を指定しなおしてもNGで、bayes_tokenテーブルをlatin1で再作成してやらないとだめ。

ということで、bayes_tokenテーブルの中身を気にしないんだったらこんな感じで。

まずテーブル作成のSQLを準備

こんな内容のSQLです。もうすでにbayes_tokenってテーブルがあるので、別の名前で作成。

CREATE TABLE bayes_token_test (
  id int(11) NOT NULL default '0',
  token char(5) NOT NULL default '',
  spam_count int(11) NOT NULL default '0',
  ham_count int(11) NOT NULL default '0',
  atime int(11) NOT NULL default '0',
  PRIMARY KEY  (id, token),
  INDEX bayes_token_idx1 (token),
  INDEX bayes_token_idx2 (id, atime)
) default charset=latin1 TYPE=MyISAM;

テーブルをリネーム

mysql> rename table bayes_token to bayes_token_bak ;
mysql> rename table bayes_token_test to bayes_token ;

データをコピー

したいところなんですが、なんだかprimary keyが重複しているとかエラーがでるので断念。

mysql> insert into bayes_token select * from bayes_token_bak ;

ようやくBayesフィルタが効くようになりました。

Sep 14 17:43:21 hoge sendmail[20749]: [ID 801XXX mail.info] n8E8fDFB0XXXXX: Milter change (add): header: X-Spam-Score: 32.231(required:11) ******************************** BAYES_00,CONTENT_TYPE_PRESENT,DCC_CHECK,DIET_1,DIGEST_MULTIPLE,HTML_MESSAGE,MIMEQENC,MULTIPART_ALTERNATIVE,QENCPTR1,QENCPTR2,RAZOR2_CF_RANGE_51_100,RAZOR2_CF_RANGE_E8_51_100,RAZOR2_CHECK,RAZORFIVETEN,RCVD_IN_FIVETENSG,RCVD_IN_PBL,RCVD_IN_RELAYS_ORDBORG,RCVD_IN_SORBS_DUL,RDNS_NONE,SORBSDUL00,URIBL_AB_SURBL,URIBL_BLACK,URIBL_JP_SURBL,URIBL_OB_SURBL,URIBL_RHS_DOB,URIBL_SC_SURBL,URIBL_WS_SURBL,URLBL_RBLJP,X_MAILER_PRESENT