【发布时间】:2014-06-30 12:18:51
【问题描述】:
我有一个安装了 exim4 和 spamassassin 的邮件服务器。
我们有一个(内部)垃圾邮件发给大量邮件列表的问题,这些邮件来自少数用户(我们不能仅仅出于多种原因进行教育或阻止)
有没有办法阻止不合理数量的电子邮件进入同一域(例如 10 个)以强制这些用户密件抄送?
【问题讨论】:
标签: bcc spamassassin exim4
我有一个安装了 exim4 和 spamassassin 的邮件服务器。
我们有一个(内部)垃圾邮件发给大量邮件列表的问题,这些邮件来自少数用户(我们不能仅仅出于多种原因进行教育或阻止)
有没有办法阻止不合理数量的电子邮件进入同一域(例如 10 个)以强制这些用户密件抄送?
【问题讨论】:
标签: bcc spamassassin exim4
是的,您可以在 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} 更改为 .{0,999} 以匹配更长时间内的任何字符,则该规则不仅适用于连续列出的地址,但请注意会使正则表达式的计算成本更高。
您还必须确保 SpamAssassin 正在查看您的内部和出站邮件,这是非标准的。最后,您必须对规则进行评分。请在执行此操作之前进行大量测试。尤其是因为这不是垃圾邮件规则(它会比垃圾邮件命中更多的非垃圾邮件;考虑使用测试统计信息的类似规则:__TO_MANY)。
但是,您将无法告诉用户为什么邮件被拒绝。 SMTP 拒绝(例如来自 Exim)可以有一个自定义的“为什么被拒绝”提示,这对于监管附件大小甚至通知用户他们发送的邮件过多(可能他们被感染)非常有用。您可以将 Exim 配置为在 SMTP 时间运行 SA(例如 sa-exim),但是每次垃圾邮件拒绝都会向最终用户发送相同的消息。另一种选择是接受该消息,然后将其退回,包括 SpamAssassin 规则命中。使用这种方法时要非常小心,因为它通常会导致backscatter。
【讨论】: