Sun Java System Messaging Server 6 2005Q4 管理指南

迁移用户邮箱

本节介绍了如何将用户邮箱从一个 Messaging Server 迁移到另一个 Messaging Server。虽然本节重点介绍的是如何从 Messaging Server 5.2 迁移到 Messaging Server 6 2005Q4 系统,但该联机迁移过程对所有高于 5.2 版的 Messaging Server 都适用。联机迁移可能最方便,但是本节也对其他迁移方法进行了介绍。

如果要将 Messaging Server 5.2 升级到 Messaging Server 6 并升级整个邮件存储数据库,则无需执行这些迁移过程。利用上一节介绍的 make_mboxlistdb_changes.sh 脚本,可以更方便地升级数据库。

仅在下列情况下,才需要执行这些过程:

如果选择使用这些过程迁移邮箱,请不要将分区路径映射到 Messaging Server 5.2 分区,也不要运行 make_mboxlist_changes.sh 脚本。

升级脚本生成的 make_configutil_changes.sh 脚本会自动将分区路径设置为映射到 Messaging Server 5.2 分区。您需要手动对其进行更改。此外,还应当从 do_the_upgrade.sh 脚本中删除对 make_mboxlistdb_changes.sh 脚本的调用。

要以联机方式将用户邮箱数据从 Messaging Server 5.2 迁移到当前版本的 Messaging Server,请执行下一节介绍的步骤。移动数据时无需关闭 Messaging Server。

将介绍以下过程:

在联机状态下将用户邮箱迁移到其他 Messaging Server

使用此过程可以将邮件存储从较低版本的 Messaging Server 迁移到较高版本的 Messaging Server,也可以将邮箱从一个 Sun Messaging Server 邮件存储移动到另一个 Sun Messaging Server 邮件存储。此过程适用于 iPlanet Messaging Server 5.0 及更高版本。不能使用此过程从早期版本的 Messaging Server 或非 Sun Microsystem 邮件存储中移动邮件。

使用此过程移动邮箱的优点如下所示:

使用此过程移动邮箱的缺点如下所示:

增量邮箱迁移

增量迁移具有许多优点,可以安全有效地将邮件存储移动到其他系统或升级到新系统;增量迁移允许您在保留旧后端邮件存储的同时构建新的后端邮件存储系统。这样就可以测试新系统,迁移一些友好用户,然后再测试一次新系统。在适应了新系统、新配置以及迁移过程之后,即可开始迁移实际的商业用户。 可以将这些用户分成单独的备份组,这样在迁移过程中,只有此组的成员在短时间内处于脱机状态。

联机增量迁移的另一个优点是,不必针对升级失败来规划系统范围的回退。回退是指一种过程,此过程可以恢复对系统所做的更改,从而使系统返回到更改前的原始工作状态。进行迁移时,必须针对故障进行规划,这意味着必须对迁移中的每个步骤进行规划,以便使系统返回到先前的运行状态。

脱机迁移的问题是,在完成所有迁移步骤并重新启用服务之前,无法确定迁移是否成功。如果系统出现故障且无法立即修复,则需要回退所有已执行的步骤。这可能会给您带来压力,并且需要花费一些时间,而在这段时间内用户仍处于脱机状态。

使用联机增量迁移时需执行以下基本步骤:

1. 构建与旧系统并存的新系统,以便两个系统可以独立运行。

2. 配置旧系统,使之与新系统并存。

3. 迁移一组友好用户,并测试新系统及其与旧系统的并存情况。

4. 对旧系统上的用户进行分组,并根据需要将这些组逐个迁移到新系统。

5. 对旧系统进行反汇编。

由于两个系统将会并存,因此在迁移到新系统之前,您可以有时间来测试和适应新系统。如果必须执行回退过程(此种可能性很小),则只需对步骤 2 和 步骤 4 进行规划。由于未涉及到用户数据,因此步骤 2 很容易恢复。在步骤 4 中,回退过程会将用户状态恢复为活动状态,并将用户的 mailhost 属性恢复为旧主机。不必执行系统范围的回退。

