工作原理
架构:IMAP 传输 → 本地存储 → 分析
GravesMail 只把你的电子邮件服务商的 IMAP 服务器当作传输层。我从不为了显示邮件而去读取 IMAP — 那样又慢又不可靠。实际的过程是这样的:
- 从 IMAP 获取 — 通过加密连接从你的服务商的服务器下载邮件。
- 在 DMZ 中暂存 — 新邮件在你看到之前,先进入本地的暂存区(SQLite)。
- 7 层安全分析 — 每封邮件和每个附件都在你的电脑上经过全部七个防护层,包括 YARA 恶意软件扫描。
- 快速规则过滤 — 与你个人的快速规则匹配的邮件,会按你的规则自动归置:放进垃圾邮件陷阱留待审查、移动或删除。
- 提升到收件箱、垃圾邮件或恶意软件 — 干净的邮件进入你的收件箱。垃圾邮件进入“垃圾邮件”。检出恶意软件的邮件进入单独的“恶意软件”文件夹,危险的附件会被剥离并扣留。
- 从服务器删除(可选)— 如果你启用了“下载后从服务器删除”,该邮件会从你的服务商那里移除。
SQLite 是唯一的事实来源。你在界面中看到的一切都来自你的本地数据库,而不是 IMAP。
大邮箱的两阶段同步
首次连接账户时 — 尤其是有成千上万封邮件的账户 — GravesMail 采用两阶段的方式:
阶段 1(快速开始):先获取每个文件夹中最新的 500 封邮件,通常不到一分钟。你可以立即开始阅读和处理邮件。
阶段 2(后台同步):其余邮件在后台悄悄下载。状态栏中的进度指示器显示完成百分比和预计剩余时间。你可以随时暂停、恢复或停止。关闭应用时进度会保存。
七个防护层
每封收到的邮件及其附件都要经过七个相互独立的防护层。每一层查找一种不同的问题,并各自独立作出判断。只要有任何一层发出告警,该邮件就按垃圾邮件处理 — 不取平均值,也没有必须达到的综合评分。一次告警就够了。这就是“7 层 OR”模型。
1. 域名验证
发件人的域名是否存在,是否有真实的邮件服务器?它的地址后缀(即顶级域名 TLD,例如 .shop、.top、.click 或 .xyz)是否属于常被垃圾邮件滥用的那一类?
2. 贝叶斯过滤器
通过学习得出的判断:邮件的用词有多像垃圾邮件。它出厂时已经过预训练,之后再向你学习 — 每一次“标记为垃圾邮件”或“标记为非垃圾邮件”都会让它更聪明。
3. 标头身份验证
SPF、DKIM 和 DMARC — 用来证明发件人确实是其所声称的身份的标准检查。
4. 启发式评分
41 个检测器,涵盖内容和标头中的各种特征:伪装的单词(H0ME、S4LE)、预付费骗局和遗产骗局的措辞、伪造的标头、日期异常,以及发件人的来源国家/地区。
5. 信誉
你的安全列表和屏蔽列表、发件人历史记录,以及跨邮件的活动追踪 — 它能抓住那种不断更换发件域名、却反复使用同一台发信服务器、同一个载荷主机或同一个退订链接的垃圾邮件发送者。
6. 恶意软件:系统杀毒
在 Windows 上,附件会通过 AMSI 接口提交给你已安装的防病毒软件(Windows Defender、Norton、Bitdefender、Kaspersky 等)。这一层在 macOS、Linux 和移动端不可用 — 在这些平台上,它会如实说明,而不是报告一个它从未得出过的“干净”结果。
7. 恶意软件:YARA
用 Neo23x0/signature-base 存储库中数千条社区恶意软件特征码扫描附件的字节和邮件正文。可检测木马、勒索软件、远程访问木马(RAT)、恶意 Office 宏、PDF 漏洞利用和钓鱼文档。可在包括移动端在内的所有平台上运行,并已内嵌在应用中,可离线使用。
如实报告 — 不给虚假的信心
打开任意邮件的“属性”,即可查看逐层的明细:每一层的评分、触发告警的阈值及其状态 — 已告警、干净或不可用。扫描器无法运行时,GravesMail 会报告“不可用”。它绝不会显示为“干净”。一个启动失败却照样报告“干净”的防病毒软件是最糟糕的安全工具,因为你信任的是一个从未真正作出过的结论。
在“安全引擎”界面(“工具”→“安全引擎”,移动端为“设置”→“安全引擎”)中,你可以用 0–100% 的灵敏度滑块单独调节七层中的每一层 — 0% 表示关闭该层,100% 表示最灵敏。没有单一的全局控制;各层由你分别调节。同一界面还显示恶意软件扫描器的实时状态、国家/地区策略编辑器,以及一份只读的清单,列出每个检测器及其权重。
不对外查询的地理定位
启发式层会考虑邮件的来源地。这项查询完全在本地进行。GravesMail 自带一张内嵌的国家/地区与 IP 范围对照表,并在你的设备上查询它 — 没有 DNS 查询,没有外部 API 调用,整个过程中没有任何第三方服务。你的邮件元数据绝不会为了地理定位而离开你的设备。
结果意味着什么,由你决定。在“安全引擎”界面中,你可以把国家/地区标记为安全(不增加垃圾邮件信号)或威胁(一个强信号)。两个列表一开始都是空的,所以在你选定策略之前,普通的国际邮件绝不会受到不利对待。
IP 地理定位数据由 DB-IP(db-ip.com)提供,依据 CC BY 4.0 许可。
屏蔽外部图片与剥离跟踪像素
你收到电子邮件时,发件人可以在其中嵌入从他们的服务器加载的外部图片。图片一加载,发件人就会得知你的 IP 地址、你打开了这封邮件、你是什么时候打开的,以及你用的是什么设备。
GravesMail 默认屏蔽外部图片。另外,它会检测并剥离不可见的跟踪像素(仅用于追踪已读回执的 1×1 图片)。这是两项相互独立的控制 — 你可以加载图片而不加载跟踪器,反之亦然。
端到端加密(OpenPGP)
GravesMail 支持 OpenPGP — 用于端到端加密和签名电子邮件的开放、可互操作的标准。你可以与任何使用 PGP 的人交换私密邮件,无论对方用的是哪种邮件系统(Proton Mail、Thunderbird、gpg 等),而不仅限于其他 GravesMail 用户。这是真正的 PGP/MIME,不是 GravesMail 自己的方言。
密钥
在“PGP 密钥管理器”中生成密钥 — 推荐使用 Ed25519/Curve25519,另有 RSA-4096 可选,以兼容较旧的 PGP 软件。导出你的公钥,别人才能给你写信;导入对方的公钥,你才能给对方写信。导入后,GravesMail 会显示该密钥的指纹;请通过带外方式 — 打电话或当面 — 与对方核对,然后把它标记为已验证。未验证的密钥仍然可用,但会一直带有未验证的标记,因为这个标记只有一个意思:你还没有确认这个密钥确实属于那个人。
密钥靠指纹识别,而不是靠电子邮件地址。一个地址有两个密钥是正常的 — 一旧一新,或者 RSA 密钥和 Ed25519 密钥并存 — 因此每项操作作用于你所选的那个密钥,而不是碰巧与地址匹配的第一个密钥。
你可以把密钥关联到联系人,这样给那个人加密时就能直接使用,不必在密钥管理器里翻找。关联密钥不会开启加密;是否加密仍由你逐封邮件选择。
如果你丢失了私钥,所有曾用它加密的邮件都将永远无法恢复。我做不到,任何人都做不到。请使用备份私钥把一个受密码保护的备份文件保存到安全的地方,并记住密码。还原私钥可在新设备或重装后的设备上把它找回来,并通过显示其身份和指纹来确认还原的是哪个密钥。删除你自己的私钥是不可逆的,因此 GravesMail 会升级警告,并要求你确认。
发送和阅读
“写邮件”窗口有一个安全控件,提供三种模式 — 签名、加密或签名 + 加密(推荐用于私密邮件)。它默认关闭,所以普通邮件不受影响。你收到的加密邮件会自动解密,并显示一把闭合的挂锁 🔒;签名邮件会显示其签名状态,而无效的签名会醒目地显示出来,而不是悄悄带过。如果一封邮件是用该设备上没有的密钥加密的,它会明确说明,而不是给你看一片空白的正文。
你发送加密邮件时,GravesMail 还会用你自己的密钥对它加密,这样“已发送”文件夹中的副本你自己仍然读得了。否则,你自己留存的副本将无法解密。这一项始终开启。
不容变通的规则
如果你选择加密,而某个收件人没有可用的密钥,发送会被阻止。GravesMail 会停下来询问:取消,还是明确选择不加密发送 — 后者是一个需要你刻意执行的第二步操作,会列出面临风险的收件人,它绝不是默认选项,也绝不会自动执行。不存在任何一条代码路径,会让选择了加密的邮件悄悄以明文发出。这一点是在引擎本身而不仅仅是在界面中强制执行的,并且有自动化测试覆盖。
PGP 保护什么,不保护什么
PGP 加密邮件的正文和附件。它不会隐藏主题行、收件人/发件人/抄送,也不会隐藏邮件的发送时间 — 这些都以明文传输。所有 PGP/MIME 系统都有这个局限,Proton 也不例外;这不是 GravesMail 的缺陷,但你在依赖它之前应该知道这一点。
PGP 保护的是传输途中的邮件 — 防止被截获,也防止被你的邮件服务商看到。它不是反取证工具:邮件一经解密,就会缓存在 GravesMail 的本地加密数据库中,以便你离线搜索和阅读。
另外两个局限,直说如下:GravesMail 不进行自动的密钥服务器查询或 WKD 查询,也没有信任网络 — 密钥由你自己导入,指纹由你自己验证,这是有意的选择,为的是不必在“某人是谁”这件事上去信任一个网络服务。此外,内联明文签名的邮件会显示为可读文本,但不验证签名;GravesMail 只是把它们显示出来,而不会声称一个它实际上没有检查过的签名有效。
互操作性
GravesMail 的 PGP 已与 GnuPG 进行了双向验证 — GnuPG 是 OpenPGP 的参考实现 — 验证使用 GravesMail 生成的密钥,涵盖 Ed25519 和 RSA-4096:GravesMail 加密、gpg 解密,gpg 加密、GravesMail 解密,签名在两个方向上都能通过验证。这是一套自动化测试,而不是一次性的手动检查。
Proton Mail 也已确认 — 是手动确认的,而不是通过自动化测试。GravesMail 与一个真实在用的 Proton 账户之间,已经双向收发并读取了真实的加密邮件。这项测试还在过程中发现并修复了三个实际存在的缺陷:Proton 严格的密钥校验拒绝 GravesMail 的 Ed25519 密钥、一个密钥过期方面的错误,以及解密时加密邮件中的附件被悄悄丢弃。三个缺陷均已修复,与 Proton 的互操作在两个方向上都正常。
Thunderbird 我没有专门针对 PGP 测试过,所以我不会在这里作出声称。它是标准的 OpenPGP 客户端,应该能用,但“应该”不等于已验证,我宁愿告诉你哪些是实际检查过的。
受密码保护的邮件(无需密钥)
如果对方也使用 PGP,PGP 就是合适的工具。如果对方不用 — 大多数人都不用 — 请改用下面的密码保护选项。
有时你需要把私密内容发给一个没有加密密钥、也没有专门软件的人 — 对方只有一个普通的电子邮件账户。GravesMail 的密码保护(无需密钥)选项会把你的邮件和所有附件封装进一个真正的、标准的 AES-256 加密 ZIP,收件人在任何平台上用免费的普通软件就能打开。
它使用行业标准的 WinZip AES-256(AE-2)格式 — 与 7-Zip、Keka 以及移动端压缩应用早已支持的强加密相同。它不是 GravesMail 专有的容器,也不是旧式 ZIP 工具使用的那种薄弱、可破解的“ZipCrypto”。互操作性已用真实的标准压缩软件验证过,压缩包的 AE-2 加密格式由自动化测试锁定 — 所以发出去的是一个货真价实的标准文件,而不是只在同一应用的两份副本之间看似可用的东西。
实际发出去的是单个附件 protected-message.zip。你真正的邮件和每个附件都加密保存在其中;可见的邮件正文只包含用平实语言写的打开说明。压缩包内的附件名称被替换为中性的占位名称,真实名称保存在一份加密的清单中,收件人输入密码后才会显示 — 所以文件名也不会泄露。
发送时,GravesMail 会要求你设置一个强密码(至少 12 个字符,包含大小写字母、两个数字和两个符号),并提供实时的检查清单和确认输入框,这样输错字也绝不会把收件人挡在门外。之后它会把密码显示一次,旁边有“复制”按钮,并提醒你通过带外方式告知对方 — 电话、短信或聊天。GravesMail 绝不会提出用电子邮件发送密码,也绝不会把它存储或传输到任何地方。GravesMail 还能在所有平台上就地打开它收到的受保护邮件。
全部的安全性都系于密码 — 请选一个好密码,并通过邮件本身以外的另一条渠道告知对方。没有有效期,也没有“自毁”;没有服务器,这些都无法强制执行,而 GravesMail 是本地优先的,所以我不作这样的声称。ZIP 加密的是文件内容,而不是压缩包的结构,因此截获邮件的人仍然能看到里面有多少个文件,以及它们的大致大小和时间戳 — 只是看不到名称和内容。而邮件的主题、收件人/发件人和时间仍以明文传输,任何电子邮件都是如此。
快速规则:你的个人邮件分拣
快速规则让你为特定的发件人、域名或主题特征创建一键分拣规则。每条规则都有自己的工具栏按钮。你对一封邮件应用规则时,发件人会自动加入该规则的匹配列表 — 规则越用越聪明。
规则可以把匹配的邮件送进垃圾邮件陷阱留待审查,把它移动到某个文件夹,删除它,或在若干天后自动删除它。规则可以设为在同步期间自动应用,这样匹配的邮件根本不会进入你的收件箱;你还可以在几秒钟内扫描整个文件夹,成批处理旧邮件。规则捕获的任何邮件都可以随时审查、还原或清除。
你的规则优先于垃圾邮件过滤器。与你的某条规则匹配的邮件,会在垃圾邮件过滤器把它转走之前,先按你的规则归置 — 所以你为之写过规则的发件人不会被误送进“垃圾邮件”。过滤器仍会运行,仍会给邮件评分,你可以在“属性”中看到它的结论;它只是不会凌驾于你的规则之上。唯一的例外是恶意软件:恶意软件扫描永远优先,所以规则绝不可能把危险的附件送进你的收件箱。
今日捕获列表显示你的所有规则在一个滚动时间窗口内捕获的全部邮件(桌面端为 1 到 96 小时,默认 24 小时)。每个审查列表 —“规则”“今日捕获”和“垃圾邮件”— 都有自己的搜索框。
打开一封被捕获的邮件,第一个选项卡是安全预览:邮件按它在阅读窗格中的样子呈现,但脚本已失效,跟踪像素已屏蔽,远程图片只对受信任的发件人加载。它带有回复、全部回复和转发按钮,因此你不必先把被捕获的邮件还原到收件箱,就可以回复它 — 邮件留在原处,你的回复作为普通邮件发出。
已扣留的附件
当 YARA 或你的系统防病毒软件在附件中检测到恶意软件时,GravesMail 会自动采取以下措施:
- 邮件被隔离存放 — 移动到专门的“恶意软件”文件夹,与“垃圾邮件”分开。
- 附件被剥离 — 危险的文件从邮件中移除。邮件正文会保留,这样你可以看到是谁发来的。
- 数据得以保留 — 附件的字节数据保存在本地。您可以通过已扣留的附件逐项查看被扣留的项目,了解扣留原因,在您信任它时将其保存到磁盘,或者永久删除。被扣留的项目会一直保留到您作出决定为止,绝不会无声无息地丢失。
- 完整说明 — 邮件属性会明确显示是哪条 YARA 规则或哪个杀毒引擎触发了告警、受影响的是哪个文件,以及采取了什么操作。
您也可以随时右键单击任意附件并选择扫描恶意软件,按需执行扫描。YARA 规则可以在“设置”中手动更新,也可以按每周计划自动更新。
自动加密备份
GravesMail 会自动为您的整个配置文件创建加密备份 — 不仅是邮件数据库,还包括联系人、日历、规则、安全列表和屏蔽列表、调整过的阈值、发件人信誉、训练过的垃圾邮件过滤器、PGP 密钥环以及已保存的账户凭据。(随应用提供并在更新时被替换的文件,例如地理位置查询表和基线垃圾邮件模型,则有意不纳入备份。)
- 完整备份 — 配置文件的完整副本,采用 AES-256 加密
- 差异备份 — 仅包含自上次完整备份以来发生变化的内容;还原差异备份时会自动沿备份链回溯
- 操作前快照 — 在任何破坏性操作(快速规则扫描、清除、清空废件箱)之前创建
您可以在备份管理器中控制备份计划:可以选择间隔(关闭、每天、每周或自定义小时数,并每 N 天做一次完整备份),也可以选择每周网格,把每一天分别设为“无”“完整”或“差异”。完整备份、差异备份和快照备份的保留数量上限均可配置,并且绝不会清理掉您唯一的副本。
这些备份是如何加密的
GravesMail 自身的计划备份和手动备份由备份主密钥封存,该密钥由应用为您生成并管理。密钥本身绝不会以明文形式写入磁盘 — 只存储经过封装的副本,并且以两种方式封装:
- 您设备的安全密钥库 — 因此日常备份在后台静默完成,永远不会提示输入密码。
- 您的恢复口令 — 它可以在任何计算机上解开同一把密钥,完全不依赖密钥库。
正是这第二层封装使这些备份不依赖于特定设备。早期版本把自动备份绑定在一台物理计算机上;现在它们不再只能在创建它们的那台计算机上还原。
恢复口令只需在首次备份时设置一次。它是必需的,不可跳过 — 在设置口令之前,备份不会完成,这正是为了确保您永远不会手握一堆无法恢复的备份。此后备份运行时不会再有任何提示。您可以随时在备份管理器中更改它,更改后所有现有备份仍然可以还原。
它是在新设备或已重置的设备上恢复这些备份的唯一途径,而且我无法替您找回它 — 这是有意的设计。没有重置链接,也没有支持后门,因为这两者中的任何一个都会成为他人闯入的入口。如果您忘记了口令又丢失了设备,这些备份将无法打开。请把它存放在安全的地方。
在备份管理器中,您可以浏览任意备份的内容、在所有备份中搜索、与当前数据库进行比较,以及有选择地恢复单封邮件。还原操作会在触碰您当前的配置文件之前先验证备份完整无损 — 被截断或已损坏的备份会被拒绝,您现有的数据保持原样 — 完成后,它会按数据集逐项向您显示还原了哪些内容。
删除日志与恢复
每封被删除的邮件都会连同完整正文一起记录到本地删除日志中。在最长 90 天内(可配置),您可以浏览、搜索并一键恢复已删除的邮件。无需备份文件 — 直接从删除日志即时恢复。