Sun Java System Messaging Server 6.3 管理指南

Procedure在保持联机状态下将用户邮箱从一个 Messaging Server 迁移到另一个 Messaging Server 中

开始之前

此类型迁移的要求如下所示:


注 –

某些步骤只有在将邮件服务器从早期版本升级到较高版本时才适用。如果只是将邮箱从一个消息存储迁移到另一个消息存储,则这些步骤可能不适用。适用于迁移整个系统的步骤将会特别指出。


  1. 在源系统中,使用 backup-groups.conf 文件将要移动的用户条目分为均等的备份组。

    此步骤是邮箱迁移(将在此过程后面执行的步骤 8)的准备过程。有关详细说明,请参见20.12.2 创建备份组

    也可以将用户名置于文件中,然后在 imsbackup 命令中使用 -u 选项。

  2. 通知要移动的用户在移动完成之前无法访问他们的邮箱。

    确保要移动的用户在数据移动之前已从邮件系统注销。(请参见20.13 监视用户访问。)

  3. 在后端消息存储和 MMP 系统上将验证缓存超时设置为 0,并在 MTA 上将 ALIAS_ENTRY_CACHE_TIMEOUT 选项设置为 0。

    1. 在包含要移动的邮箱的后端消息存储上,将验证缓存超时设置为 0。


      configutil -o service.authcachettl -v 0
      

      此步骤和步骤 7(将 mailUserStatus 更改为 hold)将立即阻止用户在迁移期间访问其邮箱。

    2. 在所有 MMP 上,将 LDAP 和验证缓存超时设置为 0。

      ImapProxyAService.cfgPopProxyAService.cfg 中,将 LdapCacheTTLAuthCacheTTL 设置为 0。

    3. 在托管 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 条目,从而使中间通道队列(例如,conversionreprocess 通道)可以查看所移动用户的新 mailUserStatus (hold) ,而不是过期的缓存信息。ALIAS_ENTRY_CACHE_TIMEOUT 位于 option.dat 中。

    4. 重新启动重置了缓存的系统。

      必须重新启动系统以使上述更改生效。有关说明,请参见4.4 启动和停止服务

  4. 确保源 Messaging Server 和目标 Messaging Server 已启动并且正在运行。

    源 Messaging Server 必须能够将外来邮件路由到新的目标服务器。

  5. 将要移动邮箱的所有用户条目的 LDAP 属性 mailUserStatusactive 更改为 hold

    更改此属性可以使外来邮件保留在 hold 队列中,并可防止通过 IMAP、POP 和 HTTP 访问邮箱。通常以用户组的形式移动用户。如果移动单个域的所有邮箱,则可以使用 mailDomainStatus 属性。

    有关 mailUserStatus 的更多信息,请参见《Sun Java Communications Suite 5 Schema Reference》中的“mailUserStatus”

  6. 确保发送到迁移邮箱的邮件未阻塞在 ims-mstcp_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 后端服务器未响应、网络或名称服务器问题等等。

  7. 更改要移动的用户条目以及任何邮件组条目中的 LDAP 属性 mailHost*。

    使用 ldapmodify 命令将条目更改为新的邮件服务器。使用 Messaging Server 或目录服务器附带的 ldapmodify。不要使用 Solaris 操作系统的 ldapmodify 命令。

    * 如果关闭了旧邮件主机,则只需更改邮件组条目中的 mailHost 属性。可以将此属性更改为新的邮件主机名,也可以干脆删除此属性。对于邮件组而言,mailHost 是可选的。具有 mailHost 意味着只有该主机可以进行组扩展;而忽略 mailHost(此种情况较为常见)则意味着所有 MTA 都可以进行组扩展。请注意,邮件组条目不包含要迁移的邮箱,通常甚至没有 mailhost 属性。

    有关 mailhost 的更多信息,请参见《Sun Java Communications Suite 5 Schema Reference》中的“mailHost”

  8. 将邮箱数据从源 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- -c y -v 1
    

    您可以运行多个并发的备份和恢复会话(每组一个),以使传送到新消息存储的速率达到最大化。有关 imsbackupimsrestore 实用程序以及20.12 备份并恢复消息存储的更多信息,请参见《Sun Java System Messaging Server 6.3 Administration Reference》中的“Command Descriptions”


    注 –

    记录 imsbackup 开始运行的时间戳,用于以后的传送验证。


  9. 系统升级的条件式步骤)如果邮箱迁移是升级(从早期版本的 Messaging Server 升级到当前版本)过程的一部分,请将当前版本的 Messaging Server 设置为新的系统默认 Messaging Server。

    oldmail.siroe.com 的 DNS A 记录更改为指向 newmail.siroe.com(此服务器负责先前托管在 oldmail.siroe.com 上的域)。

  10. 启用用户对新消息存储的访问。

    如果适用,将 LDAP 属性 mailUserStatusmailDomainStatus 设置为将其更改为 hold 之前的任意值(如 active)。

  11. 释放所有源 Messaging Server 上处于 held 状态的邮件。

    任何可能保留外来邮件的系统都需要运行以下命令,以释放所有用户邮件:


    imsimta qm release -channel=hold -scope
    

    其中,scope 可以是 all(释放所有邮件)、user(用户 ID)或 domain(用户所在的域)。

  12. 将验证缓存超时和 ALIAS_ENTRY_CACHE_TIMEOUT 选项重置为默认值或所需值,然后重新启动系统。

    此时,您已经迁移了需要迁移的所有用户邮箱。在继续操作之前,请确保 LDAP 中没有使用旧系统作为 mailhost 创建的新条目;如果有,请迁移这些条目。此外,还要确保无法通过修改置备系统来创建此类条目。

    还要将 preferredmailhost 属性更改为新邮件主机的名称。

    对于后端消息存储,请将验证缓存超时设置为以下值:


    configutil -o service.authcachettl -v 900
    

    对于 MMP,请在 ImapProxyAService.cfgPopProxyAService.cfg 中将 LdapCacheTTLAuthCacheTTL 选项设置为 900。

    对于 MTA,请将 ALIAS_ENTRY_CACHE_TIMEOUT 选项设置为 600。ALIAS_ENTRY_CACHE_TIMEOUT 位于 option.dat 中。

    必须重新启动系统以使上述更改生效。有关说明,请参见4.4 启动和停止服务

  13. 确保用户客户端将指向新的邮件服务器。

    升级完成后,通过用户的邮件客户端程序使用户指向新服务器(在此示例中,使用户从 oldmail.siroe.com 指向 newmail.siroe.com)。

    一种替代方法是使用邮件多路复用器 (MMP),这样用户可以不必将其客户端直接指向新的邮件服务器。MMP 将从 mailHost 属性(存储在 LDAP 用户条目中)获取该信息,并自动将客户端重定向到新服务器。

  14. 一切正常运行之后,请验证在迁移后没有向旧消息存储中传送任何邮件。

    转到旧消息存储并运行 mboxutil -l 以列出邮箱。检查最后的邮件传送时间戳。如果在迁移时间戳(运行 imsbackup 命令时的日期戳)之后传送了邮件,请使用备份和恢复命令迁移这些邮件。由于提供了准备步骤,因此在迁移后极少会出现传送邮件的情况。

    在理论上,邮件可能会在队列中阻塞一段时间,由 notices 通道关键字指定天数和小时数(请参见10.10.4.3 设置通知邮件传送间隔)。

  15. 删除新消息存储上的重复邮件,然后运行 relinker 命令。

    此命令可以释放新消息存储上的磁盘空间。请参见20.11.7 由于重复存储相同的邮件而减少消息存储大小

  16. 从迁移的源存储中删除旧邮件,然后从旧存储上的数据库中删除用户。

    运行 mboxutil -d 命令。(请参见20.11.2.1 mboxutil 实用程序。)