来自amavisd-new-cronjob sa-sync的错误

时间:2014-11-25 14:02:33

标签: python cron bayesian mail-server spamassassin

My Amavis我在Ubuntu 14.04.1 LTS中运行,每天发送给我4个邮件,内容如下:
" pyzor:检查失败:内部错误,响应中看到的python回溯"
好吧,因为我没有看到任何追溯,也无法找到它,我用Google搜索...

第一个提示是" pyzor ping"。我将其作为User 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

在谷歌进一步搜索后没有任何帮助结果我想&#34;查看/ usr / sbin / amavisd-new-cronjob的内容!&#34;

#!/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

我能够成功地执行 &#34; SA-同步&#34; &#34; sa-clean&#34;作为用户Amavis所以错误必须在某个地方。

我评论了以下几行,突然能够以没有任何错误的方式执行amavisd-new-cronjob作为User 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需要成功运行它们的哪些权限。

有人提示我如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

我最近调查了这个问题,因为我收到了来自cron的邮件相同的错误。我的服务器运行Debian Wheezy。

您可以使用documented command line

测试pyzor来跟踪错误
$ su - amavis -c "echo test | spamassassin -D pyzor 2>&1 | less"

当然你可以替换&#34; echo test&#34;使用真正的垃圾邮件以获得真实的测试结果。但BTT:在我的情况下,问题是amavis没有权限阅读/ etc / spamassassin / servers。我通过更改文件的组和权限来解决这个问题

$ ls -l /etc/spamassassin/servers
-rw------- 1 debian-spamd root 23 Mär 27 10:34 /etc/spamassassin/servers
$ chgrp amavis /etc/spamassassin/servers; chmod g+r /etc/spamassassin/servers

要检查这是否真的有帮助,您只需重新运行测试命令行(从上面)。它现在应该没有错误地返回。

干杯, 马可