mailrelay.
核心概念

安全模型

认证、SSRF 防护、危险能力约束与 Secret 处理。

MailRelay 默认不信任任何邮件内容。

请求认证

每封邮件必须同时通过:

  1. 发件人匹配 security.allow
  2. X-MailRelay-Token Header 或 _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} 或敏感参数,让快照与执行记录都能正确脱敏。

On this page