任何基于文件的电子邮件客户端应用程序?(目的是将邮箱置于 VCS 之下。)

Xiè*_*léi 4 sync software-rec version-control mailbox email-client

像 Subversion 一样,它有两种后端类型:基于 BDB 和基于文件。我看到的大多数电子邮件应用程序都使用数据库后端,但最终用户操作数据库并不方便。

目前我正在使用 Thunderbird,它也使用数据库作为后端。我在四台机器上运行 Thunderbird,所以有 4 个独立的数据库。而且我有很多邮件帐户,可能有 20 个甚至更多。(不,请不要告诉我邮件转发。)所以,如果后端是基于文件的,我可以只设置一个 Git 存储库并将它们全部同步。但是Thunderbird 有其内部的数据库格式,因此管理这些单独的数据库非常不方便。

imz*_*hev 5

已经引入了用于存储邮件的Maildir格式,它完全符合您的描述:一条消息存储在一个单独的文件中。

还有一些邮件客户端的 Maildir 驱动程序(后端)、一些邮件传递代理和一些邮件访问服务器(IMAP 或 POP 或 Web 界面)。

当然,如果您的邮件存储在 Maildirs 中,则最容易将其置于通常的版本控制之下。

因此,您可以查找邮件客户端的 Maildir 后端。

但是,实际上,同步您的邮件存储可能比同步文件目录要棘手得多——因为文件夹之间的各种标志(新的、已读的)、标签、移动或邮件副本,以及——最棘手的部分—— - 邮件访问服务器 (IMAP) 或邮件客户端使用的服务器内部消息 ID。这些 ID 是关于什么的?嗯,在邮件存储的多个副本之间保留 ID 很重要,例如,为了让邮件客户端的缓存过程正确运行。

我已经探讨了这个问题并在这里写下了一些笔记:研究如何备份 IMAP 帐户。(但后来我没有完成那个任务,所以笔记和我的实际解决方案没有完成。)

我得出的一般想法是,使用邮件客户端并简单地将 Maildirs 置于版本控制之下并不能为您提供管理邮件存储修订版所需的一切。最好将它与真正的 IMAP 服务器(远程或本地)结合以统一访问邮件,并与运行在 IMAP 之上的特殊工具结合以同步邮件存储的不同副本/存储库/分支(特殊工具将正确处理标志、标签、ID)。通常的版本控制对于检查修订和恢复到过去的修订是可以的,但是对于合并分支(=同步),我会考虑一个更复杂的过程:

您想合并分支AB.

  • 因此,您可以C通过复制其中之一来准备保存合并状态的新状态(修订版),例如,复制A到新的C.
  • 然后你使用一个工具(比如“imapsync”;选择一个符合你需要的工具;我在我的笔记中列出了一些这样的工具)将新的变化从 B 带到 C:imapsyncBC.

(这可能假设您通过服务器通过 IMAP 访问邮件存储)

  • 现在提交C(作为合并AB;的结果,在此之前,您可以在 VCS 中使用适当的命令来写下合并B到的结果信息A,例如,类似 " git merge B -s ours --no-commit" in 的信息C)。

请自行探索细节,我只有大致的想法,我现在没有在实践中运行这样的程序。

我认为这是一项非常有趣的任务,通常由众所周知的实用程序来完成,我想听到更多关于其他人提出的成功设置的信息!


AFAIR 我选择offlineimap在 Git 中备份 IMAP 帐户的任务。顺便说一句,这是一个带有offlineimap.