小智 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 进行了适当设置。
对于 Maildir 消息,此类标志存储在文件名中。例如:
1328040798.M558634P29803.equal,S=17876,W=18294:2,FS
Run Code Online (Sandbox Code Playgroud)
FS逗号后面的字母表示Flagged和Seen。要将消息标记为“未见过”,请移除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)
Maildir 实际上使用了一种独特的格式,这使得这变得非常容易。new/如果您希望邮件显示为新邮件,只需将邮件放在邮件用户 mailroot 内的目录中即可。否则它会进入cur/目录。
| 归档时间: |
|
| 查看次数: |
14660 次 |
| 最近记录: |