2014-11-25 59 views
1

我在一臺Ubuntu 14.04.1 LTS中運行的Amavis每天給我發送大約4封郵件,內容如下:
「pyzor:check failed:internal error,python traceback seen在迴應「
好,因爲我沒有看到任何回溯,並沒有能夠找到它,我谷歌搜索...來自amavisd-new-cronjob sa-sync的錯誤

第一個提示是」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-新的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 

我能succsessfully執行 「SA-同步」和「SA-乾淨」作爲用戶AMaViS對這樣的錯誤在某處被進一步上漲。

我評論如下線和突然能夠爲用戶AMaViS對沒有任何錯誤執行的amavisd-新的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需要成功運行它們。

有沒有人提示我如何解決這個問題?

回答

4

我最近調查了這個問題,因爲我從cron得到了同樣的錯誤。我的服務器運行Debian Wheezy。

您可以使用documented command line跟蹤由測試pyzor錯誤:

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

當然,你可以爲了得到一個真正的測試結果與真正的垃圾郵件替換「回聲測試」。但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 

的組和權限要檢查是否真正幫助你可以簡單地重新運行測試命令行(上面)解決了這個。它現在應該沒有錯誤地返回。

乾杯, 馬爾科

+0

非常感謝,它幫助我解決這個問題! :) – user1660311 2015-04-05 20:18:10

+0

給這個人的複選標記。 – vmassuchetto 2015-09-01 12:38:27