两个用户之间 rsync IMAP SENT 文件夹

两个用户之间 rsync IMAP SENT 文件夹

我该如何处理这个问题:

我们有一个基于 DOVECOT IMAP 的电子邮件系统,不同的用户,不同的登录。

我想以某种方式 rsync 某些用户的所有已发送文件夹,以便一个用户可以检查另一个用户写的内容(例如写给客户的内容)。已发送的电子邮件应复制到每个指定用户的已发送文件夹中。

基本思想是,每个用户都应该能够查看自己的已发送文件夹,查看自己或其他人写给客户的内容。客户写的内容和发送到收件箱的内容不应同步。因为客户可能会向每个用户发送不同的主题。

因此,如果客户向用户 1 发送了某封邮件,则用户 2 无需复制。但如果用户 1 向客户发送了某封邮件,则应将其同步到 27 个用户的发送文件夹中。

我知道这会占用很多磁盘空间。

我最终希望将用户 1、用户 2 ... 用户 n 的已发送邮件混合到这些用户的所有已发送文件夹中。我不想使用共享文件夹,因为这样很危险,一个用户可能会误删除原始邮件。

因此,我们需要双向 rsync /home/user1/mail/sent/cur 与 /home/user2/mail/sent/cur 以及 /home/user1/mail/sent/new 与 /home/user2/mail/sent/new,这意味着

rsync -rtu --delete /home/user1/mail/sent/cur /home/user2/mail/sent/cur
rsync -rtu --delete /home/user1/mail/sent/new /home/user2/mail/sent/new

第一个问题是当我有27个用户的时候怎么解决?

第二个问题是权限。我如何才能以某种方式 rsync,使 Imap 权限使得复制的电子邮件应属于它们同步到的邮箱的所有者?(Dovecot 不会更改权限)

第三个问题是标题应该保留。

更新 1 我不想创建具有 ACL 和读写权限的公共文件夹,并重新配置 MUA 以将它们用作已发送文件夹。这可能是更优雅和更复杂的解决方案,但我不想要它。

更新2 盲目 BCC 解决方案不是最优的,因为它将发送的电子邮件放入其他用户的收件箱中并更改标题。

答案1

来自 rsync 手册:


rsync -avz foo:src/bar /data/tmp

这将递归传输机器 foo 上目录 src/bar 中的所有文件到本地机器上的 /data/tmp/bar 目录中。文件传输方式如下:“存档”模式,确保符号链接、设备、属性、 权限、所有权等均被保留 在传输过程中。此外,还将使用压缩来减少传输数据部分的大小。


存档模式是 -a 开关。修改命令以:

rsync -artu --delete /home/user1/mail/sent/cur /home/user2/mail/sent/cur
rsync -artu --delete /home/user1/mail/sent/new /home/user2/mail/sent/new

应该解决权限问题。

答案2

这是一种糟糕的方法。IMAP 守护进程希望完全控制其文件系统结构,手动规避这一点永远不是一个好主意。

尝试使用 IMAP ACL,允许所有人读取/写入一个公共共享文件夹,并将其指定为您的 MUA 的已发送文件夹。为了清楚起见:这种方法与同步无关。有了共享文件夹和适当的权限,您允许用户 A 读取/写入用户 B 的文件夹。如果您将邮件客户端 (MUA) 配置为使用此共享文件夹作为已发送文件夹,那么每个人都会使用它,无需采取奇怪的解决方法。

另一种方法:为所有外发邮件创建一个密件抄送至共享帐户。这也可以在 MTA 级别处理。

答案3

尝试使用imapsync,只需选择已发送文件夹

imapsync ... --folder Sent

https://imapsync.lamiral.info/FAQ.d/FAQ.Folders_Selection.txt

相关内容