联机迁移概述

在联机状态下迁移邮箱的过程非常简单。但是要确保在迁移过程中传输到邮箱的邮件(在 MTA 通道队列中等待传送)不会丢失,则情况会比较复杂。一种解决方案是:以 held 状态保留迁移过程中发送的邮件,并等待各个通道队列中的邮件传送出去。但是,邮件可能会因为系统问题或特定用户超过配额而卡在队列中。在这种情况下,必须先解决此问题,然后再迁移邮箱。

可以采取各种措施来降低邮件丢失的可能性,并确保邮件不会卡在通道队列中,但这些措施会使过程更加复杂。

在此过程中,步骤的顺序和必要性取决于部署,以及是否不允许丢失发送到每个邮箱的每一封邮件。此部分介绍了与这些步骤相关的理论和概念。您必须了解每个步骤,并根据您的特定部署来确定要执行的步骤以及执行顺序。以下是对移动邮箱过程的概述。此过程可能会根据部署的不同而有所不同。

  1. 阻止用户访问要移动的邮箱。

  2. 暂时保留发送到要移动的邮箱的邮件。

  3. 确保邮件未卡在通道队列中。

  4. 将用户的 mailhost 属性更改为新的邮箱位置。

  5. 将邮箱移动到新位置。

  6. 释放所保留的邮件,以便将其传送到新邮箱,并使外来邮件能够传送到已迁移的邮箱。

  7. 检查旧的邮件存储,以查看在迁移后是否有邮件传送到此存储中。

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

开始之前

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


注 –

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


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

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

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

  2. 通知要移动的用户:在移动过程完成之前,他们将无法访问自己的邮箱。

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

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

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


      configutil -o service.authcachettl -v 0
      

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

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

      ImpProxyAService.cfgPopProxyAService.cfg 中,将 LdapCacheTTL 设置为 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. 确保源 Messaging Server 和目标 Messaging Server 已启动并且正在运行。

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

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

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

    有关 mailUserStatus 的更多信息,请参见 《Sun Java System Communications Services 6 2005Q4 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 或 Directory Server 附带的 ldapmodify。不要使用 Solaris 操作系统的 ldapmodify 命令。

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

    有关 mailhost 的更多信息,请参见 《Sun Java System Communications Services 6 2005Q4 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- -cy -v1
    

    您可以运行多个并发的备份和恢复会话(每组一个),以使传送到新邮件存储的速率达到最大化。有关 imsbackup 实用程序、imsrestore 实用程序以及备份并恢复邮件存储的更多信息,请参见 《Sun Java System Messaging Server 6 2005Q4 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,请在 ImpProxyAService.cfgPopProxyAService.cfg 中将 LdapCacheTTL 选项设置为 0。

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

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

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

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

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

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

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

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

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

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

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

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

Procedure使用 IMAP 客户机移动邮箱

无论何时需要将邮件从一个邮件服务器迁移到其他邮件服务器,都可以使用此过程。使用此方法移动邮箱之前,请考虑该方法的优缺点。

使用 IMAP 客户机移动邮箱的优点如下所示:

使用 IMAP 客户机移动邮箱的缺点如下所示:

步骤
  1. 安装并配置新 Messaging Server。

  2. local.store.relinker 设置为启用。

    这样可以减小重复存储相同的邮件而增加的新系统上的邮件存储大小。有关更多信息,请参见由于重复存储相同的邮件而减少邮件存储大小

  3. 在新 Messaging Server 上置备用户。

    您可以使用 Delegated Administrator 执行此操作。在新系统上置备用户后,新到达的邮件将被立即传送到新的收件箱。

  4. 让用户配置其邮件客户机以查看新旧 Messaging Server 邮箱。

    这可能涉及客户机上新电子邮件帐户的设置。有关更多信息,请参见邮件客户机文档。

  5. 指导用户将文件夹从其旧 Messaging Server 拖到其新 Messaging Server。

  6. 验证用户是否已将所有邮箱迁移到新系统,然后关闭旧系统上的用户帐户。

