![两个用户之间 rsync IMAP SENT 文件夹](https://linux22.com/image/639087/%E4%B8%A4%E4%B8%AA%E7%94%A8%E6%88%B7%E4%B9%8B%E9%97%B4%20rsync%20IMAP%20SENT%20%E6%96%87%E4%BB%B6%E5%A4%B9.png)
我该如何处理这个问题:
我们有一个基于 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