安全与隐私

Spam Scanner 读取的邮件是私密的,而发件人可能怀有敌意。本页列出它会向外发送哪些内容,以及它如何对待所读取的内容。

哪些内容会离开本机#

默认只有一项:邮件中链接的主机名会在 Cloudflare 的过滤解析器上查询,即 1.1.1.2 和 1.0.0.2(恶意软件和钓鱼),以及 1.1.1.3 和 1.0.0.3(另含成人内容)。这些是针对 example.com 之类名称的普通 DNS 查询;不会发送邮件或其地址的任何部分。用 phishing: {cloudflare: false} 或 --no-cloudflare 关闭它们,或者用 phishing: {adult: false} 只关闭成人内容检查。

其他所有检查在配置之前都处于关闭状态:

检查发送内容发送目标
authentication对发件人 SPF、DKIM、DMARC 和 ARC 记录的 DNS 查询你的解析器,或 dnsServers
dnsbl反转后的客户端 IP 地址和链接域名,以 DNS 查询的形式黑名单的域名服务器,经由你的解析器或 dns.servers
llm邮件摘要,发送给远程服务商时会移除个人数据你指定的语言模型服务器(隐私)
reputation.apiUrl发件人的 IP 地址、域名和地址你指定的服务
clamav附件你的 clamd,通过其套接字

没有遥测,没有更新检查,运行时也不下载任何内容。模型随软件包一起提供。

它保留什么#

除非要求,否则什么都不保留。扫描不会被记录或存储。learn() 在内存中修改分类器;只有 saveModel()、spamscanner learn 或服务器的 --out 选项才会把它写入磁盘。模型文件保存的是经过哈希的特征计数,而不是词语或邮件文本。

语言模型的回答缓存在内存中,以所发送内容的哈希为键,因此同一封邮件的多个副本只会询问一次。DNS 回答在内存中缓存十分钟。

恶意输入#

  • 附件按字节识别,从不执行,也从不交给其他程序打开。ZIP 压缩包从其中央目录读取,并限制条目数量;嵌套的压缩包不会被解压。
  • 正文最多读取 maxLength(100,000 个字符),服务器接受最大 25 MB 的邮件。
  • 每项网络检查都有超时(timeout,默认 10 秒)。失败或超时的检查会被跳过,扫描在没有它的情况下完成。
  • milter邮件过滤器:源自 Sendmail 的协议,Postfix 也在使用,它让一个独立程序在 SMTP 会话期间检查每封邮件。、内容过滤器和 --headers 会移除邮件中已有的 X-Spam-* 邮件头,因此发件人无法把自己的邮件标记为干净。
  • 只有当邮件直接来自 Microsoft 的服务器时,才信任 Microsoft 的垃圾邮件判定邮件头;Received 邮件头从不用于判断邮件的来源。
  • 针对 AI 过滤器的文字会按垃圾邮件计分,并且会告知语言模型邮件是数据而不是指令。提示注入

服务器#

milter、HTTP、TCP 和 spamdSpamAssassin 的守护进程。spamc、Exim、Haraka 和其他 SpamAssassin 客户端都使用它的协议。 服务器默认监听 127.0.0.1,除非 --host 另行指定。HTTP API 以恒定时间比较其令牌,没有令牌时拒绝 /learn。它们都不支持 TLS:要跨网络访问,请使用私有网络、SSH 隧道或带 TLS 的反向代理。

请以非特权用户运行它们。Postfix 指南中的 systemd 单元包含了常用的加固设置。

报告漏洞#

请通过 GitHub 的漏洞报告功能私下报告安全问题,不要在公开的 issue 中报告。

在 GitHub 上编辑此页 · Markdown ·