news 2026/8/20 19:42:02

如何为 ZoneMTA 集成 Rspamd 与 ClamAV:反垃圾防护双重检测完整教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何为 ZoneMTA 集成 Rspamd 与 ClamAV:反垃圾防护双重检测完整教程

如何为 ZoneMTA 集成 Rspamd 与 ClamAV:反垃圾防护双重检测完整教程

【免费下载链接】zone-mta📤 Modern outbound MTA cross platform and extendable server application项目地址: https://gitcode.com/gh_mirrors/zo/zone-mta

ZoneMTA 是一款基于 Node.js 与 MongoDB 构建的现代出站 MTA(邮件传输代理),以高性能、跨平台和可扩展插件机制著称。对于邮件服务器管理员而言,反垃圾防护与病毒检测是运维的重中之重。本教程将带你一步步为 ZoneMTA 集成Rspamd 垃圾邮件过滤ClamAV 病毒扫描,构建双保险的邮件安全防线,即使你是新手也能轻松完成配置。

为什么 ZoneMTA 需要反垃圾防护双重检测?

ZoneMTA 虽然是出站 MTA,但它同样承担收信与中继任务。如果不对入站邮件做检测,垃圾邮件与带毒邮件就可能通过你的服务器被转发出去,轻则影响 IP 信誉,重则导致域名被拉黑。Rspamd 与 ClamAV 的分工十分明确:

  • Rspamd:基于贝叶斯、规则与实时黑名单的垃圾评分引擎,可识别垃圾邮件、钓鱼邮件,并返回评分与处置动作。
  • ClamAV:老牌开源杀毒引擎,通过 clamd 守护进程对邮件附件进行病毒特征扫描。

两者一"智"一"杀",配合使用即可覆盖绝大多数邮件威胁。

第一步:认识 ZoneMTA 反垃圾防护插件结构

ZoneMTA 的安全检测能力全部以插件形式提供,源码位于 plugins/core/rspamd/index.js 与 plugins/core/clamav/index.js。这两个插件通过addAnalyzerHook在收信阶段对流式邮件内容做实时检测,检测结果会挂载到envelope.spamenvelope.virus对象上,随后在message:queue钩子中决定放行、拒绝或静默丢弃。

插件默认未启用,你需要在 config/default.js 中手动开启,下面我们分别讲解。

第二步:快速安装并启用 Rspamd 垃圾评分插件

安装 Rspamd 服务

Rspamd 需要独立部署,以 Debian/Ubuntu 为例:

sudo apt install rspamd sudo systemctl enable --now rspamd

启动后,Rspamd 默认在11333端口提供 HTTP 检测接口。

ZoneMTA 中开启 Rspamd 集成

编辑你的应用配置文件(覆盖默认配置即可),加入以下内容:

'core/rspamd': { enabled: ['receiver', 'sender'], url: 'http://localhost:11333/check', interfaces: ['feeder'], maxSize: 5 * 1024 * 1024, dropSpam: false, rewriteSubject: false }

各配置项含义如下:

配置项作用
enabled指定加载上下文,receiver负责检测,sender负责在投递前添加 Spam 头
urlRspamd 检测接口地址,默认http://localhost:11333/check
interfaces只检测来自哪些接口的邮件,['*']表示全部扫描
maxSize超过 5MB 的大邮件跳过评分,避免性能损耗
dropSpamtrue时静默丢弃垃圾邮件,否则返回 550 拒绝
rewriteSubjecttrue时自动给垃圾邮件主题加[***SPAM(分数)***]前缀

💡 提示:如果希望 Rspamd 能看到发件人的真实来源 IP,可追加ip: true配置项。

Rspamd 检测结果如何生效?

插件在收到 Rspamd 响应后,会依据action字段执行不同策略(见 plugins/core/rspamd/index.js):

  • reject:返回550 This message was classified as SPAM拒绝收信
  • add header / rewrite subject / soft reject:按配置重写主题或放行
  • 投递时还会在邮件头追加X-Zone-Spam-StatusX-Zone-Spam-Resolution,便于追踪判定结果

