我在 postfix 设置中使用
-o content_filter=spamassassin
和如下传输实现了 spamassassin 邮件过滤:
spamassassin unix - n n - - pipe
user=spamassassin argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
接下来,我想使用user_prefs
如下选项通过 sql 实现基于用户的 spamassassin 偏好设置这里。
- 这个设置将如何处理别名?
- 在别名扩展之前会调用 spamassassin 吗?
- 如果是这样的话,整个基于用户的偏好设置几乎就被破坏了。有没有办法实现完整的基于用户的偏好设置,即使使用别名?
答案1
我通过围绕 sendmail 创建包装脚本来调查这个问题(因为它${recipient}
无论如何都是作为参数)。
#!/bin/bash
echo "$@" >> /var/log/sendmail-test.log
/usr/sbin/sendmail-orig "$@"
这小段代码实际上表明别名似乎在移交给 spamassassin 之前已经经过处理。太棒了。
在执行此操作时我注意到的另一件重要的事情是,在 main.cf 中包含这样的一行非常重要:
spamassassin_destination_recipient_limit = 1
如果不这样做,${recipient}
将包含多个用户,这也会破坏基于用户的偏好。
当有这样的设置时,spamc 可能会被多次调用,发送相同的邮件,但每次调用的用户都不同。这引出了另一个问题: spamassassin 如何处理内容相同但收件人不同的邮件?