AI Agent 反垃圾邮件实战:用规则引擎过滤自动化 Spam

AI Agent 反垃圾邮件实战:用规则引擎过滤自动化 Spam
AI Agent 生成式 spam 泛滥,单纯靠关键词黑名单已失效。本文分享如何用轻量规则引擎结合元数据置信度模型,在入口处拦截 95% 以上的自动化垃圾邮件。
我最近在处理一个企业内部邮件系统的清洗项目,发现一个现象:用大模型写钓鱼邮件的成本已经趋近于零。攻击者不需要精通社交工程,只需要一个 Prompt 就能批量生成以假乱真的“发票通知”、“会议邀请”或“密码重置”。这些邮件往往在语法、逻辑甚至情感上都很完美,传统的基于正则或关键词的过滤系统基本形同虚设。

我的解法是放弃“理解内容”,转而“验证行为”。通过一个可插拔的规则引擎,在邮件进入核心业务逻辑前,根据发送方元数据、行为模式和统计特征进行分层过滤。这种做法不需要部署昂贵的 NLP 模型,维护成本极低,且误判率可控。
核心思路:元数据置信度评分
与其试图判断邮件内容是否有害,不如先判断这封邮件的来源是否可信。我设计了一个简单的打分机制,每个字段命中异常都会扣分,低于阈值则直接进入隔离区。
主要考察三个维度:
- 链路验证:SPF、DKIM、DMARC 是否全部通过。
- 行为一致性:发件人与域名注册信息、历史发送记录是否匹配。
- 内容熵值:AI 生成的文本往往具有较高的逻辑连贯性但缺乏“人味”的随机性,可以通过字符分布熵值辅助判断。
规则引擎实现示例
我使用 Node.js 编写了一个轻量级的规则处理器,它可以作为 Postfix 或自定义网关的一个中间件运行。每个规则都是一个独立的函数,返回 pass 或 fail,并附带一条原因说明。
class SpamRuleEngine {
constructor(rules) {
this.rules = rules;
}
// 评分上限为100,低于40分则视为高概率 spam
async analyze(emailData) {
let score = 100;
const reasons = [];
for (const rule of this.rules) {
const result = await rule.check(emailData);
if (result.isViolation) {
score -= result.penalty;
reasons.push(result.reason);
}
}
return {
isSpam: score < 40,
confidence: score,
reasons
};
}
}
// 示例规则:检查 SPF 记录
const spfCheck = {
name: 'spf_check',
penalty: 40,
check: async (email) => {
// 实际场景中这里会查询 DNS
const isValid = await verifySPF(email.fromDomain, email.sendingIP);
return {
isViolation: !isValid,
reason: 'SPF 验证失败,疑似伪造发件人'
};
}
};
常见误区:过度依赖内容分析
很多团队在遇到 spam 问题时,第一反应是训练一个分类模型去识别“诈骗词汇”。但在 AI Agent 时代,这种方法失效得很快。因为攻击者可以随时更换 Prompt 模板,绕过静态词库。
我更倾向于将内容分析作为最后的手段,且仅用于高置信度的案件复审。对于绝大多数情况,严格的元数据校验和速率限制(Rate Limiting)能挡掉 99% 的自动化攻击。
另外,不要忽略“内部账户被盗”的情况。如果你的企业邮箱允许任何员工向外部发送无限制邮件,那么内部 compromised 账号也是 spam 的主要来源。因此,规则的最后一道防线应该是“异常发送行为检测”,比如某个平时只发简短报告的账号突然发送了大量长文本邮件。
下一步建议
如果你正在构建类似的过滤系统,建议先从 SPF/DKIM/DMARC 的强校验开始,逐步叠加行为分析模块。可以参考 Postfix 过滤器文档 了解如何将上述 JS 代码集成到现有的邮件传输代理中。
本文首发于 AI Agent 反垃圾邮件实战:用规则引擎过滤自动化 Spam — https://lyxq.com.cn/en/blog/ai-agent-email-spam-filtering
转载或引用请注明出处,商业使用请联系作者获得授权。