非ルートユーザーとして spamassassin を使用する際の問題

非ルートユーザーとして spamassassin を使用する際の問題

私はUbuntu 14.04でspamassassinをrootとして実行しています。CheckやReportSpamなどのメソッドを呼び出すときは、チェックを実行する別のユーザーも渡しています。しかし、権限の問題が発生します。

spamd: Can't locate Mail/SpamAssassin/PerMsgLearner.pm: 
Permission denied at /usr/share/perl5/Mail/SpamAssassin.pm line 644, <GEN14> line 7.

そのPerlスクリプトの644行目を見ると、別のPerlファイルをインポートしようとしていることがわかります。

require Mail::SpamAssassin::PerMsgLearner;

これは、root として実行する場合の問題ではありません。関数を root として実行する場合の問題は、bayes ファイル (時間の経過とともにスパムについて学習するためのファイル) が、存在しないディレクトリ (「nobody」ユーザーのホーム ディレクトリ) である /nonexistent に書き込まれることです。

そのため、root または別のユーザーとして SpamAssassin にベイズ ファイルをディスクに書き込ませることができず、学習機能が壊れてしまいます。

答え1

結局、次の行を/etc/mail/spamassassin設定に追加して、spamassassin を再コンパイルする必要がありました。末尾にファイル名を含めることが重要です (例: bayes)。

bayes_path /path/to/dir/bayes

関連情報