gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 10:30:23 24 4
gpt4 key购买 nike

我在 Ubuntu 14.04.1 LTS 上运行的 Amavis 每天向我发送大约 4 封邮件,内容如下:
“pyzor:检查失败:内部错误,在响应中看到 python 回溯”
好吧,因为我没有看到任何回溯并且无法找到它,所以我用谷歌搜索...

第一个提示是“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

在 google 中进一步搜索后没有任何帮助结果,我想“查看/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

我能够成功执行“sa-sync”和“sa-clean”作为用户 Amavis,因此错误必须在更远的地方。

我评论了以下几行,突然能够以用户 amavis 的身份执行 amavisd-new-cronjob 而没有任何错误...

#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 需要哪些权限才能成功运行它们。

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

最佳答案

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

您可以使用 documented command line 测试 pyzor 来跟踪错误:

$ su - amavis -c "echo test | spamassassin -D pyzor 2>&1 | less"

当然你可以用真实的垃圾邮件代替“echo test”以获得真实的测试结果。但是 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

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

干杯,马可

关于python - 来自 amavisd-new-cronjob sa-sync 的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27128763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com