在使用系统帐户的两个服务器之间合并 ~/Maildir

在使用系统帐户的两个服务器之间合并 ~/Maildir

我查看了以下内容,但没有找到解决我的问题的方法:

从任何 IMAP/POP3 服务器迁移到 Dovecot

创建 Dovecot Master 用户/密码无效

在正在运行的服务器上安全移动 Maildir

两个邮件服务器之间的同步

我有一台服务器 A,它使用 Postfix/Dovecot 设置,并在系统用户帐户(即非虚拟用户)中使用 ~/Maildir 格式。我还有一台服务器 B,它以相同的方式配置,并且 ~/Maildir 中可能存在或不存在邮件。

如果服务器 B 上用户的 ~/Maildir 不存在,那么可以安全地假设我可以将服务器 A ~/Maildir rsync 到服务器 B ~/Maildir,它将保留文件夹、已读邮件、其他元数据等。

如果两台服务器上都有 ~/Maildir,并且每台服务器上都有现有邮件,我如何才能安全地将服务器 A 的数据合并到服务器 B 上的 ~/Maildir 中?原则上,数据文件本身应该是唯一的,并且它应该归结为两台服务器上都存在的 Dovecot 元数据文件。

我正在这里寻找,但这是一个通用的举动,我认为由于服务器配置相似(如果不相同),那么我的情况应该容易得多:

https://wiki2.dovecot.org/Migration/Dsync

考虑到其他问题的内容,最后一个问题显得微不足道且过于简单。我不清楚这是针对虚拟用户还是系统用户的。

https://serverfault.com/a/866298/386414


我认为我没有什么可失去的,并且发现对于单个用户,我只需运行:

doveadm import maildir:~/old_mail/Maildir "" all

但这样会将邮件导入为“未读”,而不是旧 Maildir 的状态。我该如何修复这个问题?

我认为这更符合我的要求,因为import你只能运行一次,因为它会不加区别地多次带来电子邮件:

doveadm sync maildir:~/old_mail/Maildir

但仍然存在所有邮件都未读的问题。

答案1

这个答案来得晚了,但我确实通过以下方式合并了四个电子邮件帐户

sudo cp -a previous/Maildir/* next/Maildir

之前标记为新消息的消息在合并后仍被标记为新消息。如果想要更安全,您可以只移动curnew目录的内容。这些目录中的文件具有唯一的名称,不会发生冲突。

答案2

这:

Dovecot 迁移和旧邮件

说道:

Maildir 实际上使用了一种独特的格式,这使得这变得非常容易。如果您希望邮件显示为新邮件,只需将其放在邮件用户邮件根目录内的 new/ 目录中。否则,它将进入 cur/ 目录。

我不确定这在您的场景中如何应用(或者是否适用)但可能值得检查。

相关内容