使用 fetchmail 一次性从 gmail 中提取电子邮件

Ore*_*lom 6 fetchmail

  • 我正在尝试fetchmail在终端中使用从我的 gmail 帐户中提取电子邮件。
  • 我配置了我~/.fetchmailrc的:
poll imap.gmail.com protocol POP3
   user "someuser@gmail.com" is oren here
   password 'verysecretpassword'

Run Code Online (Sandbox Code Playgroud)

(当然使用真实的用户名+密码)。

  • 然后我试图天真提取电子邮件,其中包含:$ fetchmail。
  • 可悲的是什么也没发生,我得到的只是:
fetchmail: 6.3.26 querying imap.gmail.com (protocol POP3) at Mon 03 Feb 2020 14:34:46 IST: poll started
Trying to connect to <ADDRESS> ... connection failed.
Run Code Online (Sandbox Code Playgroud)

Z4-*_*ier 5

使用 Fetchmail

看起来配置设置为轮询 IMAP 服务器,然后指定 POP3 协议。尝试这样的~/.fetchmailrc文件:

set postmaster "local_user"
set daemon 600
poll pop.gmail.com with proto POP3
   user 'gmail_user_name' there with password 'app_password' is local_user here options ssl fetchlimit 400
Run Code Online (Sandbox Code Playgroud)

在哪里:

  • local_user 是一些无法投递的邮件应该去的本地帐户(永久失败之前的“最后一次努力”)。
  • gmail_user_name是@电子邮件地址左侧的所有内容。
  • app_password是一个专门生成的密码,仅限于 gmail 应用程序(转到此处:https : //myaccount.google.com/并单击Security,然后app passwords生成新的应用程序密码)

此时要做什么取决于您的本地设置。Fetchmail 将...获取邮件(显然)...然后将其发送到本地机器的发送系统。如果您有 sendmail(一个非常安全的赌注),这可能有效:

$ fetchmail -d0 -avNk -m "/usr/sbin/sendmail -i -f %F -- %T" pop.gmail.com
Run Code Online (Sandbox Code Playgroud)

邮件应该开始流入。可以使用该mail命令读取邮件或从/var/mail/[username]. 这可能无法一蹴而就;如果地址积累了少量历史记录,则很可能不会。让它完成并检查它是否按预期工作。如果一切看起来都不错,那么是时候fetchmail作为守护进程启动并让它下载整个邮箱了。首先,配置fetchmail适当的轮询间隔和批量大小设置1。

  • 确认~/.fetchmailrc在线路中配置了轮询间隔daemon 600(即 10 分钟轮询间隔)。
  • 确认轮询选项fetchlimit 400在设置~/.fetchmailrc下的options一节中poll pop.gmail.com节。这是每次轮询要获取的最大消息数。
  • 使用与上述相同的命令启动 fetchmail,但省略-d0switch。

Fetchmail 应该作为一个真正的守护进程启动,并继续定期下载批量邮件,直到下载整个邮箱。如果您不希望它在下次重新启动之前继续同步,则需要记住终止守护进程。




使用 Google 外卖

您可以使用Google Takeout轻松完成此操作。登录,单击列表顶部的“取消选择”选项,然后向下滚动Mail并选中该选项。您可以选择在一个.zip或.tgz文件中获取数据。当存档可供下载时,他们会向您发送电子邮件。它被包装在一个mbox文件中,但转换为其他格式非常简单。

这可能是完成一次性导出的最简单方法,我认为他们也可以选择设置重复导出。与直接使用开发人员 API 相比,它可能没有提供那么多的控制,但它的麻烦要少得多。




1:我相信谷歌有一些速率限制,所以我添加了一些步骤来适应这些限制。这些是保守值,因为我不确切知道限制是什么(甚至不确定它们是否存在)。如果您了解更多信息,或想对其进行研究,请将这些值调整为您认为最好的值。