我有很多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
到目前为止,如果有其他事情出现,我会更新。