![整合多个邮箱(dovecot、Exim、maildir)](https://linux22.com/image/539406/%E6%95%B4%E5%90%88%E5%A4%9A%E4%B8%AA%E9%82%AE%E7%AE%B1%EF%BC%88dovecot%E3%80%81Exim%E3%80%81maildir%EF%BC%89.png)
停电后,我最终在不同的机器上为每个用户设置了 2 个邮箱。我现在已经关闭了临时机器,并将邮箱放在了 的真实服务器上/srv/scratch/$username/Maildir/...
,并且需要将来自这些邮箱的消息(最好保留已读/已查看状态)集成到用户的规范邮箱中。/srv/mail/$username/Maildir/...
我并不偏爱将其作为子文件夹还是放在他们的主收件箱中,但是我相信所有临时邮箱本身都不包含子文件夹。(如果包含,则更愚弄用户,他们被明确告知不要在临时帐户上这样做!)
有没有一种好的方法可以最大限度地降低邮件丢失的风险,并且意味着他们的客户端在重新连接时会自动获取新的文件夹/邮件(无论需要哪个)?或者,在将新邮件转储到 Maildirs 后,我需要做什么才能告诉 Dovecot 有关新邮件的信息?
两个服务器均使用 Exim4 进行传输并使用 Dovecot 进行 IMAP 构建。
答案1
我会使用几乎符合 Maildir 传递规范的脚本将文件移动到位,这涉及使用 tmp/ 目录,然后重命名为 new/ 目录,但为此您需要重命名为 cur/ 或 new/ 目录,具体取决于原始文件的位置。
假设文件名嵌入了时间戳,则应该很少(零)发生冲突,但谨慎一点是好的。将文件写入 tmp/;如果这是一个 cur/ 文件,则保存文件名之外的状态后缀;无论是移动到 new/ 还是 cur/,都检查 new/ 中是否存在相同的名称或 cur/ 中是否存在相同的前缀;然后根据需要重命名。
注意不要因内存崩溃而丢失 cur/-in-tmp/ 上的后缀;如果出现问题,记录所有操作的日志文件将帮助您重建。