FreeBSDのportsには、オリジナルのmail/spamassassinと、日本語patchがあたったjapanese/spamassassinがありました。
しかし、japansese/spamassassinは2018-12-31で削除されてしまったようです。(FreshPorts)
昨日の迷惑メール報告の記事を書いた後で、sa-learn が失敗していることで気がつきました。
patchの開発状況を確認すると、もともとspamassassin-3.4.0と3.4.1用のパッチがあったようですが、3.4.2には同じパッチが当たらなかったようで、その辺もportsが削除された原因かも知れません。
参考: SpamAssassinの日本語対応状況 - インフラエンジニアway - Powered by HEARTBEATS
日本語パッチがあたっていないと、日本語のベイズフィルタの学習がうまくできないのと、そもそも tokenizer.preで指定したプラグインのロードに失敗します。
本来であれば、新しい japansese/spamassassin portsを作成すべきなのでしょうが、メンテナになるほどの根性もないので、既存の mail/spamassassin の portsをちょこっといじってお茶を濁すことにします。
まずは、Makefileに以下を追加します。
PATCHFILES=spamassassin-3.4.2-japanese-tokenizer.patch
PATCH_SITES=https://raw.githubusercontent.com/heartbeatsjp/spamassassin_ja/maste
r/patches/
PATCH_DIST_STRIP=-p1
githubのファイルにリンクを貼る方法がわからなかったのでPATCH_SITESを上記のようにしたのですが、正しいやり方ってあるんですかね?
これだけだと、makeしても以下のエラーで止まってしまいます。
# make
===> License APACHE20 accepted by the user
===> spamassassin-3.4.2_3 depends on file: /usr/local/sbin/pkg - found
=> spamassassin-3.4.2-japanese-tokenizer.patch is not in /usr/ports/mail/spamassassin/distinfo.
=> Either /usr/ports/mail/spamassassin/distinfo is out of date, or
=> spamassassin-3.4.2-japanese-tokenizer.patch is spelled incorrectly.
*** Error code 1
そこで、実際にこのファイルを fetch コマンドで持ってきて、ls と sha256 コマンドでファイルのサイズと sha256 を求め、distinfoに追加します。
SHA256 (spamassassin-3.4.2-japanese-tokenizer.patch) = 4179a177e8b03afff0738ba482e43cb8bda5266d9e04f3d7fe6741b054f305a5
SIZE (spamassassin-3.4.2-japanese-tokenizer.patch) = 20109
これだけだと、stageから実際の場所に追加のファイルがインストールされないので、pkg-plistにも追加します。
%%SITE_PERL%%/Mail/SpamAssassin/Plugin/Tokenizer.pm
%%SITE_PERL%%/Mail/SpamAssassin/Plugin/Tokenizer/MeCab.pm
%%SITE_PERL%%/Mail/SpamAssassin/Plugin/Tokenizer/SimpleJA.pm
後は、再インストールすればOK
# service sa-spamd stop
# make
# make deinstall
# make reinstall
# service sa-spamd start
spamassassinはもう流行らないんですかねえ。何か代わりのものがあるのかなあ。