我有一个安装了 exim4 和 spamassassin 的邮件服务器。
我们有一个(内部)垃圾邮件问题,来自少数用户的大量邮件列表(我们不能仅仅出于多种原因进行教育或阻止)
有没有办法阻止不合理数量的电子邮件进入同一域(例如 10 个)以强制这些用户密件抄送?
我有一个安装了 exim4 和 spamassassin 的邮件服务器。
我们有一个(内部)垃圾邮件问题,来自少数用户的大量邮件列表(我们不能仅仅出于多种原因进行教育或阻止)
有没有办法阻止不合理数量的电子邮件进入同一域(例如 10 个)以强制这些用户密件抄送?
是的,您可以在 SpamAssassin 中执行此操作。我不是 exim 专家,但 iirc exim 也可以做到这一点(尽管它可能有一个硬收件人限制,与 To/Cc 与 Bcc 无关)。
这应该这样做:
header DTECH_TEN_TOCC_IN_SAME_DOM ToCc =~ /(\@[^,>;]{3,99}[a-z]\b)(?:[^\@.-][^\@]{0,99}\1){10}(?![.-])/
describe DTECH_TEN_TOCC_IN_SAME_DOM Ten consecutive recipients have the same domain
正如我所写的那样,这只捕获了十个具有相同域的连续收件人,这些收件人必须都在同一个标头中(ToCc
意味着要异或抄送;它不会合并标头)。如果您将第三个字符类从[^\@]{0,99}
to更改为.{0,999}
在较长时间内匹配任何字符,则该规则不仅适用于连续列出的地址,但请注意,这会使正则表达式的计算成本更高。
您还必须确保 SpamAssassin 正在查看您的内部和出站邮件,这是非标准的。最后,您必须对规则进行评分。请在执行此操作之前进行大量测试。特别是因为这不是垃圾邮件规则(它会比垃圾邮件命中更多的非垃圾邮件;考虑使用测试统计信息的类似规则:__TO_MANY)。
但是,您将无法告诉用户邮件被拒绝的原因。SMTP 拒绝(例如来自 Exim)可以有一个自定义的“为什么被拒绝”提示,这对于监管附件大小甚至通知用户他们发送的邮件过多(可能他们被感染)非常有用。您可以将 Exim 配置为在 SMTP 时间运行 SA(例如sa-exim),但是每个垃圾邮件拒绝都会向最终用户发送相同的消息。另一种选择是接受该消息,然后将其退回,包括 SpamAssassin 规则命中。使用这种方法要非常小心,因为它通常会导致反向散射。