【问题标题】:Using fetchmail for one time email extraction from gmail使用 fetchmail 从 gmail 中一次性提取电子邮件
【发布时间】:2026-02-06 04:35:01
【问题描述】:
  • 我正在尝试在终端中使用 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.

【问题讨论】:

  • 您对为此使用 fetchmail 的决心如何?如果您可以选择其他工具,使用不同的工具可能会更容易。
  • @Z4-tier 不是很确定 -- 请提出任何其他选项...

标签: fetchmail


【解决方案1】:

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

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

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




使用 Google 导出

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

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




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

【讨论】:

  • 不幸的是 fechmail 不起作用 :(( ...我需要来自终端的解决方案,它不一定是 fetchmail,但据我所知,Google Takeout 必须涉及人工按下某些 GUI 中的按钮对吗?还有其他选项吗?
  • 我的错误,-m 选项(所以所有/usr/sbin/sendmail -i -f %F -- %T)应该用双引号括起来。我更新了答案。这适用于我在 MacOS Mojave 上,但我希望它也适用于大多数健全的(即不是 alpine)Linux/BSD 变体。如果它仍然不起作用,您可以使用生成的错误输出更新问题吗?
  • 我更新了所有必要的细节以使fetchmail 工作。请注意对~/.fetchmailrc 文件和用于调用fetchmail 的命令的一些更改。
最近更新 更多