Procmail在部分用户账户中无法工作且无日志输出的问题排查求助
各位前辈好!我是一名系统管理员,我们平台有不少对技术不太熟悉的用户,最近得负责解决大家的垃圾邮件问题。目前SpamAssassin识别垃圾邮件的效果不错,但现在需要把识别出来的垃圾邮件自动移到专门目录,方便用户偶尔找回被误判的正常邮件(也就是SA里说的ham)。
之前我用IMAP阅读器手动处理,但这显然不是长久之计,SA官方推荐我用Procmail——这个工具之前闲置了很久,最近原作者Stephen R. van den Berg又更新维护了,新版3.22修复了不少bug(不过Tripleee提醒我这其实还是旧版,新版得等Fedora 38的rawhide测试版,我们现在用的是1月更新的Fedora Server 37,搭配Postfix 3.7和SpamAssassin 3.4)。
我先挑了一个很少有收件的账户做测试,结果一开始完全没动静(连个响都没有)。后来我在~/.procmailrc里加上了日志配置,又补了几个默认环境变量,尤其是MAILDIR的设置,居然一下子就正常工作了!这些关键配置帮我排查了小问题,分享给大家:
USER=<the_username> LOGFILE=/var/log/procmail.$USER VERBOSE='yes' LOGABSTRACT='all' MAILDIR=$HOME/mail
我只写了一条规则:
:0 * ^X-Spam-Status: *Yes Spam
这里说明下,大写的Spam目录用来放SA识别出的垃圾邮件(可能存在误判),而用户需要把SA漏判的垃圾邮件手动放到小写的spam文件夹,用来训练SA的识别模型。
现在问题来了:我把这套完全一样的配置复制到几个更常用、更重要的账户,修改了文件权限后,从/var/mail/maillog里能看到Procmail确实被调用了,但配置里指定的LOGFILE完全没有日志内容——就像我第一个测试账户最初的状态,但这次我已经提前加了日志配置啊!换了另一个账户试也是一样的情况,权限我反复检查过,甚至给.forward加了执行权限也没用。
另外补充两个可能对大家有用的小经验:
- 如果在
/var/log下创建一个procmail日志文件,把权限设为777,所有用户都能共用这个日志,不会有目录权限问题; - 在我们这个Fedora系统上,必须要有
.forward文件才能让Postfix调用Procmail,具体的调用逻辑我还没来得及深入研究。
真心求助各位大佬,我肯定是漏了什么细节,现在能让这些账户的Procmail日志先正常工作就谢天谢地了!
备注:内容来源于stack exchange,提问作者Richard T

