Spamassassin贝叶斯不工作

时间:2017-03-09 23:26:50

标签: spamassassin

我在任何电子邮件上都没有获得贝叶斯评分,尽管我付出了最大努力,但似乎没有贝叶斯过滤。我不是linux和spamassassin大师,所以我要求一些帮助。

我已经在local.cf中构建了这些设置,试图让bayes工作:

use_bayes 1 
bayes_auto_learn 1 
bayes_min_ham_num 100 
bayes_auto_learn_threshold_nonspam -0.001 
bayes_auto_learn_threshold_spam 6.0 
allow_user_rules 0
add_header all Status _YESNO_, score=_SCORE_ required=_REQD_ tests=_TESTS_ autolearn=_AUTOLEARN_ version=_VERSION_ 

spamassassin日志文件始终显示一个错误:

Fri Mar  3 12:36:27 2017 [10104] info: spamd: creating default_prefs: /root/.spamassassin/user_prefs 
Fri Mar  3 12:36:27 2017 [10104] info: spamd: failed to create readable default_prefs: /root/.spamassassin/user_prefs 

偶尔出现一个错误:

warn: plugin: eval failed: bayes: (in learn) locker: safe_lock: cannot create tmp lockfile /root/.spamassassin/bayes.lock.[mydomain.com].27903 for /root/.spamassassin/bayes.lock: Permission denied 

/root/.spamassassin/user_prefs确实存在,并且我已经授予每个人权限以尝试解决此问题,但没有效果:

-rwxrwxrwx 1 root root    1273 Mar  1 14:46 user_prefs* 

我的垃圾邮件启动命令明确将用户设置为垃圾邮件,但主服务仍以root身份运行,而子级似乎正在正确生成。这是ps输出:

root     10093  0.0  1.5 145988 66952 ?        Ss   02:25   0:05 /usr/sbin/spamd --create-prefs --max-children=5 --username=spamd --helper-home-dir=/var/log/spamassassin/ --syslog=/var/log/spamassassin/spam .log -d --pidfile=/var/run/spamd.pid 
spamd    10104  0.0  1.8 155348 75544 ?        S    02:25   0:22 spamd child 
spamd    23753  0.0  1.7 151732 72000 ?        S    10:30   0:02 spamd child 

我的bayes数据库存在root:

sa-learn --dump magic 
0.000          0          3          0  non-token data: bayes db version 
0.000          0       1727          0  non-token data: nspam 
0.000          0        111          0  non-token data: nham 
0.000          0     103812          0  non-token data: ntokens 
0.000          0 1484629200          0  non-token data: oldest atime 
0.000          0 1488559525          0  non-token data: newest atime 
0.000          0 1488323169          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 

我的所有电子邮件标题都有其中任何一个,尽管我强制使用上面显示的阈值自动学习:

autolearn=unavailable autolearn_force=no 

autolearn=no autolearn_force=no 

最后,这里是spamassassin日志的完整片段,显示它识别垃圾邮件,但不应用任何贝叶斯处理,而显然是以root身份运行:

Fri Mar  3 12:55:11 2017 [10104] info: spamd: connection from localhost [::1]:54673 to port 783, fd 6 
Fri Mar  3 12:55:11 2017 [10104] info: spamd: creating default_prefs: /root/.spamassassin/user_prefs 
Fri Mar  3 12:55:11 2017 [10104] info: spamd: failed to create readable default_prefs: /root/.spamassassin/user_prefs 
Fri Mar  3 12:55:11 2017 [10104] info: spamd: processing message <5323541152335322929654419@lo.nbvc12345.xyz> for root:1010 
Fri Mar  3 12:55:11 2017 [10104] info: spamd: identified spam (10.5/3.0) for root:1010 in 0.2 seconds, 8433 bytes. 
Fri Mar  3 12:55:11 2017 [10104] info: spamd: result: Y 10 - HTML_FONT_LOW_CONTRAST,HTML_MESSAGE,MPART_ALT_DIFF,RCVD_IN_BRBL_LASTEXT,RCVD_IN_SBL_CSS,RDNS_NONE,T_REMOTE_IMAGE,URIBL_BLOCKED,URIBL_DBL_SPAM,URIBL_SBL,URIBL_SBL_A scantime=0.2,size=8433,user=root,uid=1010,required_score=3.0,rhost=localhost,raddr=::1,rport=54673,mid=<5323541152335322929654419@lo.nbvc12345.xyz>,autolearn=no autolearn_force=no 
Fri Mar  3 12:55:11 2017 [10093] info: prefork: child states: II 

这是一个完整的垃圾邮件片段,因为没有贝叶斯过滤:

Fri Mar  3 13:01:31 2017 [10104] info: spamd: connection from localhost [::1]:56926 to port 783, fd 6 
Fri Mar  3 13:01:31 2017 [10104] info: spamd: creating default_prefs: /root/.spamassassin/user_prefs 
Fri Mar  3 13:01:31 2017 [10104] info: spamd: failed to create readable default_prefs: /root/.spamassassin/user_prefs 
Fri Mar  3 13:01:31 2017 [10104] info: spamd: processing message <sie819-8bh73y10780523sdgw_ds7fid385303272d2g-8h723se@email.searchresultsnewinfo.com> for root:1010 
Fri Mar  3 13:01:31 2017 [10104] info: spamd: clean message (1.3/3.0) for root:1010 in 0.3 seconds, 8104 bytes. 
Fri Mar  3 13:01:31 2017 [10104] info: spamd: result: . 1 - RDNS_NONE,URIBL_BLOCKED scantime=0.3,size=8104,user=root,uid=1010,required_score=3.0,rhost=localhost,raddr=::1,rport=56926,mid=<sie819-8bh73y10780523sdgw_ds7fid385303272d2g-8h723se@email.searchresultsnewinfo.com>,autolearn=no autolearn_force=no 
Fri Mar  3 13:01:31 2017 [10093] info: prefork: child states: II 

bayes数据库在/root/.spamassassin中的问题是否且子进程无法访问它?它应该在哪里,还是其他什么?在我有限的知识结束时。任何帮助赞赏。

3 个答案:

答案 0 :(得分:1)

此问题与以root用户身份运行的垃圾邮件和在用户&#34; spamd&#34;下运行的垃圾邮件子邮件(spamc)相关,但没有足够的权限访问/root/.spamassassin中的bayes数据库。

要让spamassassin正确查看bayes数据库,它必须位于孩子们可以访问的位置,我必须通过将此行添加到local.cf告诉spamassassin在哪里找到它

bayes_path /var/spamassassin/bayesdb/bayes

然后我需要创建/ var / spamassassin / bayesdb(而不是/ var / spamassassin / bayesdb / bayes作为尾随&#34; bayes&#34;是将在bayesdb文件夹中的文件名的前缀)和使用户&#34;垃圾邮件&#34;所有者:

cd /var
chown -R spamd:some_group spamassassin

然后我将现有的bayes数据库文件从/root/.spamassassin移动到/ var / spamassassin / bayesdb,对文件执行了与上面相同的所有权操作,并且bayes过滤开始正常工作。

我没有解决试图在/root/.spamassassin中创建user_prefs的孩子的问题,因为它与权限相同,但似乎并没有影响到工作的贝叶,这些都是我在追求。

答案 1 :(得分:0)

我也不是专家,但它可能与selinux阻止访问有关。希望这能为您指明进一步排除故障的正确方向。

答案 2 :(得分:0)

你需要训练至少有200条火腿信息的贝叶斯数据库,你就少了:

111 0 non-token data: nham

请参阅https://wiki.apache.org/spamassassin/BayesNotWorking