Ubuntu 14.04.1 LTS で実行している私の Amavis は、 「pyzor: check failed: internal error, python traceback seen in response」という内容の約 4 通のメールを毎日私に送信
します。それ、私はググった...
最初のヒントは「pyzor ping」でした。ユーザー amavis として実行したところ、結果は "public.pyzor.org:24441 (200, 'OK')" でした。
それで問題ないようです。生きてる。次に、「機能する」かどうかをテストしました。
Input:
spamassassin -D pyzor <1415394952.V54I4460799M230590.h2063374.stratoserver.net\:2\,Sa
Feedback:
Nov 25 08:48:16.182 [13757] dbg: pyzor: network tests on, attempting Pyzor
Nov 25 08:48:30.944 [13757] dbg: pyzor: pyzor is available: /usr/bin/pyzor
Nov 25 08:48:30.945 [13757] dbg: pyzor: opening pipe: /usr/bin/pyzor --homedir /etc/mail/spamassassin check < /tmp/.spamassassin13757wvlpQJtmp
Nov 25 08:48:30.992 [13757] dbg: pyzor: [13759] finished successfully
Nov 25 08:48:30.992 [13757] dbg: pyzor: got response: public.pyzor.org:24441 (200, 'OK') 1 0
グーグルでさらに検索した結果、何の助けにもならなかったので、「/usr/sbin/amavisd-new-cronjobのコンテンツを調べてください!」と思いました。
#!/bin/bash
# amavisd-new cronjob helper
#
# Run it as the amavis user
#
# First parameter specifies which cronjob routine to run:
# sa-sync: spamassassin fast sync
# sa-clean: spamassassin cleanup
test -e /usr/bin/sa-learn || exit 0
test -e /usr/sbin/amavisd-new || exit 0
if [ "$(id --name -u)" != "amavis" ]
then
echo "Please run this cronjob as user amavis"
exit 1
fi
set -e
umask 022
if ! perl -MMail::SpamAssassin -e "my \$spamtest = Mail::SpamAssassin->new();
\$spamtest->compile_now (); \$spamtest->{conf}->{use_bayes} ? exit 0 : exit 1"
then
#bayes is disabled - just exit
exit
fi
case $1 in
sa-sync)
/usr/bin/sa-learn --sync 2>&1 >/dev/null
;;
sa-clean)
/usr/bin/sa-learn --sync --force-expire 2>&1 >/dev/null
;;
*)
echo "$0: unknown cron routine $1" >&2
exit 1
;;
esac
exit 0
ユーザー Amavis として "sa-sync" と "sa-clean" を正常に実行できたので、エラーはさらに上のどこかにあるはずです。
次の行にコメントしたところ、突然 amavisd-new-cronjob をユーザー amavis としてエラーなしで実行できました...
#if ! perl -MMail::SpamAssassin -e "my \$spamtest = Mail::SpamAssassin->new();
#\$spamtest->compile_now (); \$spamtest->{conf}->{use_bayes} ? exit 0 : exit 1"
#then
# #bayes is disabled - just exit
# exit
#fi
これらの行が何をするのか、またはユーザー amavis がそれらを正常に実行するためにどの権限が必要なのかがわからないため、そのままにしておくのは気分が悪いです。
この問題を解決する方法のヒントはありますか?