资讯动态

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

发布时间:2026/8/20 19:42:14 来源:尧图企业网站定制
如何为 ZoneMTA 集成 Rspamd 与 ClamAV反垃圾防护双重检测完整教程【免费下载链接】zone-mta Modern outbound MTA cross platform and extendable server application项目地址: https://gitcode.com/gh_mirrors/zo/zone-mtaZoneMTA 是一款基于 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.spam与envelope.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/checkinterfaces只检测来自哪些接口的邮件[*]表示全部扫描maxSize超过 5MB 的大邮件跳过评分避免性能损耗dropSpam为true时静默丢弃垃圾邮件否则返回 550 拒绝rewriteSubject为true时自动给垃圾邮件主题加[***SPAM(分数)***]前缀 提示如果希望 Rspamd 能看到发件人的真实来源 IP可追加ip: true配置项。Rspamd 检测结果如何生效插件在收到 Rspamd 响应后会依据action字段执行不同策略见 plugins/core/rspamd/index.jsreject返回550 This message was classified as SPAM拒绝收信add header / rewrite subject / soft reject按配置重写主题或放行投递时还会在邮件头追加X-Zone-Spam-Status与X-Zone-Spam-Resolution便于追踪判定结果第三步快速配置 ClamAV 病毒扫描安装并启动 clamdClamAV 通过 clamd 守护进程通信安装命令sudo apt install clamav clamav-daemon sudo freshclam sudo systemctl enable --now clamav-daemonclamd 默认监听3310端口ZoneMTA 正是通过该端口以zINSTREAM协议流式发送邮件内容进行扫描。在 ZoneMTA 中启用 ClamAV 插件配置代码如下core/clamav: { enabled: receiver, port: 3310, host: 127.0.0.1, interfaces: [feeder], ignoreOrigins: [] }关键参数说明port/hostclamd 服务地址默认127.0.0.1:3310interfaces需要扫描的邮件来源接口ignoreOrigins忽略来源 IP 列表常用于放行自家可信中继当检测到病毒时插件会在 plugins/core/clamav/index.js 的message:queue钩子中直接拒绝邮件返回550 This message contains a virus and may not be delivered。第四步双重检测联动与最佳实践Rspamd 与 ClamAV 插件可以同时启用ZoneMTA 会按配置顺序依次流过两个分析器互不干扰。建议采用以下安全组合策略入口全扫描将interfaces设为[*]对 SMTP 收信与 HTTP API 投递的邮件一律检测。垃圾邮件静默丢弃将 Rspamd 的dropSpam设为true避免攻击者通过退信确认地址有效。病毒邮件硬拒绝ClamAV 检出病毒必须拒绝杜绝带毒邮件进入投递队列。结合日志排查插件会输出SPAMCHECK与VIRUSCHECK日志配合 docs/LOGGING_GELF_CODES.md 可远程记录检测详情。第五步验证集成是否成功重启 ZoneMTA 后发送一封测试邮件到你的服务器然后观察日志出现Rspamd RESULTS score... action...说明垃圾评分生效出现Clamav RESULTS cleanyes说明病毒扫描正常若收到 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),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价