我用getmail
它来存档我的 Gmail 帐户的收件箱。但是,进程偶尔会挂起 —— 可能是由于与 Gmail 的 IMAP 服务器的连接不良。我发现重新启动进程的唯一方法是使用 CTRL+C 终止进程。有时,在终止并重新启动进程时,getmail
不会更新它oldmail
在重新启动时使用的文件,以确定先前下载了哪些电子邮件。这会使进程花费更多时间(并可能再次挂起),并使存储备份数据的文件膨胀mbox
。
仔细研究后发现,似乎getmail
只有在完成时才会更新oldmail
文件——因此,如果意外终止,已下载电子邮件的数据就会丢失。有没有办法强制实时getmail
更新数据库,而不是在进程结束时才更新?oldmail
答案1
关于 getmail
这getmail 常见问题解答读起来感觉这种行为“有点”为人所知:
使用 max_messages_per_session 选项来限制 getmail 在单个会话中处理的消息数量。一些使用不稳定服务器的用户使用此选项来减少在服务器在会话中途死机时看到多次消息的机会。
可能的解决方法
一种(GMail 特有的)可能的解决方法是引入一种“存档位”,从而完全摆脱对旧邮件文件的需要:
- 创建自定义标签,例如名为
archive
- 创建过滤器以将此标签应用于任何新邮件(接收或发送)
(from:([email protected]) OR to:([email protected]))
- 使用 IMAP 检索器,仅从此标签的文件夹中获取邮件(
mailboxes
选项) delete
在配置中设置选项(在 GMail 中,这只会删除标签)