Procedure使用 moveuser 命令移动邮箱

无论何时需要将邮件从一个邮件服务器迁移到其他邮件服务器,都可以使用此过程。此过程可用于将 IMAP 邮箱从非 Sun Messaging Server 迁移到 Sun Java System Messaging Server。使用此方法移动邮箱之前,请考虑该方法的优缺点。

使用 moveuser 命令移动邮箱的优点如下所示:

使用 moveuser 命令移动邮箱的缺点如下所示:

步骤
  1. 安装并配置新 Messaging Server。

  2. local.store.relinker 设置为启用。

    这样可以减小重复存储相同的邮件而增加的新系统上的邮件存储大小。有关更多信息,请参见由于重复存储相同的邮件而减少邮件存储大小

  3. 停止向邮件服务器传入邮件。

    将用户属性 mailUserStatus 设置为 hold

  4. 如果需要,在新 Messaging Server 上置备用户。

    如果从以前版本的邮件服务器迁移,则可以使用同一 LDAP 目录和服务器。moveuser 可以更改每个用户条目中的 mailhost 属性。

  5. 运行 moveuser 命令。

    要根据 Directory Server siroe.com 中的帐户信息将所有用户从 host1 移动到 host2,请执行以下命令:


    MoveUser -l \
    "ldap://siroe.com:389/o=siroe.com???(mailhost=host1.domain.com)" \
    -D "cn=Directory Manager" -w password -s host1 -x admin \
    -p password -d host2 -a admin -v password
    

    有关 moveuser 命令的详细信息,请参见 《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“MoveUser”

  6. 启用用户对新邮件服务存储的访问。

    1. mailUserStatus LDAP 属性设置为 active

    2. 运行以下命令以将验证高速缓存超时值设置为 0 并立即允许访问邮件存储。


      configutil -o service.authcachettl -v 0
      
  7. 关闭旧系统。

Procedure使用 imsimport 命令移动邮箱

此过程专用于将邮箱从 UNIX /var/mail 格式文件夹移动到 Sun Java System Messaging Server 邮件存储。但是,如果您正在从中迁移的邮件服务器可以将 IMAP 邮件存储转换为 UNIX /var/mail 格式,则可以使用 imsimport 命令将邮件迁移到 Sun Java System Messaging Server。使用此方法移动邮箱之前,请考虑该方法的优缺点。

使用 imsimport 命令移动邮箱的优点如下所示:

使用 imsimport 命令移动邮箱的缺点如下所示:

步骤
  1. 安装并配置新 Messaging Server。

  2. local.store.relinker 设置为启用。

    这样可以减小重复存储相同的邮件而增加的新系统上的邮件存储大小。有关更多信息,请参见由于重复存储相同的邮件而减少邮件存储大小

  3. 如果需要,在新 Messaging Server 上置备用户。

    您可以使用 Delegated Administrator 执行此操作。现在还不要切换至新系统。

  4. 禁用用户对新旧邮件服务存储的访问。

    mailUserStatus LDAP 属性设置为 hold。用户的邮件将被发送到 hold 队列中并且不允许通过 IMAP、POP 和 HTTP 访问邮箱。存储服务器上的 MTA 和 Message Access Server 必须符合此要求。该设置将覆盖所有其他 mailDeliveryOption 设置。

  5. 如果现有邮件服务器的邮件存储还不是 /var/mail 格式,请将其转换为 /var/mail 文件。

    请参阅第三方邮件服务器文档。

  6. 运行 imsimport 命令。

    例如:


    imsimport -s /var/mail/joe -d INBOX -u joe
    

    有关 imsimport 命令的详细信息,请参见 《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“imsimport”

  7. 启用用户对邮件存储的访问。

    1. mailUserStatus LDAP 属性设置为 active

    2. 运行以下命令以将验证高速缓存超时值设置为 0 并立即允许访问邮件存储。


      configutil -o service.authcachettl -v 0
      
  8. 启用用户对新旧邮件服务存储的访问。

  9. 关闭旧系统。