关于 email-guard-mcp
email-guard-mcp 是用于检查 AI Agent 收发邮件的 MCP 服务。它结合基于规则的注入检测、发件人和域名检查,以及对密钥、个人数据和投递问题的扫描。
主要功能
- 01检测入站邮件中的注入和劫持模式
- 02检查发件人认证、域名和链接
- 03扫描出站邮件中的密钥和个人数据
- 04标记投递问题和无效收件人
- 05检查 SPF、DMARC、MX 和域名状态
适用场景
- 01在 Agent 处理邮件前评估风险
- 02发送前检查邮件是否泄露信息
- 03审查域名认证和收件人状态
MCP 相关
向 MCP 客户端提供 `scan_inbound`、`scan_outbound` 和 `check_domain_auth`。Agent 可提交邮件或域名,在处理或发送前获取结构化安全检查结果。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
3收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| body | string | 否 | 纯文本正文。 |
| from | string | 否 | 发件人标头,例如 "Jane Doe" <[email protected]>。 |
| html | string | 否 | HTML 正文。 |
| string | 否 | 原始 RFC822 邮件(标头 + 正文)。只有此格式包含 Authentication-Results、Reply-To 和 Return-Path。 | |
| subject | string | 否 | 主题行。 |
详细介绍
email-guard-mcp
用于邮件安全的 MCP 服务。它会在 Agent 处理收到的邮件之前进行检查,也会在 Agent 发送邮件之前检查外发邮件。结果确定,无需大模型,免费。
一旦 Agent 能够读取和发送邮件,收件箱就会成为攻击面。收到的邮件可能会在正文中埋入指令,试图劫持 Agent;人们已开始将这种攻击称为 AI Agent 网络钓鱼。发送邮件时,Agent 也可能泄露秘密,或发送会导致其发件域名被标记为垃圾邮件的内容。
安装
{ "mcpServers": { "email-guard": { "command": "npx", "args": ["-y", "email-guard-mcp"] } } }
工具
scan_inbound:在处理邮件之前运行。它会匹配已知的注入和劫持模式(包括零宽字符、双向文本和隐藏 HTML 技巧),比对发件人标头(接收服务器报告的 SPF、DKIM 或 DMARC 结果、reply-to 和 return-path 不匹配情况,以及与显示名称进行匹配的 24 个品牌名称列表),通过 DNS 和 RDAP 查询发件人域名(一次性域名,或注册时间不到 30 天的域名),并对链接评分。它会返回判定结果和固定结构的元数据,让 Agent 依据这些信息而非原始的、可能已被污染的文本进行处理。scan_outbound:在发送邮件之前运行。它会检测 22 种秘密信息模式(AWS、GitHub、OpenAI、Anthropic、Google、Slack、Stripe、Twilio、npm、JWT、PEM 私钥块、Azure 存储密钥和 SAS 令牌、GCP 服务账号密钥 ID、数据库和 ODBC 连接字符串密码、SendGrid、GitLab、Hugging Face,以及带引号的api_key/secret/password/token赋值)和 3 种个人身份信息模式(电子邮件地址、美国 SSN、通过 Luhn 校验的卡号),检查主题、正文和 HTML,并返回脱敏副本。它还会标记影响发件人信誉的投递问题,以及无效收件人(一次性域名,或没有 MX 记录,这意味着邮件必定退信)。check_domain_auth:检查域名或地址的 SPF、DMARC、MX、域名年龄和一次性状态。返回弱校验或强制执行状态。
这些工具不做什么
注入检测采用模式匹配,而不是分类器。没有人为其编写规则的措辞就会漏过检测。
品牌列表会对显示名称进行子字符串匹配。"PayPal Security" <[email protected]> 不会被标记,因为域名中包含“paypal”。列表之外的品牌也不会被标记。
泄露扫描只识别 15 种模式,除此之外一概不识别。DigitalOcean 或 SendGrid 密钥、裸 bearer 令牌,以及未加引号的 password=supersecret123 都会被判定为正常。电子邮件地址规则则可能产生误报:正文中只要有任何地址,邮件就会被标记为需审核,因此在将审核结果视为泄露之前,请先查看 leak.findings。
scan_inbound 的结构化输出具有固定结构,但其中没有任何内容经过净化。subject、sender.display、sender.from、sender.replyTo、sender.domain、links[].url、links[].host、injection.findings[].match,以及 sender.spoofFlags 和 reasons 中的说明字符串,都直接复制自邮件。只有判定结果、评分、规则 ID 和建议字符串是本工具生成的。其余内容仍是攻击者提供的文本。请将其视为数据。
数据来源包括 DNS(SPF、DMARC、MX)、用于获取域名年龄的 RDAP、一次性域名列表,以及注入和秘密信息规则集。
规则更新
此服务大约每天会向规则源检查是否有更新的规则集,并在有更新时应用。请求会携带两项信息:发起请求的界面(此处为 facade),以及已安装的规则版本。不包含机器 ID、用户 ID、文件名,也不包含你扫描过的任何内容。
规则包使用 Ed25519 签名,并通过编译进此软件包的公钥进行验证,因此由哪个镜像提供都无关紧要。若规则包未通过签名、架构或 ReDoS 检查,就会被丢弃,现有规则会保持不变。--offline 会关闭更新,AGENT_GUARDS_NO_FEED=1 或 ~/.agent-guards/config.json 中的 {"feed": false} 也会关闭更新。规则包的格式以及自行验证的方法:https://github.com/mlawsonking/MCP/blob/main/rules/README.md
关于电子邮件身份验证,简单来说:SPF、DKIM 和 DMARC 的结果取自接收邮件服务器写入的 Authentication-Results 标头。此处不会验证 DKIM 签名,也不会查询 DKIM DNS 记录,因为无法仅凭域名推导出选择器。这意味着该值的可信度完全取决于标头的写入者。对于你自己的服务器接收的邮件,这是可靠的信号;对于来自不可信来源的原始 .eml 文件,攻击者只需输入 dkim=pass 即可。每个响应都会说明适用的是哪种情况。相同输入始终会得到相同输出。它会调用 https://email-guard-api.vercel.app(可设置 EMAIL_GUARD_API 进行覆盖)。这是此仓库中的六个 Agent 防护工具之一。MIT。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。