Dovecot:电子邮件客户端和重复文件夹

Dovecot:电子邮件客户端和重复文件夹

因此,在我的服务器中,我通常会遇到一个问题,不同的电子邮件客户端会将一些特殊文件夹称为 ,SentTrash命名为 ,Sent Items例如Deleted Items

我的问题是,我是否可以以某种方式“别名”所有这些名称并在内部将它们映射到Sent服务器上的同一个文件夹?

我设法改变了我的dovecot.conf包含部分如下:

mailbox Sent {
    special_use = \Sent
    auto=subscribe
}

mailbox "Sent Messages" {
    special_use = \Sent
}

mailbox "Sent Items" {
    special_use = \Sent
}

这是“解决”这个烦人问题的正确方法吗?它似乎有效,至少服务器上没有实际的重复,但一些电子邮件客户端可能会选择所有重复的文件夹。

谢谢。

答案1

您可以使用邮箱别名插件需要 Dovecot 2.1.10+,它在文件系统级别创建符号链接,以提供具有多个名称的一个目录。两个目录具有相同的内容。

示例配置发送垃圾别名“已发送邮件”和“已删除邮件”的真实邮箱是:

mail_plugins = $mail_plugins mailbox_alias
plugin {
  mailbox_alias_old = Trash
  mailbox_alias_new = Deleted Items
  mailbox_alias_old2 = Sent
  mailbox_alias_new2 = Sent Items
}

不要忘记创建邮箱:

namespace inbox {
  mailbox Sent {
    auto = create # or subscribe
    special_use = \Sent
  }
  mailbox Trash {
    auto = create
    special_use = \Trash
  }
}

另一种可能性是创建两个不同的邮箱,正如你提到的,我复制了一部分conf.d/15-mailboxes.conf

namespace inbox {
  # For \Sent mailboxes there are two widely used names. We'll mark both of
  # them as \Sent. User typically deletes one of them if duplicates are created.
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
}

使用这种方法,您将拥有两个不同的发件箱。当用户删除其中一个时,另一个仍保持不变。

答案2

无需使用插件。转到您的 vmail 目录,例如:

cd /var/vmail/example.com/exampleUser/ 

然后,如果您希望将所有消息都存储在"Sent Messages"文件夹中,那么第一步"Sent"只需通过客户端将文件移动"Sent Messages"到其中即可。"Sent"

然后,在/var/vmail/example.com/exampleUser/mail文件夹中,删除"Sent Messages"隐藏文件夹:

rm -r /var/vmail/example.com/exampleUser/mail/.Sent\ Messages

"Sent"在发送任何其他电子邮件之前,请先从此处添加指向隐藏文件夹的符号链接"Sent Messages"(这里有很长的一行,如果复制和粘贴,请小心操作):

ln -s /var/vmail/example.com/exampleUser/mail/.Sent /var/vmail/example.com/exampleUser/mail/.Sent\ Messages

这应该没问题。如果您想要将"Sent Items""Mail Sent"任何其他文件夹符号链接到其中"Sent"一个文件夹,或者想要任何其他解决方案,让其他文件夹指向其他文件夹并将邮件保留在其中一个文件夹中,只需重复相同的步骤即可。

如果您需要制作 dovecot 和客户端"INBOX"作为"Sent"文件夹使用,您应该使用用户名从邮件文件夹创建符号链接(再次长行):

ln -s /var/vmail/example.com/exampleUser/mail/ /var/vmail/example.com/exampleUser/mail/.Sent\ Messages

除非你没有改变它。然后编辑以下/etc/dovecot/conf.d/15-mailboxes.conf行:

namespace inbox {
  # For \Sent mailboxes there are two widely used names. We'll mark both of
  # them as \Sent. User typically deletes one of them if duplicates are created.
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
}

或其他等效方法使它们变成:

namespace inbox {
  # For \Sent mailboxes there are two widely used names. We'll mark both of
  # them as \Sent. User typically deletes one of them if duplicates are created.
  mailbox INBOX {
    special_use = \Sent
  }
  mailbox INBOX {
    special_use = \Sent
  }
}

您可以注意到,现在两个是相同的,因此您只需删除一个即可:

namespace inbox {
  # For \Sent mailboxes there are two widely used names. We'll mark both of
  # them as \Sent. User typically deletes one of them if duplicates are created.

  mailbox INBOX {
    special_use = \Sent
  }
}

然后它应该可以正常工作。我经历了这个过程,因为我希望我发送的电子邮件既在笔记本电脑中,也在手机中。dovecot hack 对笔记本电脑来说已经足够了,但手机一直在使用该"Sent Messages"文件夹,所以我不得不使用符号链接技巧。在选择正确的文件夹"Sent""Sent Messages"任何文件夹以建立符号链接时要非常小心!

我猜插件本身只是做了一个符号链接,所以你只是做了类似的东西。使用这种技术,你可以合并你想要的所有文件夹,并保持你的客户工作不变。:-)

相关内容