核心概念
安全模型
认证、SSRF 防护、危险能力约束与 Secret 处理。
MailRelay 默认不信任任何邮件内容。
请求认证
每封邮件必须同时通过:
- 发件人匹配
security.allow。 X-MailRelay-TokenHeader 或_token参数进行常量时间比较。
认证发生在路由和 Discovery 之前,失败请求不会泄露命令目录。
HTTP 防护
- 配置式 HTTP/Webhook 的 scheme、credentials 和 host 必须是静态配置。
- 主机必须出现在
security.http_hosts。 - DNS 解析结果拒绝私网、回环、链路本地、组播、未指定和 metadata 地址。
- 每次拨号和重定向都会重新检查。
- HTTP/Webhook 只允许 path 模板和
config.query参数模板,不允许邮件参数改变 scheme 或 authority。 http_request可以转发正文中的绝对 URL 或 origin-form path,但最终目标仍必须通过 allowlist 与 outbound policy。
本地进程
Plugin 与 Shell 只运行配置中的绝对路径,不经过 shell 解释器。参数逐项扩展,因此 ;、管道和 $() 都只是普通数据。
敏感数据
密码、Token、API Key 和完整邮件正文不会进入 SQLite 审计。参数设置 sensitive: true 后,审计中保存 [REDACTED]。
运行日志为了排障会记录 HTTP-family Handler 的请求/响应快照,内容会脱敏并截断。不要把密钥硬编码在 handler config 中;使用 ${ENV_VAR} 或敏感参数,让快照与执行记录都能正确脱敏。