因此,在我的服务器中,我通常会遇到一个问题,不同的电子邮件客户端会将一些特殊文件夹称为 ,Sent
并Trash
命名为 ,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"
任何文件夹以建立符号链接时要非常小心!
我猜插件本身只是做了一个符号链接,所以你只是做了类似的东西。使用这种技术,你可以合并你想要的所有文件夹,并保持你的客户工作不变。:-)