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

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

  • 然后我试图天真地提取电子邮件:$ 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.
4

1 回答 1

6

使用 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

在哪里:

  • 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

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

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

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




使用谷歌外卖

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

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




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

于 2020-02-13T12:21:49.863 回答