Dovecot迁移和旧邮件

我正在将我的邮件从旧服务器迁移到新服务器,configuration是好的( 仅限于 mysql虚拟帐户和imap ),使用dovecot和postfix。 它已经在为其他用户运行,我只想从旧服务器合并旧帐户到新服务器。

迁移进行得很顺利,我只想知道如何在UA客户中“ 展示 ”所有旧邮件。 我的意思是,是否有任何鸽舍索引文件或可以重新创build,销毁,以便所有的旧邮件被标记为新的

Maildir实际上使用了一个独特的格式,这使得这很容易。 只要将邮件放在邮件用户邮件根目录中的new/邮件目录中,如果你希望它显示为新邮件。 否则它会进入cur/目录。

对于Maildir消息,这些标志存储在文件名中 。 例如:

 1328040798.M558634P29803.equal,S=17876,W=18294:2,FS 

在逗号之后的字母FS表示FlaggedSeen 。 要将消息标记为“不可见”,请删除S标志…

 for msg in maildir/cur/*; do msgbase=${msg%,*} flags=${msg##*,} flags=${flags//S/} mv -v "$msg" "$msgbase,$flags" done 

…或者直接将消息放入new文件夹中:

 mv maildir/cur/* maildir/new/ 

Maildir格式由一系列目录组成 – 匹配IMAP文件夹结构,其中是电子邮件,每个电子邮件一个文件。

为了将电子邮件从一个电子邮件系统复制到另一个电子邮件系统,您可以简单地复制目录和文件,并确保这些目录和文件的权限在目的地是正确的。

Maildir结构如下所示:

 mail/cur/ mail/new/ mail/tmp/ mail/.personal/cur/ mail/.personal/new/ mail/.personal/tmp/ 

这将显示INBOX文件夹(cur,new,tmp)和另一个名为“personal”的文件夹。 请注意点前缀显示该文件夹是隐藏的,所以这应该在您的传输。

new文件夹包含客户端没有看到的任何电子邮件, cur文件夹包含当前电子邮件。 如果邮件服务器没有运行, tmp文件夹应该是空的。

我尝试了被接受的答案,但是失败了 – 在比赛中鸽舍的版本可能相差太远了,我们也改变了底层的MTA。 所以这里是一个更强大的解决scheme: doveadm导入

假设您托pipe域名hosted.tld的电子邮件,并且存在login[email protected] (或者简单地说, ruth )的帐户,并且来自先前服务器的备份是MailDir格式,并且可用于像文件夹结构/ tmp / TRANSFER / domain / account / Maildir然后你可以将它们导入到你的新的dovecot托pipe

 $ doveadm import -u [email protected] maildir:/tmp/TRANSFER/hosted.tld/local.account/Maildir "" all 

更一般地说:

 $ doveadm import -u LOCAL_USER FORMAT:PATH "" all 

所有这些都可以从精美的手册中挑选出来。 花了两次尝试才发现简单地使用“”(空目标邮箱)是我们真正想要的;-)

您甚至可能比我们有更多的运气,而无需预先传输文件 – 如果新老服务器同时运行,并且使用doveadm同步适当地设置您的帐户。