我不确定 SF 是否是处理此类问题的最佳地点,如果情况并非如此,我深表歉意。我正在为我们公司的电子邮件管理一个 Debian 服务器,并试图让 Spamassassin 将电子邮件标记为垃圾邮件,然后将其放入每个用户的专用文件夹(如 Spam/ 或 Junk/),但我无法做到这一点。我已经让 Postfix 和 SpamAssassin 运行良好(SA 正确地在主题字段中标记垃圾邮件),但现在我必须设置 Procmail 过滤器以将它们放在我想要的位置。
这是我所拥有的:在我的 /etc/postfix/master.cf 中,我有一个 SA 规则:
spamassassin unix - n n - - pipe
user=spamd argv=/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}
我尝试为垃圾邮件过滤添加一条规则:
spamfilter unix - n n - - pipe
flags=Rq user=vmail argv=/usr/bin/procmail -Y -m /etc/postfix/procmail-spamassassin.rc
还有我的 /etc/postfix/procmail-spamassassin.rc :
SHELL=/bin/sh
LOGFILE=/var/log/procmail.log
VERBOSE=yes
LOGABSTRACT=all
:0
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
Junk
但它不起作用,我不明白为什么……我在 procmail.log 中没有输出,所以我不知道如何调试它(我的 Postfix 日志没有提供更多信息)。postfix reload
似乎忽略了我的更改。我尝试了许多其他配置,例如mailbox_command
在我的 main.cf 中使用 Procmail,但效果并不好……作为信息,我们使用 Postfix 虚拟邮箱(邮箱存储在 MySQL 中,未与 Unix 帐户映射)。
我知道 Procmail 可以这样运行,因为我的 master.cf 中有一个类似的休假过滤器,而且它可以工作:
vacation unix - n n - 10 pipe
flags=Rq user=vacation argv=/usr/bin/procmail -Y -m /etc/postfix/procmail-global-repondeur.rc ${sender} ${recipient}
你知道我做错了什么吗?
答案1
为什么不直接将最终邮件目的地设为 procmail?无需设置其他传输。查看mailbox_command
main.cf 中的值。
答案2
您是否在“传输”表中添加了“垃圾邮件过滤器”?