你的邮件是你的。但一次性把它们全部从 Gmail 取出,是 Google 不愿意配合的事。它公布了一个上限,规定单个账户每天最多能下载多少字节;一旦超出,账户就不再响应——不是一分钟,而可能是一整天。

没有人会在日常收发邮件时碰到这个限制。你第一次尝试把整个邮箱都带走时,才会撞上它。

Google 公布的数字

这些限制按用户、按天计算,Google 在所有 Workspace 版本中都统一执行:

  • IMAP 下载:每日 2,500 MB。 这是对备份工具、归档工具和桌面邮件客户端而言最相关的一项。
  • POP 下载:每日 1,250 MB。 只有一半,这也是不该用 POP 归档的又一个理由。
  • 网页客户端下载:每日 1,250 MB。 从浏览器里拖出附件也算在内。
  • IMAP 上传:每日 500 MB。 真正让人吃苦头的是这一条:当你把邮件迁入 Gmail 帐户,而不是从中迁出时。
  • 网页客户端上传:每日 1,500 MB。

一旦超过阈值,账户就会被临时暂停。按 Google 自己的说法,暂停通常持续一小时,但最长可达 24 小时。你登录后看到的是一条错误提示,而不是邮箱。没有任何邮件被删除——但也什么都用不了。

Google 还特别说明,这些限制可能随时变动,恕不另行通知——说得客气,意思是:不要把这个数字当成一份合同来设计任何东西。当前的数字发布在 Google 的 Gmail 带宽限制页面.

两点五 GB 听起来很慷慨——直到你开始计算

一个从大学时代就开始用的邮箱很少会小。十五年的收据、亲戚发来的照片、会计师寄来的 PDF,加上十年的新闻邮件,很快就会累积起来——30、40、60 GB 都不稀奇。

按每天 2,500 MB 算,一个 40 GB 的邮箱至少需要十六天才能下载完。不是十六个小时,是十六天——而且前提是没有其他任何东西动用这个账户,也没有一个字节被重复下载。

把任何邮箱的容量除以上限,就得到所需的天数。10 GB 的帐户是四天,50 GB 是二十天,100 GB 是四十天。而如果服务器已经拒绝之后工具仍在重试,每一次超额都可能换来一次封停,吞掉第二天的额度——那么上面每个数字都要翻倍。

按邮箱容量计算的 Gmail 下载所需天数 两条直线。在每日上限处停下,10 GB 需要四天,100 GB 需要四十天。一再重试直至被封停,两者都翻倍:八天和八十天。 02040608010255075100 重试直至封停到上限就停 80 天40 天 天数邮箱容量(GB)
这是算术,不是实测:邮箱容量除以官方公布的每天 2,500 MB。上面那条线是同一个邮箱——当每次超额换来的是封停而不是暂停时。

最后这一点常常出乎意料。这份额度属于账户,而不属于某个应用。手机在后台同步、笔记本上的邮件客户端在刷新一个大文件夹、归档工具在处理邮箱——全都从同一份 2,500 MB 里扣。一个备份工具可以规规矩矩,账户却依然会被锁定,只因为同一时间还有三个其他客户端在忙。

附件才是账单的大头。十万封纯文本邮件的体积,可能还不如四百封带照片附件的邮件。这意味着邮箱里的邮件数量,几乎无法告诉你需要花多少天。

Gmail 会把同一封邮件算不止一次

Gmail 不是一个伪装成标签的文件夹系统,而是一个伪装成文件夹的标签系统。通过 IMAP 访问时,一封带有三个标签的邮件会出现在三个邮箱里,外加 All Mail。一个逐个遍历文件夹、把找到的一切都下载下来的工具,会把这封邮件下载四次——并被计入四次每日限额。

对任何连接 Gmail 的 IMAP 客户端,实用的规则是:在 All Mail 和各个标签之间二选一,绝不要两者都选。All Mail 中每封邮件只出现一次,因此是制作完整存档时的高效选择。两者都选,是在一个下午耗尽一天带宽、并且额外收获一堆重复邮件的最常见方式。

撞上限额是什么样子

没有任何预警。服务器只是开始拒绝连接,而客户端里显示的通常是一条毫无帮助的身份验证或连接错误,而不是一句明确的“你今天下载得太多了”。识别不出这种状况的软件,会把它当成一次临时故障,然后礼貌地、耐心地、循环重试——对着一个早已被暂停的账户。

