科技 · 实用指南
Thunderbird“本地文件夹”消失?导入前先审计 mbox 文件
只读 CSV 台账可以说明哪些数据仍在,同时避免改动可能是唯一副本的配置。

“本地文件夹”消失并不只对应一种故障:Thunderbird 可能打开了另一个配置文件,旧配置文件里可能仍有无扩展名的 mbox 文件,也可能只剩索引或不完整的 IMAP 离线缓存。在弄清实际状态前,最危险的第一步就是把文件直接复制进正在使用的配置文件。
本指南要求在任何导入前先做有边界的只读盘点。清单保留每个候选文件的来源配置、目录层级、大小和 SHA-256,只记录字节中实际可见的证据;一旦发现配置冲突或目标同名,就停止而不替用户作选择。它不保证恢复,也不会修改被检查的副本。
可执行的恢复判断必须先回答来源问题:哪个配置、哪棵存储树、哪一组精确字节、还存在哪些不确定性。台账把 mbox 样式候选与索引、层级容器、空文件夹及仅缓存的 IMAP 证据区分开后,才能选择最小、可撤销的动作。
把原备份、审计副本、CSV 和脚本哈希一起保存。来源仍不明确时,宁可继续保全,也不要合并。延后一次谨慎导入,远比覆盖唯一幸存的邮件仓库便宜。
先复制,再检查;不要扫描 Thunderbird 正在使用的配置
开始收集前先关闭 Thunderbird。Mozilla 的迁移说明要求在 Thunderbird 未运行时复制配置数据;配置文档也提醒不要从多个位置同时打开同一配置。把每个候选配置目录完整复制到普通本地磁盘,保留原备份不动,审计只针对这份可信副本。
如果升级后邮件突然“消失”,只在记录 about:profiles 当前活动配置路径时打开 Thunderbird,然后再次关闭。安装实例切换到不同配置会让完好的数据看似不见。应记录找到的所有配置路径,不能只凭目录时间或名称猜最新的就是正确来源。
先理解文件能证明什么,也要知道它不能证明什么
在配置目录中,Mail 通常存放 POP 账户和“本地文件夹”,ImapMail 对应 IMAP 账户。Thunderbird 常用无扩展名文件保存一个 mbox 文件夹;同名的 .msf 是可重建索引,不是邮件正文仓库;以 .sbd 结尾的目录表示子文件夹层级,应与相关文件一起保留。
这些命名只能当线索,不能当结论。空的无扩展名文件可能只是原本就为空的文件夹,另一个无扩展名文件也可能是完全无关的二进制数据。ImapMail 里可能只有索引或不完整离线缓存,存在这些文件并不能证明服务器全部邮件可恢复。因此审计只标记格式证据和不确定性,不会宣布每个候选都可安全导入。
运行有边界的只读盘点
把已提供的 thunderbird_mbox_audit.py 保存到装有 Python 3 的电脑。输出 CSV 必须位于配置副本目录之外,并且文件名不能已存在。脚本拒绝符号链接,拒绝超过 10,000 个源文件,拒绝覆盖现有报告,并在扫描前后分别核对字节、文件大小、纳秒级修改时间及 SHA-256。
运行:python3 thunderbird_mbox_audit.py "/离线副本路径" "/新报告路径/audit.csv"。程序遍历 Mail 与 ImapMail,但不修改它们;它统计 mbox 风格的 From 分隔行,检查分隔行附近是否出现常见邮件头,记录 SHA-256,把无扩展名候选与 .msf 配对,保留 .sbd 层级,并按不区分大小写的目标键归组。
把 CSV 当证据台账,不要当成导入指令
每一行只说明一个路径的现状。profile_root 表示候选来自哪个配置;storage_tree 区分 Mail/Local Folders、POP 账户树和 ImapMail 账户;relative_path 与 sbd_parent 保留层级;size_bytes 与 sha256 用于判断两个候选是否字节完全相同,而不是仅仅同名。
风险标签 mbox-like-evidence-not-proof 表示文件至少出现一个 mbox 分隔行,并在附近找到常见邮件头,但仍需人工复核。extensionless-no-mbox-evidence 表示不能只因没有扩展名就导入;empty-extensionless-candidate 需要核对历史;rebuildable-index 表示 .msf;hierarchy-container-not-message-data 表示 .sbd。same-destination-name-collision 表示至少两个候选争用同一目标身份,脚本会刻意拒绝替你选其中一个。
把“本地文件夹”和 IMAP 缓存证据分开判断
位于 Mail/Local Folders 下、且具有合理 mbox 证据的文件,是已消失本地邮件的最强候选。位于其他 Mail 账户树的候选也可能重要,但任何移动前都应记录账户身份。对于 ImapMail,要区分真实下载的邮件字节和只有索引的残留,并记住离线缓存可能不完整;服务器账户仍存在时,应先与服务器对照,不能把缓存直接当权威归档。
不要把 .msf 行算作邮件,不要用一个非空 ImapMail 候选推断服务器邮件总数,也不要仅因文件夹名称熟悉就合并不同配置。出现同名冲突时,保留两边文件与哈希,确认各自配置和账户来源,之后再设计可撤销的重命名方案或分别测试导入。
根据证据选择最小且可撤销的下一步
如果只是活动配置选错,最小动作可能是选择正确配置,而不是导入。若有确认完好的完整旧配置,应在 Thunderbird 关闭且应用版本兼容时按 Mozilla 的整套配置迁移流程操作。若只剩部分本地 mbox 候选,应在另一个一次性测试配置中工作,并停在 Thunderbird 文档规定的正式导入边界之前;诊断阶段不要替换正在使用的 Local Folders 树。
当来源身份不明确、扫描期间副本发生变化、报告出现同名冲突、唯一证据只是 .msf,或材料只是无法确认完整性的 IMAP 缓存时,应立即停止。保留 CSV、源副本哈希、脚本哈希和原备份。本审计不会修复损坏的 mbox 字节、去重邮件、恢复从未下载的服务器邮件,也不保证 Thunderbird 一定接受某个候选。
证据决策表
观察到的状态 | 它支持的判断 | 它不能证明的事 | 最安全的下一步
about:profiles 显示另一个可信配置 — 邮件可能只是因 Thunderbird 打开了不同配置而看似消失 — 另一个配置一定完整或最新 — 关闭 Thunderbird,分别复制并审计两个配置
无扩展名文件具有分隔行和邮件头 — 存在值得复核的 mbox 样式证据 — 每封邮件都能解析,或文件属于预期文件夹 — 固定哈希后保留;只在一次性配置中检查和测试
只有 .msf,没有对应无扩展名文件 — 索引文件仍然存在 — 邮件正文仍保存在本机 — 不要计为可恢复邮件;检查备份或服务器
.sbd 目录下有子候选 — 存在子文件夹层级证据 — 父级 mbox 必然存在或有效 — 保留层级,并逐个审计子候选
ImapMail 候选 — 账户缓存中可能保留部分数据 — 服务器全部邮件都已下载 — 先与服务器对照;不要把缓存当完整归档
目标同名冲突 — 两个配置或目录树声称同一逻辑名称 — 应该用哪一个覆盖另一个 — 两边都保留,确认来源后分别导入或重命名
常见问题
删除 .msf 就能恢复文件夹吗? 不能把 .msf 当作邮件正文。它是可重建索引;相关 mbox 存在时,Thunderbird 可能重新生成索引,但删除索引无法重建已经缺失的邮件字节。先保留副本并找到对应的无扩展名仓库。
Mail 目录下所有无扩展名文件都是邮件吗? 不是。Thunderbird 的 mbox 经常无扩展名,但这只是线索。还要结合大小、分隔行、邮件头、路径上下文和人工检查;脚本只标记证据,不断言文件有效。
可以直接导入到正在使用的 Local Folders 吗? 不要把正式配置当诊断工作区。复制时保持 Thunderbird 关闭,保留原备份,只有审计解决了来源和同名冲突后,才在一次性测试配置中验证选定候选。
ImapMail 能恢复服务器上已删除的邮件吗? 不能可靠保证。IMAP 配置中可能只有索引、部分缓存正文或过时数据。盘点能显示本机证据,但不能证明完整,也不能恢复从未下载的邮件。
