Mailuminati/Guardian
GitHub: Mailuminati/Guardian
高性能、可扩展的邮件垃圾/钓鱼检测服务,利用本地学习与共享情报提升检测精度与隐私保护。
Stars: 14 | Forks: 3
仅使用 `127.0.0.1` 表示本地主机,或 `0.0.0.0` 表示所有接口。 | `127.0.0.1` | | `MI_ENABLE_IMAGE_ANALYSIS` | 设置为 `1` 以启用对低文本电子邮件的外部图像分析。 | `0`(禁用) | | `FORCE_REINSTALL` | 设置为 `1` 以强制重新安装 Guardian 引擎。 | `0` | | `SPAM_WEIGHT` | 报告为垃圾邮件的哈希值的权重。 | `1` | | `HAM_WEIGHT` | 报告为正常邮件(误报)的哈希值的权重。 | `2` | | `SPAM_THRESHOLD` | 消息被本地判定为垃圾邮件所需的最低分数。
默认值(`1`)表示:只要有一条垃圾报告(权重为 1)就足以阻止相似消息。
提高此值(例如设为 `2`)可在阻止前要求多条报告。 | `1` | | `LOCAL_RETENTION_DAYS` | 本地学习条目的保留周期(天数)。 | `15` | | `LOG_LEVEL` | 日志详细程度(`DEBUG`、`INFO`、`WARN`、`ERROR`)。 | `INFO` | | `LOG_FORMAT` | 日志格式(`JSON` 用于工具/ELK,`TEXT` 用于人工阅读)。 | `JSON` | 权重与阈值变量协同工作,为您提供对本地学习机制的完全控制: - **检测逻辑:** 当计算得分大于或等于 `SPAM_THRESHOLD` 时,消息被视为垃圾邮件。 - **垃圾报告:** 报告一条消息为垃圾邮件会为其增加 `SPAM_WEIGHT`。 - **正常报告:** 报告一条消息为正常(误报)会减去 `HAM_WEIGHT`。 **示例场景:** - **默认(激进):** `SPAM_WEIGHT=1`,`SPAM_THRESHOLD=1`。 - 1 条垃圾报告 = 得分 1。由于 `1 >= 1`,立即被阻止。 - **谨慎:** `SPAM_WEIGHT=1`,`SPAM_THRESHOLD=2`。 - 1 条垃圾报告 = 得分 1。未阻止(`1 < 2`)。 - 2 条垃圾报告 = 得分 2。被阻止(`2 >= 2`)。 - 1 条垃圾报告 + 1 条正常报告 = 得分 0。未阻止(`0 < 2`)。 ## Guardian 工作原理 Guardian 将本地情报与共享威胁检测相结合,以提供快速、准确的垃圾邮件过滤。 ### 核心概念 **本地情报:** - 基于操作员特定威胁的即时分析与学习 - 用户/操作员报告后立即生效 - 即使与 Oracle 断开连接也能工作 - 为大多数消息提供零延迟决策 **共享情报(通过 Oracle):** - 跨操作员的垃圾邮件活动关联 - 来自独立报告的共享威胁集群 - 防止大规模、快速移动的威胁 - 早期检测以前未知的活动 通过在检测到有意义的邻近性时才查询 Oracle,Guardian 能够在不牺牲性能或隐私的情况下利用集体情报。 ### 分析流水线 #### 1. 本地分析 对于每封传入邮件,Guardian 将: - 规范化文本与 HTML 内容 - 提取有意义的附件 - 计算一个或多个 TLSH 结构指纹 此过程快速、确定性,且不依赖外部调用。 **图像分析(可选):** 当通过 `MI_ENABLE_IMAGE_ANALYSIS=1` 启用时,Guardian 可获取并分析外部图像,以检测包含极少文本的电子邮件。这对于检测“仅图像”垃圾邮件很有用——其内容隐藏在远程图片中以绕过基于文本的过滤器。 #### 2. 本地邻近检测 每个指纹使用 LSH(局部敏感哈希)技术拆分为重叠的 band。 Guardian 检查: - 其本地学习数据库 - 本地缓存的 Oracle band 数据子集 如果检测到足够邻近性,Guardian 可能: - 本地分类消息 - 标记为部分或可疑匹配 - 升级为 Oracle 确认 #### 3. Oracle 确认(必要时) 仅在邻近性阈值满足时,Guardian 才会联系 Oracle 以: - 计算与已知威胁集群的精确距离 - 将指纹与基于已确认报告的簇质心进行比较 - 接收最终判决 此设计确保 **只有极少数消息 需要远程确认。 #### 4. 学习与反馈 Guardian 支持通过以下方式学习: - 用户投诉(通过 IMAP/Sieve 集成) - 操作员验证 - 滥用台信号 已确认的报告会立即强化本地检测,并可共享至 Oracle,为全局 Mailuminati 情报做出贡献。 ### 架构图
Incoming Email
|
v
+---------------------+
| Mailuminati |
| Guardian (Local) |
+---------------------+
| |
| +--------------------+
| |
v v
Local Analysis Local Learning
(TLSH + LSH) (Immediate Effect)
|
| No proximity
|-----------------------------> ALLOW / LOCAL DECISION
|
| Proximity detected
v
+---------------------+
| Mailuminati |
| Oracle (Remote) |
+---------------------+
|
v
Shared Intelligence
(Clusters, Medoids,
Community Reports)
|
v
Verdict Returned
|
v
Local Enforcement
(Spam / Allow / Flag)
### 设计目标
- **极低延迟**——大多数决策无需网络调用即可完成
- **即时学习**——报告立即生效
- **资源占用最小**——低 CPU 与内存占用
- **隐私保护**——不共享原始邮件内容
- **弹性可靠**——即使 Oracle 不可用也能工作
- **可扩展**——适用于高吞吐量与小规模操作
## 架构与生态系统
### 在 Mailuminati 生态系统中的角色
Guardian 负责:
- 对传入邮件进行本地垃圾邮件/钓鱼分析
- 使用 TLSH 进行结构指纹识别
- 通过局部敏感哈希(LSH)实现快速邻近检测
- 即时应用本地学习
- 通过 Mailuminati Oracle 进行远程确认
- 执行最终决策(允许、标记为垃圾/邻近匹配)
它是**第一道防线**,在保持低延迟和资源占用的同时,连接更广泛的社区驱动检测网络。
### 部署模型
Guardian 通常以以下方式运行:
- 作为端口 `12421` 上的本地 HTTP 服务
- 作为 MTA 与 Mailuminati 生态系统之间的桥梁
- 与 Redis 一起容器化部署
您的电子邮件过滤引擎(Rspamd、SpamAssassin 等)会为每封传入邮件调用 Guardian 的 `/analyze` 端点,然后根据判决执行相应操作。
### 与其他组件的关系
- **Guardian** 执行本地检测、学习与执行
- **Oracle** 提供共享情报与协作确认
Guardian 可独立运行。与 Oracle 连接时,其有效性会提升,因为本地信号会成为集体防御的一部分。
## API 参考
Guardian 在端口 `12421` 上公开一个简单的 HTTP API。
### 基础 URL
```
http://:12421
```
### 端点
#### 获取 /status
健康与版本信息端点。
**示例:**
```
curl -sS http://localhost:12421/status | jq
```
**响应:**
```
{
"node_id": "6c0a5e16-2b32-4f86-9b3d-2b2e3df5c7d8",
"current_seq": 0,
"version": "0.3.2"
}
```
#### 发布 /analyze
分析以原始 RFC822/MIME 字节提供的电子邮件。最大请求大小:**15 MB**。
**请求:**
```
curl -sS -X POST \
-H 'Content-Type: message/rfc822' \
--data-binary @message.eml \
http://localhost:12421/analyze | jq
```
**响应:**
```
{
"action": "allow",
"proximity_match": false,
"hashes": [
"T1A9B0E0F2D3C4B5A6..."
]
}
```
**响应字段:**
- `action`: `allow` | `spam`
- `label`(可选):例如 `local_spam`、`oracle_spam`
- `proximity_match`: 布尔值,指示是否检测到相似垃圾邮件
- `distance`(可选):到最近威胁的 TLSH 距离(越小越相似)
- `hashes`(可选):计算出的 TLSH 签名数组
**注意:**
- 如果邮件缺少 `Message-ID` 头,Guardian 仍会分析它,但 `/report` 后续无法引用它。
- `hashes` 字段包含消息的已计算 TLSH 指纹。
#### 发布 /report
将先前扫描的电子邮件报告给 Guardian 以改进其学习。
Guardian 将:
1. 立即应用 **本地学习**(垃圾邮件或正常纠正)
2. 将报告转发至 Oracle 以获取共享情报
**请求:**
```
curl -sS -X POST \
-H 'Content-Type: application/json' \
-d '{"message-id":"","report_type":"spam"}' \
http://localhost:12421/report
```
**请求体:**
```
{
"message-id": "",
"report_type": "spam"
}
```
**报告类型:**
- `spam`:报告漏掉的垃圾邮件(假阴性)
- `ham`:报告误报(正常邮件被错误标记)
**注意:**
- Guardian 必须先前扫描过该邮件(通过 `Message-ID` 标识)
- 如果未找到该 Message-ID 的扫描数据,返回 `404 Not Found`
- 当 Oracle 可达时,响应由 Oracle 代理返回
#### 获取 /metrics
以 **Prometheus** 格式公开内部指标,用于监控。
**示例:**
```
curl -sS http://localhost:12421/metrics
```
**可用指标:**
- `mailuminati_guardian_scanned_total`:已扫描邮件总数
- `mailuminati_guardian_local_match_total`:使用本地情报检测到的邮件数
- `mailuminati_guardian_oracle_match_total`:通过 Oracle 匹配的邮件数
- `mailuminati_guardian_cache_hits_total`:缓存命中率
## 许可证
本客户端是遵循 GNU GPLv3 的开源软件。
版权所有 © 2025 Simon Bressier。
请注意:本许可证严格适用于本仓库中包含的客户端侧代码。
请参阅 [LICENSE](LICENSE) 文件以获取详细信息。 标签:AMSI绕过, Docker, EVTX分析, Go语言, GPLv3, MTA, Python 3.9+, SEO: 垃圾邮件过滤, SEO: 网络钓鱼防护, SEO: 邮件威胁检测, SEO: 隐私保护, 共享情报, 垃圾邮件检测, 威胁检测, 安全防御评估, 实时检测, 开源, 快速决策, 搜索引擎查询, 日志审计, 最小开销, 本地学习, 用户报告, 社区运维, 程序破解, 结构指纹, 网络安全, 网络钓鱼检测, 联邦学习, 请求拦截, 邮件基础设施, 邮件安全, 邻近检测, 隐私保护