这才是真正的损失。限额本身只是花掉你的时间;不断重试一个已被锁定的账户,则会连第二天也一起搭进去。

一个清楚自己已经拥有什么的存档工具。 MailVault 只读取一次你的邮件,把它保存为归你所有的文件,并在 Gmail 说今天到此为止时体面地停下。

访问MailVault

MailVault 如何在限额之内工作

MailVault 是一款本地邮件归档工具:它把你的邮件从服务器复制到你自己的磁盘上,保存为标准的 .eml 文件,其设计前提是:带宽才是稀缺资源,磁盘空间不是。

  • 它绝不会重复下载同一封邮件。 在下载任何内容之前,它会先把服务器上的 UID 与磁盘上已保存的邮件进行比对,只请求差异部分。对一个没有变化的邮箱再运行一次,花费的只是几十 KB,而不是再来一次 2,500 MB。这是一个 Gmail 归档工具能拥有的最重要的特性。
  • 它会协商连接压缩。 在服务器支持 COMPRESS=DEFLATE的情况下,MailVault 会启用它。邮件头和纯文本正文压缩效果很好;本身已经压缩过的附件,则几乎没有变化。这在以文字为主的邮箱上能腾出实实在在的空间,在以照片为主的邮箱上则毫无用处。
  • 先取邮件头,再取正文。 邮件信封体积很小。先下载它们,意味着你能在把当天的额度花在正文内容之前,先看到并搜索整个邮箱的轮廓——谁发的、什么时候、多大。
  • 它只读取,不触碰。 每一次读取都使用 BODY.PEEK,因此归档过程绝不会把邮件标记为已读,也不会触发其他客户端的重新同步。
  • 它会复用一小池连接 ,而不是每个文件夹都新开一个连接——这也是避开 Gmail 并发连接上限的方法。
  • 服务器喊停时,它就停。 当 Gmail 报告带宽限额时,MailVault 会结束本次运行,而不是不断重试直到账户被暂停。已经下载的内容全都留在磁盘上,应用会明确告诉你已达到每日限额,并建议在限额重置后再次运行——通常在一小时内,最长 24 小时。
  • 存档本身就是状态。 因为进度是以普通文件夹里的普通文件形式保存的,一次中断的运行并不会损坏什么数据库。明天再运行时,只需看看磁盘上已有什么,就能接着补齐差异。

这些都算不上聪明。它只是两种软件之间的区别:一种把每日额度当成环境的既定事实,另一种则把服务器当成无穷无尽。

归档一个大型 Gmail 账户,实际怎么做

  1. 以天为单位规划,而不是小时。 把邮箱大小除以 2.5 GB,预计至少需要这么多次运行。
  2. 同一时间只运行一个归档工具。 在第一次完整归档运行期间,暂停其他设备上频繁的同步。
  3. 只选 All Mail 或标签,不要两者都选。 All Mail 里每封邮件都只保存一次。
  4. 预计最大的开销会出现在最初。 第一次运行代价最高;之后每次运行只会获取新到的邮件。
  5. 如果账户被锁定,等它自行解除。 不要循环反复地重启工具。耐心等一小时,比被暂停一整天划算。
  6. 核实你已经拥有的内容。 一个你从未打开过的存档,只是一种期望,而不是备份。标准的 .eml 文件可以被任何邮件客户端打开,这正是使用它的意义所在。

MailVault 在 macOS 和 Linux 上默认完成上述六件事。

我们还没解决的问题

诚实比营销便宜。目前的 MailVault 是对限制作出反应,而不是预先规避:它不会按每日预算统计字节数并自我调速以保持在 2,500 MB 以下,也还没有使用 Gmail 自有的邮件标识符来识别标签下的一封邮件与 All Mail 中的同一封邮件本是一封而非两封。这两件事都在计划之中。在此之前,上面的建议——只用一个存档工具、只选 All Mail、分成几天进行——用更少的代码做到同样的事。

把你的邮件带出云端,一天一份地取回来。 MailVault 会把 Gmail 以及其他任何 IMAP 账户归档为标准的 .eml 文件,保存在你自己的机器上,并且绝不会重复下载同一封邮件。

访问MailVault