此类型迁移的要求如下所示:
stored 应同时在源(旧)邮件服务器和目标(新)邮件服务器上运行。
如果源系统和目标系统并存运行,则这两种系统必须能够互相发送邮件。这一点很有必要,举例来说,如果能够互相发送邮件,即可在目标系统上生成传送状态通知邮件,然后将其传送到源系统。
某些步骤只有在将邮件服务器从较低版本升级到较高版本时才适用。如果只是将邮箱从一个邮件存储迁移到另一个邮件存储,这些步骤可能不适用。适用于迁移整个系统的步骤将会特别指出。
在源系统中,使用 backup-groups.conf 文件将要移动的用户条目分为均等的备份组。
此步骤是邮箱迁移(将在此过程后面执行的步骤 8)的准备过程。有关详细说明,请参见创建备份组。
也可以将用户名放入文件中,然后在 imsbackup 命令中使用 -u 选项。
通知要移动的用户:在移动过程完成之前,他们将无法访问自己的邮箱。
确保要移动的用户在数据移动之前已从邮件系统注销。(请参见监视用户访问。)
在后端邮件存储和 MMP 系统上将验证缓存超时设置为 0,并在 MTA 上将 ALIAS_ENTRY_CACHE_TIMEOUT 选项设置为 0。
在包含要移动邮箱的后端邮件存储上,将验证缓存超时设置为 0。
configutil -o service.authcachettl -v 0 |
此步骤和步骤 7(将 mailUserStatus 更改为 hold)将立即阻止用户在迁移期间访问其邮箱。
在所有 MMP 上,将验证缓存超时设置为 0。
在 ImpProxyAService.cfg 和 PopProxyAService.cfg 中,将 LdapCacheTTL 设置为 0。
在运行 MTA(可将邮件插入到要迁移的邮箱中)的任意 Messaging Server 上,将 ALIAS_ENTRY_CACHE_TIMEOUT 选项设置为 0。
运行 MTA (可将邮件插入到要迁移的邮箱中)的 Messaging Server 通常是后端邮件存储。但是,如果系统使用的是 LMTP,则此系统将是入站 MTA。检查配置以确保正确无误。
重置 /msg_svr_base/config/option.dat 中的 ALIAS_ENTRY_CACHE_TIMEOUT 可以强制 MTA 绕过缓存而直接查看 LDAP 条目,从而使中间通道队列(例如 conversion 或 reprocess 通道)可以查看所移动用户的新 mailUserStatus (hold),而不是过期的缓存信息。ALIAS_ENTRY_CACHE_TIMEOUT 位于 option.dat 中。
重新启动重置了缓存的系统。
要使上述更改生效,必须重新启动系统。有关说明,请参见启动和停止服务。
确保源 Messaging Server 和目标 Messaging Server 已启动并且正在运行。
源 Messaging Server 必须能够将外来邮件发送到新的目标服务器。
将要移动邮箱的所有用户条目的 LDAP 属性 mailUserStatus 由 active 更改为 hold。
更改此属性可以使外来邮件保留在 hold 队列中,并可防止通过 IMAP、POP 和 HTTP 访问邮箱。通常以用户组的形式移动用户。如果移动单个域的所有邮箱,则可以使用 mailDomainStatus 属性。
有关 mailUserStatus 的更多信息,请参见 《Sun Java System Communications Services 6 2005Q4 Schema Reference》中的“mailUserStatus”。
确保发送到迁移邮箱的邮件未卡在 ims-ms 或 tcp_lmtp* 通道队列中(如果已部署 LMTP)。
使用以下命令查看发送到迁移用户的邮件是否存在于通道队列目录树中,并且处于 held 状态(查看 .HELD 文件)。
imsimta qm directory -to=<user_address_to_be_migrated> -directory_tree imsimta qm directory -to=<user_address_to_be_migrated> -held -directory_tree |
如果此队列中有邮件,请在稍后运行相同命令来查看 MTA 是否已将这些邮件移出队列。 如果有未移出队列的邮件,则必须在迁移之前解决此问题。这种问题很少发生,但可能的原因有以下几点:收件人邮箱超过配额、邮箱被锁定(可能由于用户已登录并且正在移动邮件)、LMTP 后端服务器未响应、网络或名称服务器问题等等。
更改要移动的用户条目以及任意邮件组条目*中的 LDAP 属性 mailHost。
使用 ldapmodify 命令将条目更改为新的邮件服务器。使用 Messaging Server 或 Directory Server 附带的 ldapmodify。不要使用 Solaris 操作系统的 ldapmodify 命令。
* 如果关闭了旧邮件主机,则只需更改邮件组条目中的 mailHost 属性。可以将此属性更改为新的邮件主机名,也可以完全删除此属性。对于邮件组而言,mailHost 不是必需的。具有 mailHost 意味着只有该主机可以进行组扩展;而忽略 mailHost(此种情况较为常见)则意味着所有 MTA 都可以进行组扩展。请注意,邮件组条目不包含要迁移的邮箱,通常甚至没有 mailhost 属性。
有关 mailhost 的更多信息,请参见 《Sun Java System Communications Services 6 2005Q4 Schema Reference》中的“mailHost”。
将邮箱数据从源 Messaging Server 邮件存储移动到目标 Messaging Server 邮件存储,并记录开始时间。
使用 imsbackup 实用程序备份邮箱,并使用 imsrestore 实用程序将其恢复到新的 Messaging Server。例如,要将邮箱从名为 oldmail.siroe.com 的 Messaging Server 5.2 系统迁移到 newmail.siroe.com,在 oldmail.siroe.com 上运行以下命令:
/server-root/bin/msg/store/bin/imsbackup -f- /instance/group \ | rsh newmail.siroe.com /opt/SUNWmsgsr/lib/msg/imsrestore.sh \ -f- -cy -v1 |
您可以运行多个并发的备份和恢复会话(每组一个),以使传送到新邮件存储的速率达到最大化。有关 imsbackup 实用程序、imsrestore 实用程序以及备份并恢复邮件存储的更多信息,请参见 《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“Command Descriptions”。
记录 imsbackup 开始运行的时间戳,用于以后的发送验证。
(系统升级的条件式步骤)如果邮箱迁移是升级(将早期版本的 Messaging Server 升级到当前版本)过程的一部分,则可以将当前版本的 Messaging Server 设置为新的系统默认 Messaging Server。
将 oldmail.siroe.com 的 DNS A 记录更改为指向 newmail.siroe.com(此服务器负责先前位于 oldmail.siroe.com 上的域)。
启用用户对新邮件存储的访问。
如果适用,将 LDAP 属性 mailUserStatus 或 mailDomainStatus 设置为将其更改为 hold 之前的任意值(如 active)。
释放所有源 Messaging Server 上处于 held 状态的邮件。
任何可能保留外来邮件的系统都需要运行以下命令,以释放所有用户邮件:
imsimta qm release -channel=hold -scope |
其中 scope 可以是 all(释放所有邮件)、user(用户 ID)或 domain(用户所在的域)。
将验证缓存超时和 ALIAS_ENTRY_CACHE_TIMEOUT 选项重置为默认值或所需值,然后重新启动系统。
此时,您已经迁移了需要迁移的所有用户邮箱。在继续操作之前,请确保 LDAP 中没有使用旧系统作为 mailhost 创建的新条目,如果有,请迁移这些条目。此外,还要通过修改置备系统来确保无法创建此类条目。
还要将 preferredmailhost 属性更改为新邮件主机的名称。
对于后端邮件存储,请将验证缓存超时设置为以下值:
configutil -o service.authcachettl -v 900 |
对于 MMP,请在 ImpProxyAService.cfg 和 PopProxyAService.cfg 中将 LdapCacheTTL 选项设置为 0。
对于 MTA,请将 ALIAS_ENTRY_CACHE_TIMEOUT 选项设置为 600。ALIAS_ENTRY_CACHE_TIMEOUT 位于 option.dat 中。
必须重新启动系统以使上述更改生效。有关说明,请参见启动和停止服务。
确保用户客户端将指向新的邮件服务器。
升级完成后,通过用户的邮件客户端程序使用户指向新服务器(在此示例中,用户将从 oldmail.siroe.com 指向 newmail.siroe.com)。
也可以使用邮件多路复用器 (MMP),这样用户可以不必将其客户端直接指向新的邮件服务器。MMP 将从 mailHost 属性(存储于 LDAP 用户条目中)获取该信息,并自动将客户端重定向到新服务器。
一切正常运行之后,请验证在迁移后没有向旧邮件存储中传送任何邮件。
转到旧邮件存储并运行 mboxutil -l 以列出邮箱。检查最后的邮件传送时间戳。如果在迁移时间戳(运行 imsbackup 命令时的日期戳)之后传送了邮件,请使用备份和恢复命令迁移这些邮件。由于提供了准备步骤,因此在迁移后极少会出现传送邮件的情况。
在理论上,邮件可能会在队列中停留一段时间,由 notices 通道关键字指定天数和小时数。(请参见设置通知邮件传送间隔)。
删除新邮件存储上的重复邮件,然后运行 relinker 命令。
此命令可以释放新邮件存储上的磁盘空间。请参见由于重复存储相同的邮件而减少邮件存储大小。
从迁移的源存储中删除旧邮件,然后从旧存储上的数据库中删除用户。
运行 mboxutil -d 命令。(请参见 mboxutil 实用程序)。