我正在将我的邮件从旧服务器迁移到新服务器,配置很好(mysql虚拟帐户和仅限 imap),使用 dovecot 和 postfix。它已经在为其他用户运行,我只想将旧服务器中的旧帐户合并到新服务器。
迁移过程很顺利,我只是想知道如何才能“展示“UA 客户端中的所有旧邮件。我的意思是,有没有鸽科指数文件或类似的东西可以被重新创建、销毁,这样所有的旧邮件就会被“标记”为新的?
答案1
new/
Maildir 实际上使用了一种独特的格式,这使得这变得非常容易。如果您希望邮件显示为新邮件,只需将其放在邮件用户邮件根目录中即可。否则它将进入cur/
目录。
答案2
我尝试了可接受的答案,但失败了 - 正在使用的 dovecot 版本可能相差太大,我们还切换了底层 MTA。因此,这里有一个更强大的解决方案:doveadm 导入
假设你正在为该域名托管电子邮件托管.tld并且存在一个用于登录的帐户[电子邮件保护](或者可能只是露丝)并且来自前一个服务器的备份采用 MailDir 格式,并可在类似以下的文件夹结构中使用:/tmp/传输/领域/帐户/邮件目录然后你可以将它们导入到你的新 dovecot 托管中
$ doveadm import -u [email protected] maildir:/tmp/TRANSFER/hosted.tld/local.account/Maildir "" all
更一般地来说:
$ doveadm import -u LOCAL_USER FORMAT:PATH "" all
所有这些都可以从精美手册。尝试了两次才发现,只需使用“”(空目标邮箱)就可以了真的想要 ;-)
你甚至可能比我们更幸运,不需要事先传输文件 - 如果新旧服务器同时运行,并且你的帐户使用正确设置doveadm 同步。
答案3
对于 Maildir 消息,这些标志存储在文件名。 例如:
1328040798.M558634P29803.equal,S=17876,W=18294:2,FS
FS
逗号后面的字母表示Flagged
和Seen
。要将消息标记为“未见”,请删除标记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/
答案4
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
如果邮件服务器未运行,则该文件夹应为空。