如何使用 Amavisd 可靠地配置自定义 Spamassassin 规则(在 Ubuntu 上)

如何使用 Amavisd 可靠地配置自定义 Spamassassin 规则(在 Ubuntu 上)

我已经将 Amavisd 与 Spamassassin 结合使用多年了……我的配置曾经“有效”(尽管它可能从来都不是“正确的”),现在,当 amavisd-new 调用 spamassassin 功能时,/etc/spamassassin/local.cf 配置似乎被忽略了

我使用了一个相当普通的配置:

  • Ubuntu(14.04.4 LTS)
  • Postfix (2.11.0-1ubuntu1) - smtpd (及相关产品) 作为 postfix
  • Spamassassin (3.4.0) - 以 root 身份发送 spamd
  • amavisd-new (2.7.1) - 作为 amavis

Postfix、spamassassin 和 amavisd 均作为服务运行,邮件通过 spamassassin 分数传递。贝叶斯数据库位于 ~amavis/.spamassassin/bayes_*。

我感到很困惑,因为看起来我放置在 /etc/spamassassin/local.cf 中的配置(例如,特定规则的新分数)对于 amavisd 处理的邮件会被忽略,但当我从 amavis 帐户运行 spamc 或“spamassassin -D -t”时不会被忽略。当我在 ~amavis/.spamassassin/user_prefs 中放置等效配置时 - 它似乎对 amavisd-new 处理的结果也没有影响。

我原来是参考这个来配置的(类似): https://help.ubuntu.com/community/PostfixAmavisNew

我也考虑过这些想法(但没有成功): https://www.ijs.si/software/amavisd/#faq-spam

我想知道的是:

  • 为什么只有当通过 amavisd-new 使用 spamassassin 时,我的 /etc/spamassassin/local.cf 中的自定义“分数”值才会被忽略?
  • 有没有一种巧妙的方法可以让 amavisd 使用 spamc(从而确保一致性)?

答案1

第一个问题:

首先,要明确一点:Spamassassin 配置文件确实被使用了 - 它们并没有被“跳过”。我看到其他人报告说它们根本没有被使用。

我知道您看过这个常见问题解答链接,但答案似乎就在这里。常见问题解答可能没有详细说明您可能需要的确切“$sa_”(或其他类型)变量/等/etc/amavis/conf.d/50-user,但它确实详细介绍了如何启动和读取事物。就 SA 的 local.cf 配置而言,amavis-new 似乎只是“忽略”了您。这取决于配置选项 - 一些 local.cf 选项可能有效 - 有些可能无效。

但你还没有提到什么精确的您在 local.cf 下的选项(我假设是自定义规则?)未被使用(或被 amavis-new 忽略/未定义)。

https://www.ijs.si/software/amavisd/#faq-spam

SA 确实会观察其配置文件中的所有设置,但并非所有设置都会对正在检查的邮件产生影响,因为 amavisd-new 会根据垃圾邮件分数(命中率)自行做出决定(例如required_hits没有效果 - 使用标签/tag2/killamavisd-new 设置),并自行编辑 header,body 不会被修改。请继续阅读以了解相关信息。

关于忽略了哪些特定的 SA local.cf 选项,无需进一步说明,这就是您的答案。您需要发布更具体的信息。

第二个问题:

是的,您可以通过 Postfix/MTA/等将 SA 用作单独的内容过滤器。你最好继续使用 amavis-new作为 MTA 的 SA 控制器。您应该能够通过 Amavis-new 配置和/或$sa_变量/等复制您需要在 SA 下完成的操作。

笔记:

如果在 Ubuntu(也可能是 Debian)下运行,则在以下位置还有一个全局 amavis-new Spamassassin user_pref/config 文件:/var/lib/amavis/.spamassassin/user_prefs
我已将自定义 SA 规则添加到此文件 - 并且它们运行良好。

您还可以终止主 amavis 进程并尝试:sudo amavisd-new debug-sa获取 SA 正在执行/读取/编译/等的输出。(Debian/Ubuntu 名称/位置)

示例 LOG 显示 amavis-new 配置读取一些 SA 配置文件:

mail.example.net /usr/sbin/amavisd-new[30358]: SA dbg: config: using "/etc/spamassassin" for site rules pre files
mail.example.net /usr/sbin/amavisd-new[30358]: SA dbg: config: read file /etc/spamassassin/init.pre
mail.example.net /usr/sbin/amavisd-new[30358]: SA dbg: config: read file /etc/spamassassin/sa-compile.pre
mail.example.net /usr/sbin/amavisd-new[30358]: SA dbg: config: read file /etc/spamassassin/v310.pre
mail.example.net /usr/sbin/amavisd-new[30358]: SA dbg: config: read file /etc/spamassassin/v312.pre
mail.example.net /usr/sbin/amavisd-new[30358]: SA dbg: config: read file /etc/spamassassin/v320.pre
mail.example.net /usr/sbin/amavisd-new[30358]: SA dbg: config: read file /etc/spamassassin/v330.pre
mail.example.net /usr/sbin/amavisd-new[30358]: SA dbg: config: read file /etc/spamassassin/v340.pre
mail.example.net /usr/sbin/amavisd-new[30358]: SA dbg: config: read file /etc/spamassassin/v341.pre
mail.example.net /usr/sbin/amavisd-new[30358]: SA dbg: config: using "/usr/share/spamassassin" for sys rules pre files

...

mail.example.net /usr/sbin/amavisd-new[30358]: SA dbg: config: using "/etc/spamassassin" for site rules dir
mail.example.net /usr/sbin/amavisd-new[30358]: SA dbg: config: read file /etc/spamassassin/65_debian.cf
mail.example.net /usr/sbin/amavisd-new[30358]: SA dbg: config: read file /etc/spamassassin/local.cf
mail.example.net /usr/sbin/amavisd-new[30358]: SA dbg: config: using "/var/lib/amavis/.spamassassin/user_prefs" for user prefs file

答案2

amavisd-new 使用自己的配置。这些配置文件位于/etc/amavis/conf.d/。具体来说, 中的20-debian_defaults$sa_kill_level_defltSpamAssassin 的“等效”版本required_score(位于 中/etc/spamassassin/local.cf)。

根据我的经验,使用 amavis 与直接使用 spamsassassin 返回的分数永远不会相同,而且我还没有弄清楚原因,因此在设置时$sa_kill_level_deflt您需要找出一个可能与 不一样的适当值required_score

答案3

在将自定义规则添加到 local.cf 后,不要忘记运行spamassassin——lint并重新启动 spamassassin 和 amavis 守护进程

相关内容