使用 getmail 备份 Gmail
我们可以使用 getmail 来完整备份 Gmail 帐户中的电子邮件。
电子邮件将以 Maildir 格式备份,这意味着每封电子邮件都将是一个单独的文本文件,可以使用任何电子邮件客户端甚至文本编辑器读取。
安装 getmail
创建所需的文件和文件夹
Getmail 默认从 ~/.getmail/getmailrc 读取其配置。不幸的是,此目录和文件默认不存在,因此我们需要创建它们。
$ mkdir ~/.getmail $ touch ~/.getmail/getmailrc $ chmod 700 ~/.getmail
我们还需要创建用于备份电子邮件的文件夹
$ mkdir -p ~/bak/mail $ cd ~/bak/mail $ mkdir cur new tmp
在此示例中,选择了 ~/bak/mail,但也可以是 ~/mail。 Maildir 格式和 getmail 需要 cur、new 和 tmp 文件夹。
配置 getmail
编辑配置文件并添加以下条目。
~/.getmail/getmailrc
# More configuration options here: # http://pyropus.ca/software/getmail/configuration.html [retriever] type = SimpleIMAPSSLRetriever server = imap.gmail.com mailboxes = ("Inbox", "[Gmail]/Sent Mail") # optional - leave this line out to just grab the inbox username = USER password = PASS
[Gmail]/Sent Mail
不存在,请尝试将您的 Gmail 语言设置更改为英语。此设置可以与 Google 帐户的语言设置不同。retriever 部分告诉 getmail 连接到哪里。它使用 IMAP 连接到服务器。对于 POP3,我们可以使用 SimplePOP3SSLRetriever 类型,但我们也必须修改 server 字段。我们要备份的邮箱将是 All Mail。
请注意,Gmail 在某些国家(如德国)被称为 Google Mail。即使所有 GMail 帐户都已迁移到新名称,IMAP 服务器仍然假定 Google Mail 为邮箱目录。在这些情况下,mailboxes 变量必须设置为 [Google Mail]。此外,您可能需要将邮箱标签替换为 GMail 在您的 Google 帐户语言中对该目录的称呼。
username 和 password 字段需要更改为您自己的。
[destination] type = Maildir path = ~/bak/mail/
path 字段是目标文件夹(我们之前创建的),电子邮件将在其中备份。所有电子邮件都将放置在“new”中,而 cur 和 tmp 文件夹将保持为空。这是正常的,请勿删除 cur 和 tmp。
options 部分稍长一些
[options] verbose = 2 message_log = ~/.getmail/log
这告诉 getmail 非常详细,并告诉我们每条消息的状态(是否已成功备份、消息总数等)。此外,所有内容都将记录到 ~/.getmail/log。
# retrieve only new messages # if set to true it will re-download ALL messages every time! read_all = false
# do not alter messages delivered_to = false received = false
将 delivered_to 和 received 字段设置为 false 将阻止电子邮件被 getmail 更改。
运行 getmail 并添加 cron 任务
现在,如果我们运行 getmail,它将把所有 Gmail 电子邮件备份到 ~/bak/mail,并在过程中输出其状态。
我们希望定期运行 getmail 来备份我们的 Gmail 帐户,因此我们将添加一个 cron 任务
* * * * * ID=getmail FREQ=1d getmail -q
-q 参数将以静默模式运行 getmail,并且仅报告错误。
迁移邮件,导入旧邮件
备份电子邮件对于大多数人来说就足够了,但是如果我们想将电子邮件迁移到另一个帐户,则会有点棘手。来自 http://bitbucket.org/wooptoo/appendmail[死链接 2020-12-20 ⓘ] 的 appendmail 脚本可以帮助我们将电子邮件导入到另一个帐户,无论是 Gmail 还是其他帐户。它也可以用于将旧电子邮件导入到我们现有的 Gmail 帐户中。
基本上,它从其“import”文件夹中读取每个电子邮件文件,并将其放在 Gmail 或另一个帐户上。
直接下载链接是 http://bitbucket.org/wooptoo/appendmail/get/tip.zip[死链接 2020-12-20 ⓘ] 它需要 PHP 才能运行,并且您需要将用户名和密码修改为您自己的。
故障排除
根据您的 Gmail 安全设置,在运行 getmail 时,您可能会遇到此错误
getmailrc: credential/login error ([ALERT] Please log in via your web browser: https://support.google.com/mail/accounts/bin/answer.py?answer=78754 (Failure)) 0 messages (0 bytes) retrieved, 0 skipped
由于 Gmail 不再允许“lesssecureapps” 启用安全性较低的应用的访问权限,您可能需要开启 两步验证,然后创建一个 应用密码 并将其作为密码放入 getmailrc 中(对于 POP3)
~/.getmail/getmailrc
type = SimplePOP3SSLRetriever server = pop.gmail.com username = USER@gmail.com password = APPPASSWORD port = 995