第三步:快速配置 ClamAV 病毒扫描

安装并启动 clamd

ClamAV 通过 clamd 守护进程通信,安装命令:

sudo apt install clamav clamav-daemon sudo freshclam sudo systemctl enable --now clamav-daemon

clamd 默认监听3310端口,ZoneMTA 正是通过该端口以zINSTREAM协议流式发送邮件内容进行扫描。

在 ZoneMTA 中启用 ClamAV 插件

配置代码如下:

'core/clamav': { enabled: 'receiver', port: 3310, host: '127.0.0.1', interfaces: ['feeder'], ignoreOrigins: [] }

关键参数说明:

  • port/host:clamd 服务地址,默认127.0.0.1:3310
  • interfaces:需要扫描的邮件来源接口
  • ignoreOrigins:忽略来源 IP 列表,常用于放行自家可信中继

当检测到病毒时,插件会在 plugins/core/clamav/index.js 的message:queue钩子中直接拒绝邮件,返回550 This message contains a virus and may not be delivered

第四步:双重检测联动与最佳实践

Rspamd 与 ClamAV 插件可以同时启用,ZoneMTA 会按配置顺序依次流过两个分析器,互不干扰。建议采用以下安全组合策略:

  1. 入口全扫描:将interfaces设为['*'],对 SMTP 收信与 HTTP API 投递的邮件一律检测。
  2. 垃圾邮件静默丢弃:将 Rspamd 的dropSpam设为true,避免攻击者通过退信确认地址有效。
  3. 病毒邮件硬拒绝:ClamAV 检出病毒必须拒绝,杜绝带毒邮件进入投递队列。
  4. 结合日志排查:插件会输出SPAMCHECKVIRUSCHECK日志,配合 docs/LOGGING_GELF_CODES.md 可远程记录检测详情。

第五步:验证集成是否成功

重启 ZoneMTA 后,发送一封测试邮件到你的服务器,然后观察日志:

  • 出现Rspamd RESULTS score=... action=...说明垃圾评分生效;
  • 出现Clamav RESULTS clean=yes说明病毒扫描正常;
  • 若收到 550 拒绝响应,说明对应检测已正确拦截。

结语

通过本文的配置,你的 ZoneMTA 已具备 Rspamd 垃圾评分与 ClamAV 病毒扫描的双重反垃圾防护能力。这套组合不仅提升邮件投递质量,更能保护服务器 IP 信誉。若想深入定制,不妨阅读插件源码 rspamd-client.js 与 clamav-client.js,理解流式检测的底层实现,按需扩展自己的安全插件。

【免费下载链接】zone-mta📤 Modern outbound MTA cross platform and extendable server application项目地址: https://gitcode.com/gh_mirrors/zo/zone-mta

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/20 19:23:35

自定义解码器实战:让 deno-postgres 按你的规则解析查询结果

自定义解码器实战:让 deno-postgres 按你的规则解析查询结果 【免费下载链接】postgres PostgreSQL driver for Deno 项目地址: https://gitcode.com/gh_mirrors/postgr/postgres deno-postgres 是 Deno 生态中最流行的 PostgreSQL 驱动之一,它把…

作者头像 李华
网站建设 2026/8/20 19:23:00

一套框架跑通五大平台:社交媒体数据采集的完整实战指南

一套框架跑通五大平台:社交媒体数据采集的完整实战指南 【免费下载链接】MediaCrawler-new 项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-new 做竞品调研的小周,曾为一组小红书笔记数据熬了三个通宵——手动复制、截图归档&a…

作者头像 李华
网站建设 2026/8/20 19:20:57

划词翻译工具深度测评:pot-desktop 跨平台翻译与截图OCR完整指南

划词翻译工具深度测评:pot-desktop 跨平台翻译与截图OCR完整指南 【免费下载链接】pot-desktop 🌈一个跨平台的划词翻译和OCR软件 | A cross-platform software for text translation and recognize. 项目地址: https://gitcode.com/pot-app/pot-deskt…

作者头像 李华