Rspamd 使用事件驱动架构构建,最初设计用于高负载系统,使其每秒可以处理数百条消息。 识别垃圾邮件迹象的规则非常灵活,最简单的形式可以包含正则表达式,在更复杂的情况下,可以用 Lua 编写。 扩展功能和添加新类型的检查是通过可以用 C 和 Lua 语言创建的模块来实现的。 例如,模块可用于使用 SPF 验证发件人、通过 DKIM 确认发件人的域以及生成对 DNSBL 列表的请求。 为了简化配置、创建规则和跟踪统计数据,提供了管理 Web 界面。
主要创新:
- 已过渡到新的期刊编号方案。 由于版本号中的第一个数字多年来没有改变,而真正的版本指示符是第二个数字,因此决定切换到“yz”格式而不是“xyz”方案;
- 改为事件循环
自由事件 涉及图书馆利贝夫 ,它消除了 libevent 的一些限制并提供了更好的性能。 用法
libev 使得简化代码、改进信号和超时处理以及使用 inotify 机制统一文件更改跟踪成为可能(并非为受支持平台提供的所有 libevent 版本都可以与 inotify 配合使用); - 已停止支持使用 Torch 深度机器学习库的消息分类模块。 引用的原因是 Torch 过于复杂以及保持其更新的高度复杂性。 提出了一个完全重写的模块来替代使用机器学习方法进行分类
神经 ,其中使用一个库来保证神经网络的运行卡恩 ,其中仅包含 4000 行 C 代码。 新的实现解决了训练过程中出现死锁的诸多问题; - 模
RBL 替换了 SURBL 和 Emails 模块,从而可以统一处理所有黑名单检查。 RBL 的功能已得到扩展,包括对其他类型的支持,例如选择器和用于轻松扩展现有规则的工具。 不再支持基于映射列表而不是 DNS RBL 的电子邮件阻止规则;建议改用带有选择器的多重映射; - 为了根据内容确定文件类型,使用了新的 Lua Magic 库,使用 Lua 和 Hyperscan 而不是 libmagic。
创建自己的库的原因包括希望获得更高的性能、摆脱识别 docx 文件时的失败、获得更合适的 API 以及添加不受严格规则限制的新型启发式方法; - 改进了用于在 DBMS 中存储数据的模块
点击屋 。 添加了LowCardinality字段并显着优化了内存消耗; - 模块功能扩展
Multimap之 ,其中出现了支持合并 и依赖的 比较; - Maillist模块改进了邮件列表的定义;
- 工作进程现在能够向主进程发送心跳消息,确认正常运行。 如果一段时间内没有此类消息,主进程可以强制终止工作进程。 默认情况下,该模式暂时处于禁用状态;
- 添加了一系列 Lua 语言的新扫描仪。 例如,添加了用于扫描 Kaspersky ScanEngine、Trend Micro IWSA(通过 icap)和
F-Secure Internet Gatekeeper(通过 icap),还提供 Razor、oletools 和 P0F 的外部扫描仪; - 添加了通过 Lua API 更改消息的功能。 已提出一个模块来更改 MIME 块
lib_mime ; - 提供了对通过“Settings-Id:”设置的设置的单独处理,例如,现在您可以仅将规则绑定到某些设置标识符;
- 对Lua引擎的性能、base64解码和文本语言检测进行了优化。 添加了对缓存复杂地图的支持。 支持已实施
HTTP 保持活动状态。
来源: opennet.ru