web-dev-qa-db-ja.com

/ root /の下の設定ファイルを読み取ろうとしているSpamAssassin

メールゲートウェイサーバーは、説明されているようにMailScanner + Postfix + SpamAssassinを使用するように構成されています ここ 、および MailWatch をWebフロントエンドとして使用します。

Sa-learnをMailWatchから実行すると(postfixユーザーとして実行されます)、次のエラーがスローされます。

SA Learn: config: path "/root/.spamassassin" is inaccessible: Permission denied, Learned tokens from 0 message(s) (1 message(s) examined)

「Sudo-upostfix spamassassin --lint -D」を実行すると、次の情報が得られます。

dbg: config: read file /etc/mail/spamassassin/mailscanner.cf
warn: config: path "/root/.spamassassin" is inaccessible: Permission denied
dbg: config: mkdir /root/.spamassassin failed: mkdir /root/.spamassassin: Permission denied at /usr/lib/Perl5/site_Perl/5.8.8/Mail/SpamAssassin.pm line 1577
dbg: config: Permission denied
dbg: config: using "/etc/MailScanner/spam.assassin.prefs.conf" for user prefs file

ベイズトークンは正しく学習されますが、このエラーは小さな煩わしさであり、修正したいと思います... SpamAssassinに構成と設定の/root/.spamassassin/ディレクトリをチェックしないように強制するか、MailWatchを修正しますそのため、sa-learnを正しく呼び出し、このエラーをスローしません。

3
gharper

本当の修正は、spamassassinで「ユーザーごとの」設定を無効にし、Baysean DBをグローバルに設定することですが、簡単なパッチは、Sudoに「-H」オプションを追加して、postfixのホームディレクトリを使用することです。接尾辞。

2
LapTop006

これはバグではありません。無効なユーザーでsa-learnコマンドを実行しているためです。たとえば、私のセットアップでは標準のdebian-spamdユーザーを使用しています。

# sa-learn -u debian-spamd --dbpath /var/lib/spamassassin/.spamassassin/bayes --dump magic
0.000          0          3          0  non-token data: bayes db version
0.000          0         84          0  non-token data: nspam
0.000          0       6565          0  non-token data: nham
0.000          0      15128          0  non-token data: ntokens
0.000          0 1510837441          0  non-token data: oldest atime
0.000          0 1519232775          0  non-token data: newest atime
0.000          0          0          0  non-token data: last journal sync atime
0.000          0          0          0  non-token data: last expiry atime
0.000          0          0          0  non-token data: last expire atime delta
0.000          0          0          0  non-token data: last expire reduction count

そしてアカウントの場合

# sa-learn --ham -u debian-spamd --showdots --dir /var/vmail/mydomain.com/support/cur/*
.
Learned tokens from 1 message(s) (1 message(s) examined)

サーバーとcronに20の電子メールアカウントがあり、ハムとスパムを照合しますが、エラーは発生しません。セットアップとuser:groupが関連するファイル/ディレクトリで正しいことを確認してください。

修正方法に関するクイックチュートリアルへのリンク https://www.devcu.com/forums/topic/745-spamassassin-is-inaccessible-permission-denied/

2
devCU Soft

これは回避策になる可能性があります。

# chmod o+x /root
# mv -f /root/.spamassassin /root/.spamassassin.err
# ln -s /var/spool/MailScanner/spamassassin /root/.spamassassin
# mkdir -p /var/spool/MailScanner/spamassassin
# chown postfix.Apache /var/spool/MailScanner/spamassassin
# chmod 770 /var/spool/MailScanner/spamassassin
1
Yeak

代わりにspamassassinデーモンspamdを使用するべきではありませんか?次に、spamassassinの代わりにspamcコマンドを使用します。基本的に、起動スクリプトからspamdを実行し、メールスキャナーからspamcを使用します。

0
wazoox

このように--dbpathパラメータを追加してみましたか?

sa-learn --dbpath /var/lib/amavis/.spamassassin/ ....
0
hayalci

原因
原因は、spamassassin(sa-learn、spamc、spamd、spampdなどによって呼び出されます)が$ HOMEからユーザーごとの構成ファイルを読み取ろうとすることです。

これは、構成オプションallow_user_rulesが0に設定されている場合でも発生します(IMOこれはおそらくバグであり、long時間)。

(権限のために)このフォルダーが見つからないため、フォルダーの作成を試みます。

Cron内でsa-learnを実行する人は、実行が成功した場合でも失敗の電子メールを受け取るため、これは非常に煩わしいことを知っています。エラーをグーグルで検索してくださいconfig:path "/root/.spamassassin" is inaccessible:Permission deniedそしてこれが影響する人の数(そして彼らが提案する安全でない修正)を見てください。 cronの唯一の安全な解決策は、cronを点火し、stdoutとstderrを/ dev/nullにパイプすることでしたが、それは少し極端です。

これは、渡される-C、-p、または--dbpathオプションに関係なく行われるため、コマンドラインオプションまたはグローバル構成で修正することはできません。

修正
私にとってうまくいった解決策は、sa-learnを呼び出して、spamassassinを実行しているroot以外のユーザーが書き込むことができる場所を指す一時的な$ HOME環境変数を渡すことです。私の場合、これは/ var /です。キャッシュ/ spampd:例.

HOME=/var/cache/spampd sa-learn --spam /var/vmail/jason/.SPAM/cur
0
Jason Morgan