使用dovecot从文件夹结构中发送电子邮件

我有很多eml文件,从一个帐户存档,并存储在一堆文件夹,每月一个。 这不是一个标准的maildir结构,文件没有特殊的名称,就像:

2015-01/ foo.eml bar.eml ... 2015-02/ baz.eml qux.eml ... etc 

我想通过IMAP使它们可访问,只读,最好使用dovecot,如果可能的话,不改变结构/命名。 如果所有的电子邮件都可以一起出现在收件箱中,但按月分开的文件夹(因为它们在磁盘上结构化)也是可以的。

为了使这个工作,你至less必须将这些邮件移动到一个类似于MailDir的结构。 我的鸽子maildir看起来像这样的帐户[email protected]

 ./iswhale.com/ahoy/.Drafts/tmp ./iswhale.com/ahoy/.Drafts/new ./iswhale.com/ahoy/.Drafts/cur ./iswhale.com/ahoy/cur ./iswhale.com/ahoy/new ./iswhale.com/ahoy/tmp 

如果你创build一个新的子文件夹,说'存档'它看起来像这样:

 ./ahoy/.Archive/tmp ./ahoy/.Archive/new ./ahoy/.Archive/cur 

tmp,new和cur是Dovecot在客户端创build这个新文件夹时创build的目录(例如:Roundcube)。 当创build一个新的存档子文件夹时,目录结构变成:

 ./ahoy/.Archive.Sub-Folder/tmp ./ahoy/.Archive.Sub-Folder/new ./ahoy/.Archive.Sub-Folder/cur 

所以,你需要调整你的目录path,使'2015-01'变成这样:

 ./user/.Archive.2015-01/tmp ./user/.Archive.2015-01/new ./user/.Archive.2015-01/cur 

然后,一旦这些目录被创build,你将复制“.eml”文件(我希望它只是Dovecot所期望types的纯文本电子邮件)到目标“新”目录中。 连接您的首选IMAP客户端,一切都很好。

我想我find了一种方法来设置一个maildir结构,而不用改变我的文件夹和文件。 我在另一个地方创build了一个单独的maildir文件夹,并使用符号链接指向我的包含邮件的文件夹,如下所示:

 maildir ├─ .2015-01 │ └─ cur -> path/to/2015-01 └─ .2015-02 └─ cur -> path/to/2015-02 

我给dovecot写入权限给maildir及其subdirs,以便它可以写入其索引文件,新的和tmp文件夹等等,但是它没有写入实际的邮件归档文件夹的权限。

对于dovecotconfiguration(我只在这个服务器上提供这些文件,没有别的)我设置mail_location = maildir:/path/to/my/maildir并使用静态passdb和userdb。

这个设置工作,但我也遇到了一些问题:

  • 所有电子邮件显示为未读

解决方法:运行doveadm flags add '\Seen' mailbox 201x-xx

  • 邮件客户端可以更改标记,如查看和删除

解决scheme:添加一个全局ACL文件,其中包含: * owner lr

到目前为止,如果有其他事情出现,我会更新。