Dovecot 迁移和旧邮件

lov*_*omb 6 postfix migration imap dovecot

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

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

小智 7

我尝试了接受的答案,但失败了 - 正在播放的 dovecot 版本可能相距太远,我们还切换了基础 MTA。所以这里有一个更强大的解决方案:doveadm import

假设你的托管电子邮件域hosted.tld和存在的登录账号local.account@hosted.tld(或者干脆露丝),并从以前的服务器备份是MailDir的格式和文件夹结构类似的内部可用/tmp/TRANSFER/ domain / account /Maildir然后您可以将它们导入到您的新 dovecot 主机中

$ doveadm import -u local.account@hosted.tld maildir:/tmp/TRANSFER/hosted.tld/local.account/Maildir "" all
Run Code Online (Sandbox Code Playgroud)

更一般地说:

$ doveadm import -u LOCAL_USER FORMAT:PATH "" all
Run Code Online (Sandbox Code Playgroud)

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

您甚至可能比我们更幸运而无需事先传输文件 - 如果新旧服务器同时运行并且您的帐户使用doveadm sync 进行了适当设置。


use*_*686 5

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

1328040798.M558634P29803.equal,S=17876,W=18294:2,FS
Run Code Online (Sandbox Code Playgroud)

FS逗号后面的字母表示FlaggedSeen。要将消息标记为“未见过”,请移除S标志...

for msg in maildir/cur/*; do
    msgbase=${msg%,*}
    flags=${msg##*,}
    flags=${flags//S/}
    mv -v "$msg" "$msgbase,$flags"
done
Run Code Online (Sandbox Code Playgroud)

...或者简单地将消息放入new文件夹:

mv maildir/cur/* maildir/new/
Run Code Online (Sandbox Code Playgroud)


Gar*_*ett 1

Maildir 实际上使用了一种独特的格式,这使得这变得非常容易。new/如果您希望邮件显示为新邮件,只需将邮件放在邮件用户 mailroot 内的目录中即可。否则它会进入cur/目录。