先记一句能核对的结论:邮件客户端里的小锁,只说明这一跳用了 TLS,不说明正文离开服务器之后还是密文。发出去之后,用金丝雀口令在「已发送」和对方收件箱里搜索;能搜到原文,就说明这封邮件仍然是一份明文存储。不要用真实生产密钥做实验。
发出去的不是「通知一句」,是把明文交给一套存储系统
很多人把工作邮箱当成本地对话框:字还在自己屏幕上,对方只是「看看」。点发送之后,这段文字已经离开当前标签页,成为邮箱服务商要投递、索引和保存的报文。数据库口令、云厂商访问密钥、GitHub 个人访问令牌、Wi-Fi 共享密码、账号恢复码,都属于 OWASP 日志速查表 里通常不该以明文落入共享记录的内容。发件箱、已发送、对方收件箱、手机上的 IMAP 副本,在公司里经常扮演「非正式密钥库」:检索方便、权限比密码库松、保留时间更长。
HTTPS 或「这封邮件已加密」只保护传输过程中的窃听。它不决定对方邮箱把正文存多久、给不给管理员搜、备份盘上还留不留一份。上一篇写过:把密钥贴进模型会话,原文会进历史和可能的训练副本。邮件传密是同一类暴露,只是接收方从「模型服务商」换成了「至少两套邮箱存储,外加沿途的中转服务器」。外发前要处理的,不是「这封邮件聪不聪明」,而是「这一段里有没有不该变成可检索邮件正文的秘密」。
本文以 Gmail、Exchange Online 和国内企业邮的公开说明为主,因为留存数字和归档权限写得清楚,也最好核对。自建 Postfix、Coremail、腾讯企业邮同样是存储转发:换产品时应对着那一家的归档页和删除策略再走一遍,不要把下面的 30 天和 14 天直接套到别的服务上。
小锁和 STARTTLS 护住的是单跳,不是端到端
浏览器地址栏或邮件客户端上的小锁,常被理解成「从我到对方全程加密」。SMTP 的传输加密不是这样工作的。RFC 3207 第 6 节写得很直:SMTP 不是端到端机制。一对 SMTP 客户端和服务器决定加上 TLS,并不等于从发件人的邮件用户代理护到收件人。一封信可能经过两台以上的 SMTP 服务器;给其中一对加上 TLS,并不表示整条投递链都变成私密。
于是会出现一种看起来矛盾的现场:你的客户端到公司出站网关是 TLS,网关到对方 MX 也可能是 STARTTLS,但每一跳结束时,中转服务器都要把报文拿出来看信封、做垃圾过滤、再交给下一跳。正文在那些磁盘上默认是可读的。要真正做到「沿途谁也读不懂」,需要 S/MIME 或 OpenPGP 这类内容级加密,而不是指望传输层的小锁。工作邮箱里随手写的密码,几乎从来没有走这一层。
IMAP 和手机客户端会再复制一程。邮箱不是「只在网页里看一眼」的管道,而是服务器上的邮件存储:收件箱、已发送、草稿、垃圾箱都是对象。另一台已登录的电脑、公司配发的手机、桌面客户端的离线缓存,都能再读同一封明文。传输加密挡的是链路上的旁观者,挡不住已经入站的存储副本。
发件箱和收件箱:发出去就至少两份可读副本
点发送之后,先数副本,再谈删除。第一份在你这边:Gmail 的「已发送」、Outlook 的「已发送邮件」、大多数 IMAP 账户的 Sent。这不是浏览器里的撤销缓冲,而是写进邮箱存储的正式对象。你自己过两个月还能搜到那串口令,管理员按关键字检索时也能搜到。第二份在对方:收件箱、以及对方用「全部邮件」或归档标签收起来的那一条。两份都是正文,不是「只剩主题」。
抄送和密送会继续加份数。抄送给项目组,组里每个人的收件箱各留一份;密送只是对其他收件人隐藏地址,并不减少存储。自动转发、邮箱规则、「发送一份到钉钉/企业微信」一类网关,还会在邮件系统之外再落一份。这些副本不共享同一条删除按钮:你清空自己的已发送,动不了对方的收件箱,也动不了网关已经写出去的那条。
搜索框就是证据。Gmail、Outlook 和大多数网页邮箱都按正文建索引。把金丝雀口令丢进搜索,能命中,就说明这封邮件对「拥有邮箱权限的人」是可读的。这和网盘秒传、剪贴板历史是同一类暴露:功能为了好用而保留明文,不是为了帮你忘记秘密。
| 位置 | 通常还剩什么 | 谁还能读到 |
|---|---|---|
| 发件人「已发送」 | 完整正文和附件 | 发件人;拿到这套邮箱权限的人 |
| 收件人收件箱 / 全部邮件 | 同一份完整正文 | 收件人;对方的同步设备 |
| 中转 SMTP 服务器 | 投递时的可读报文 | 该跳的运维与过滤系统 |
| 垃圾箱 / 可恢复项 | 删除后仍可找回的正文 | 用户本人;超时前的恢复入口 |
| 企业归档 / Vault / eDiscovery | 按策略保留的可检索副本 | 归档或合规管理员 |
双方都点了删除,时钟往往还没走完
「我删了、他也删了」常被听成秘密已经收回。邮箱产品自己写的删除路径更长。Gmail 删除说明写明:删除后邮件进入垃圾箱;之后最多约 30 天,你仍可在垃圾箱里找到并移回收件箱,也可以选择永久删除;满 30 天后才从账户里永久删除,且不能再恢复。归档不是删除:归档只是从收件箱挪走,搜索「全部邮件」还能命中。
Exchange Online 多一层隐藏文件夹。按 Microsoft 的可恢复项说明:从「已删除邮件」再删一次、清空已删除、或按 Shift+Delete 永久删除之后,对象进入 Recoverable Items 的 Deletions 子文件夹,默认再留 14 天,管理员最长可调到 30 天。用户可在 Outlook 里「恢复已删除的项目」。若邮箱被加上诉讼保留(Litigation Hold),这道保留期限会被忽略,删除不再按 14 天清理。
撤销发送也救不回已经出手的秘密。Gmail 的撤销发送只提供 5、10、20 或 30 秒的取消窗口;这是延迟真正投递,不是从对方服务器把正文挖回来。窗口一过,那封邮件就按普通已发送处理。Outlook 的撤回只在特定 Exchange 组织内、且对方尚未阅读时才可能成功,不能当成通用回收按钮。
企业归档和管理员检索是另外几份,用户删不掉
个人邮箱的垃圾箱时钟,和企业合规不是同一套开关。阿里邮箱的邮件归档说明写:归档管理员可以按发件人、收件人、关键字和时间区间查询,并导出结果;可以下载和查看归档邮件中的附件;归档邮件不可删除;被删除或禁用的邮箱账户里的邮件依然被归档;关闭归档服务后,历史归档在期限内仍会保存。默认的邮箱管理员 postmaster 没有归档权限,但可以被授予。用户在客户端里点删除,动不了这份档案。
Google Workspace 的 Vault 把检索写进了产品能力。Vault 搜索 Gmail 可以按关键字查邮件正文和附件(官方写的是大约前 1 MB 的文本与附件),可以预览、打印和下载附件,也包含草稿和自动保存的草稿。Microsoft Purview 的内容搜索同样把邮箱列为数据源:用关键字搜邮件时,会覆盖主题、正文和大量参与者属性。这两套工具的设计目标就是「员工删了也能找回来」,不是「尊重发件人的后悔」。
所以「只有我们俩知道」在公司邮箱里通常不成立。能开归档、能进 eDiscovery、能导出邮箱的人,按岗位就能读到那串口令。这不是指控某家厂商偷看,而是产品说明书自己写出来的权限。个人 Gmail 没有 Workspace 管理员,不等于已发送里的明文对拿到这台已登录电脑的人不可读。
机密模式挡的是误转发,挡不住归档和截图
Gmail 机密模式常被当成「邮件版阅后即焚」。官方范围更窄。Gmail 帮助写:可以设置到期、随时撤销访问、关掉转发/复制/打印/下载,还可以要求短信验证码。同一页的重要提示是:收件人仍可截图或拍照;装了恶意程序的收件人仍可能复制或下载。Workspace 的说明还写清实现:Gmail 会从收件人那一份里拿掉正文和附件,改成一个指向内容的链接;经 SMTP 送出去的,主要是主题和这枚链接。
到期或撤销之后,收件人打不开正文,并不等于发送方组织里那份也没了。Vault 对机密模式的说明写:若组织启用了机密模式,Vault 可以保留、检索和导出本组织用户在 2018 年 11 月 30 日之后发出的机密模式邮件;即使用户设了到期日期或撤销了收件人访问,这些邮件对 Vault 仍然可用。检索可用 label:confidentialmode。预览时内容默认隐藏,但操作者可以选择显示。这不是「烧了」,这是「对收件人关闸,对合规入口仍开着」。
因此机密模式适合减少误转发,不适合当一次性密钥通道。它仍然依赖同一家邮件服务商托管正文;主题仍走普通 SMTP;截图官方自己承认挡不住。若目标是「服务端只拿得到密文、读完按次数删除、密钥不进 HTTP」,那是另一套拆分,不是把同一封邮件标成机密。
不要用真实口令、生产环境 API Key 或未脱敏连接串做实验。准备一句可丢弃的金丝雀,例如 canary-mail-2026-do-not-reuse。核对的是「已发送」和搜索命中,不是把秘密再传播一遍。已经用邮件发出去的真实密钥,应先在签发方作废,再换传递方式。
当场核对:金丝雀只进测试账户,再搜已发送
口号写「邮件已加密」无法自证。能当场看到的是四件事:已发送里有没有原文,收件测试箱里有没有原文,删除之后垃圾箱或可恢复项里还在不在,以及地址栏里的小锁有没有被理解成「服务器也读不懂」。这一步只证明「这封测试邮件留下了哪些可读副本」,不证明某家厂商的归档策略——后者只能对照官方帮助页。
先准备两个你自己控制的测试邮箱,不要用生产通讯录。金丝雀写成一眼能认、又不会撞上真实口令的短语,例如 canary-mail-2026-do-not-reuse。主题写成普通通知,正文只放这句金丝雀,不要夹带身份证号或真实主机名。发送后立刻在发件账户搜索这串字符:已发送应能命中。再登录收件测试账户搜索:收件箱也应能命中。两处都命中,就是「至少两份明文」。把发件侧那封删进垃圾箱,在 30 天窗口内再打开垃圾箱,Gmail 仍应能找到;这证明删除不是收回。
若你要核对「密钥有没有进 HTTP」,不要把密钥写进邮件。改用阅后即焚链接:创建后看地址栏是 s.html?id= 加 # 密钥;打开开发者工具的 Network,请求行里应只有编号,不应出现井号后面那一段。这一步证明的是链接形态,不是邮件正文。邮件正文一旦发出,Network 救不回已经入站的存储。
- 用两个测试邮箱发送只含金丝雀的正文,例如
canary-mail-2026-do-not-reuse;不要用真实密钥。 - 在发件账户的「已发送」和收件账户的收件箱搜索这串字符,两处都应命中。
- 删除发件侧那封,打开垃圾箱或「恢复已删除的项目」,确认窗口期内仍在。
- 必须把真密钥交给人时,换阅后即焚;邮件只送不带密钥的通知或已经加密的附件。
这套步骤证明的范围很窄:这一次操作里,明文作为邮件正文落进了至少两套存储,删除按钮没有立刻擦掉发件侧副本。它不证明扩展程序没有另存,也不证明对方公司有没有开 Vault。换邮箱产品之后,值得对着那一家的删除和归档页再跑一遍金丝雀。
用打开即用的阅后即焚,把通知和密钥拆开
若你希望把「正文不进邮箱存储」练成可重复的动作,可以从 MakePwd 的阅后即焚切入。打开即可使用,无需注册,也没有账号。明文只在创建方的标签页出现;浏览器用 Web Crypto 按 AES-256-GCM 加密;出站字段是密文、过期时间和阅读次数。服务器只暂存密文,返回一个编号。页面再把密钥接到 s.html?id={编号}#{密钥} 的片段上。按 RFC 9110,目标 URI 不含 fragment,请求行里不该出现井号后面那一段。
练习时只用金丝雀。创建一条可丢弃的短语,把完整链接发给测试对象,邮件正文里只写「请打开链接,不要转发带井号的整串」。对方点确认并取回之后,再打开同一编号应看到已经焚毁的状态,而不是又一份可读正文。聊天或邮件里残留的蓝色链接还在,那是定位凭证;密文按设定次数删除之后,这串字符解不开任何东西。细节见阅后即焚链接读完一次后,服务端还剩什么,以及URL 的井号后面为什么适合放密钥,以及什么时候会失效。
整份含密钥的文件不要改回「带密码的 ZIP 当附件」。文件加密盒在当前标签页用 AES-256-GCM 做成 .lock / .enc(单文件不超过 5 GB),密文可以走邮件或网盘,口令走另一条通道。已经用邮件发出去的登录口令,应先在签发方作废,再用密码生成器在本机生成 6–128 位的新串(默认 16;低于 8 位会提示较弱)。这些步骤都不要求登录。
常见问题
邮件走了 HTTPS,密码是不是只有收件人能看见?
不是。RFC 3207 写明 SMTP 不是端到端机制:一对服务器加上 TLS,并不等于从发件客户端护到收件人。每一跳都可以先解密再投递。发件箱、收件箱、服务器磁盘上的报文,默认都是可读正文。
双方都删了这封邮件,密码还在吗?
可能还在。Gmail 把删除项放进垃圾箱,最多约 30 天仍可找回。Exchange Online 永久删除后默认在可恢复项里再留 14 天,最长可调到 30 天;诉讼保留会忽略这道时钟。企业若开了归档,管理员仍可能查询和导出正文。
Gmail 机密模式到期之后,正文是不是从系统里消失了?
对收件人来说,到期或撤销访问后打不开正文。对发送方所在组织的 Vault,官方写明:即使用户设了到期或撤销访问,Vault 仍可保留、检索和导出组织内发出的机密模式邮件。截图和拍照官方自己也写挡不住。
必须把密码交给同事时,邮件还能怎么用?
邮件只适合送不带密钥的通知或密文附件。真实口令用阅后即焚一次性发送,密钥留在 URL 的 # 片段;创建与阅读均打开即用,服务端只暂存密文。不要把同一串明文再写进邮件正文。
下次写邮件前记住的三件事
第一,发送即落盘。发件箱、收件箱、同步设备和沿途中转可能各留一份可读正文;事后改当前页收不回已经入站的副本。第二,删除只是开始走时钟:Gmail 垃圾箱约 30 天,Exchange 可恢复项默认 14 天,企业归档和 Vault 是另一套、用户删不掉。第三,机密模式和撤销发送挡的是误操作,不是端到端;必须送达的真密钥走阅后即焚,已经泄露的口令先作废再换新。
若你还要继续追问「读完一次之后服务器还剩什么」,请读阅后即焚链接读完一次后,服务端还剩什么。若要核对井号后面的密钥会不会进 HTTP,请读URL 的井号后面为什么适合放密钥,以及什么时候会失效。本文只把「密码进了邮件正文之后还可能剩什么」收成可以写进结论的范围。