我正在将一家拥有约 30 个 IMAP 帐户、加载了数据(总计约 77GB)的公司迁移到新的电子邮件主机。大部分数据将转换为本地存档,并作为静态参考数据集分发到公司计算机。
用户绝对不能没有的服务器端文件夹将被上传回新服务器。
我使用 Mac OS X Mail(Snow Leopard 10.6.6)下载内容。我注意到一些邮件的名称为 [xxx].partial.emlx,这让我相信它们没有完全下载。
我拥有邮件服务器数据的 root 访问权限,并且可以通过 FTP 下载 IMAP 服务器数据。我不确定使用什么实用程序将这些数据转换为本地 Mail.app 邮箱。
此外,如果您能提供关于如何将部分数据上传到新服务器(GoDaddy)并保留消息原始日期的最佳意见,我将不胜感激。
编辑
好的 - 忘记原始服务器数据。我发现一个脚本,它似乎可以很好地将 IMAP 文件夹存档到本地 mbx 文件。我现在的主要任务是将邮箱层次结构批量上传到新的 IMAP 服务器,而无需启动-停止并处理类似的问题。有人知道一个实用程序(希望是适用于 OS X,但如果没有,我会启动我的 XP 虚拟系统......)可以做到这一点吗?
谢谢,
米
答案1
我假设 IMAP 服务器使用 Maildir 格式来存储其数据 (/path/to/mail/user/Maildir/cur/)
您可以使用 rsync 命令行工具在两台 Unix(或 OS/X)机器之间同步目录结构。
假设您的邮件服务器位于 mta01(旧)和 mta02(新),并且邮件存储在 /var/mail 中...
将邮件从服务器复制到本地计算机的步骤如下:
$ rsync -avP root@mta01:/var/mail mailBackup
修剪 mailBackup 的内容以满足您的需要,然后可以使用以下命令将其复制回来:
$ rsync -avP mailBackup/* root@mta02:/var/mail/
显然,您需要启用 root ssh 登录到服务器才能使其正常工作,或者使用其他有权访问完整电子邮件结构的用户。
然后,您可能还需要更改电子邮件上的文件权限(取决于您的电子邮件设置方式),并且可能工作(或类似工作):
(on the server as root)
# cd /var/mail
# for USER in `ls`
> {
> chown -R $USER $USER
> }
显然,这完全取决于您正在运行什么电子邮件服务器软件,但大多数都使用 Maildir 格式。
Maildir 格式将每封电子邮件存储为单独的纯文本文件。典型的文件结构是:
/var/mail/matt/Maildir/ <- root Maildir folder
/var/mail/matt/Maildir/new/ <- New messages in INBOX
/var/mail/matt/Maildir/cur/ <- Existing (read) messages in INBOX
/var/mail/matt/Maildir/tmp/ <- Temporary work area
/var/mail/matt/Maildir/.Friends/ <- Root of the 'Friends' folder
/var/mail/matt/Maildir/.Friends/new/ <- New messages in the 'Friends' folder
/var/mail/matt/Maildir/.Friends/cur/ <- Existing (read) messages in the 'Friends' folder
/var/mail/matt/Maildir/.Friends/tmp/ <- Temporary work area
... 等等。
答案2
你可能会发现离线地图可用于将一些邮件从一个邮件服务器同步到另一个邮件服务器。要将 imapserver1 同步到 imapserver2,请设置一个配置,用于将 server1 与本地 maildir 文件夹同步,并将此配置设置为排除您不需要的任何文件夹。然后,设置另一个配置,将本地 maildir 文件夹完整同步到 imapserver2。
或者,您可以使用 Mozilla Thunderbird(或者 Apple Mail 也可以。我还没用过)以图形方式执行相同的操作。只需在 Thunderbird 中设置源和目标 IMAP 帐户,然后拖放(并等待)。
当然,所有这些都假设您同时运行着新旧 IMAP 服务器。