我正在尝试让 dovecot-antispam 与 SpamAssassin 的 sa-learn 协同工作。这是我的 Dovecot 配置:
antispam_backend = pipe
antispam_trash = trash;Trash;Deleted Items; Deleted Messages
antispam_spam = Junk
antispam_pipe_program_spam_arg = --spam
antispam_pipe_program_notspam_arg = --ham
antispam_pipe_program = /usr/bin/sa-learn
antispam_pipe_tmpdir = /tmp
但是,我似乎无法让它工作。当我尝试将假阴性从/移到 MUA 中的垃圾邮件文件夹时,我收到以下错误:
[SERVERBUG] Failed to send mail
以下是 dovecot-antispam 记录的内容:
imap: antispam: mail copy: src spam: 1, dst spam: 0, src unsure: 0
imap: antispam: running mailtrain backend program /usr/bin/sa-learn
imap: antispam: running mailtrain backend program /usr/bin/sa-learn
imap: antispam: running mailtrain backend program parameter 1 --ham
imap: antispam: run program failed with exit code 2
因此显然sa-learn
以代码 2 退出。但是,我不知道这意味着什么。sa-learn 的文档没有提到任何有关退出代码的内容,所以我不知道应该从哪里开始调试它。
答案1
当您移动消息时,然后使用dovecot 的 UIDdovecot
调用,因此没有足够的权限来更新贝叶斯数据库。sa-learn
sa-learn
您必须将dovecot
的用户添加到spamd
组中,并确保您有下一行
bayes_file_mode 0660
在etc/spamassassin/local.cf
文件中。
您还必须验证贝叶斯数据库是否已经具有权限 0660。然后重新启动spamassassin
。