Sun Java System Messaging Server 6.3 管理指南

20.15 將電子信箱遷移或移動至新系統

有時必須在郵件傳送伺服器系統之間移動現有電子信箱。這通常發生在以下情況中:

Messaging Server 提供多種在系統之間移動電子信箱的方法。每一種方法都各有優缺點,如以下各節所述。以下各節描述這些方法。

20.15.1 於在線上時將使用者電子信箱遷移至另一台 Messaging Server

您可以使用此程序將郵件儲存從舊版 Messaging Server 遷移至新版,或將電子信箱從其中一個 Sun Messaging Server 郵件儲存移動至另一個。此程序適用於 iPlanet Messaging Server 5.0 與更新版本。而無法用於從舊版 Messaging Server 或非 Sun Microsystems 郵件儲存移動郵件。

使用此程序移動電子信箱的優點如下所示:

使用此程序移動電子信箱的缺點如下所示:

20.15.1.1 增量電子信箱遷移

增量遷移提供安全且有效地將郵件儲存移至不同系統或升級至新系統之多項優點,增量遷移可讓您在保留舊的後端郵件儲存之同時,建立新的後端郵件儲存系統。接著,您可以測試新系統,遷移一些友善的使用者,再測試一次新系統。一旦熟悉新系統與配置且熟悉了遷移程序後,便可以開始遷移實際的商業使用者。這些使用者可分成不同的備份群組,使得在遷移期間,僅會將此組的成員短暫離線。

線上增量遷移的另一項優點為,您無須在升級失敗時計劃全系統的取消作業。取消作業是復原對系統所做的變更,以將系統返回原始工作狀態之程序。執行遷移時,必須為失敗進行計劃,亦即遷移的每個步驟皆需要有將系統返回之前的操作狀態之計劃。

離線遷移的問題在於,直到完成所有遷移步驟並啟動服務之前,您無法確定遷移是否成功。如果系統無法使用且無法快速修復,則將需要取消作業程序以取消已執行的所有步驟。這會是沉重與耗時的工作,且您的使用者在這段期間將維持離線。

您可以使用線上增量遷移,執行下列基本步驟:

1. 在舊系統存在情況下建立新系統,使兩者可獨立運作。

2. 配置舊系統以與新系統共同存在。

3. 遷移一組友善的使用者,並測試新系統以及其與舊系統的共存關係。

4. 將舊系統上的使用者分成不同的群組,並視需要逐個遷移至新系統。

5. 移除舊系統。

由於兩個系統會同時存在,所以在遷移系統之前會有時間進行測試與熟悉新系統。如果您不需要執行取消作業程序 (此可能性很低),您僅需要規劃步驟 2 與 4。步驟 2 不會觸及使用者資料,因此很容易復原。在步驟 4 中,取消作業會將使用者的狀態復原為使用中,並將其郵件主機屬性復原為舊主機。不需要全系統取消作業。

20.15.1.2 線上遷移簡介

以線上方式遷移電子信箱是很簡單的程序。但當您嘗試確定轉換至電子信箱的郵件 (位於 MTA 通道佇列等候遞送) 未在遷移程序中遺失時,複雜度會提升。其中一個解決方法是在遷移程序期間,將傳送的郵件設於保留狀態,並等候各個通道佇列中的訊息進行遞送。但是,訊息可能會因為系統問題或某個使用者超出配額,而卡在佇列中。在此情況下,則必須先解決此問題,才能遷移電子信箱。

您可以採取幾項措施降低郵件遺失的可能性,並驗證郵件未卡在通道佇列中,不過如此做會增加程序的複雜度。

根據部署以及傳向每個電子信箱的每則郵件是否不得遺失,此程序中各個步驟的順序與必要性也將不同。本節說明這些步驟背後的原理與概念。您有責任瞭解每個步驟,並根據您特有的部署,決定要採取哪些步驟以及步驟的先後順序。以下是移動電子信箱的程序簡介。此程序可能會視部署而異。

  1. 封鎖使用者對移動中的電子信箱之存取權。

  2. 暫時保留要傳送至移動中的電子信箱之郵件。

  3. 確認郵件並未卡在通道佇列中。

  4. 將使用者的郵件主機屬性變更為新的電子信箱位置。

  5. 將電子信箱移動至新位置。

  6. 釋放所保留要傳送到新電子信箱的郵件,並讓內送郵件可以傳送到遷移的電子信箱。

  7. 檢查舊郵件儲存,以查看遷移後是否有任何郵件送抵。

  8. 解除鎖定使用者對電子信箱的存取。

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. 變更其電子信箱將從 active 移至 hold 的所有使用者項目上的 LDAP 屬性 mailUserStatus

    變更使得內送郵件保留在 hold 佇列中,並防止透過 IMAP、POP 及 HTTP 對電子信箱進行存取的屬性。一般會以使用者群組移動使用者。若要移動單一網域的所有電子信箱,可以使用 mailDomainStatus 屬性。

    如需有關 mailUserStatus 的更多資訊,請參閱「Sun Java Communications Suite 5 Schema Reference」中的「mailUserStatus」

  6. 確定傳送至遷移中之電子信箱的郵件不會卡在 ims-mstcp_lmtp* 通道佇列 (若已部署 LMTP)。

    使用下列指令以查看傳送給將遷移的使用者之郵件,是否存在於通道佇列目錄樹狀結構中,同時是「保留」狀態 (查看 .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 Communications Suite 5 Schema Reference」中的「mailHost」

  8. 將電子信箱資料從來源 Messaging Server 郵件儲存移至目標 Messaging Server 郵件儲存,並記錄開始時間。

    使用 imsbackup 公用程式備份電子信箱,並使用 imsrestore 公用程式將之復原為新的 Messaging Server。例如,若要從 Messaging Server 5.2 系統中將名為 oldmail.siroe.com 的電子信箱遷移至 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 公用程式的更多資訊,請參閱「Sun Java System Messaging Server 6.3 Administration Reference」中的「Command Descriptions」,以及20.12 備份和復原郵件儲存


    備註 –

    記錄執行 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 會從儲存在 LDAP 使用者項目中的 mailHost 屬性取得該資訊,並自動重新將用戶端導向到新的伺服器。

  14. 等到一切運作正常,請確認遷移後沒有訊息遞送到舊的郵件儲存。

    進入舊的郵件儲存,並執行 mboxutil -l 以列出電子信箱。檢查上一則郵件遞送的時間戳記。如果郵件是在遷移時間戳記 (執行 imsbackup 指令的日期戳記) 之後送抵,請使用備份及復原指令遷移這些郵件。由於已提供準備步驟,因此遷移後有郵件送抵的情況很少見。

    理論上來說,郵件卡在佇列中的天數或小時數,由 notices 通道關鍵字指定 (請參閱10.10.4.3 設定通知郵件遞送間隔時間)。

  15. 若要移除新郵件儲存中重複的郵件,請執行 relinker 指令。

    此指令可釋放新郵件儲存中的磁碟空間。請參閱20.11.7 由於相同郵件的重複儲存而縮減郵件儲存大小

  16. 從您遷移來源的儲存區移除舊郵件,並從舊儲存區上的資料庫中刪除使用者。

    執行 mboxutil -d 指令。(請參閱20.11.2.1 mboxutil 公用程式)。

Procedure使用 IMAP 用戶端移動電子信箱

任何時候需要在郵件傳送伺服器之間遷移郵件,均可使用此程序。在使用此方法移動電子信箱之前,請考量其優點和缺點。

使用 IMAP 用戶端移動電子信箱的優點如下所示:

使用 IMAP 用戶端移動電子信箱的缺點如下所示:

  1. 安裝和配置新 Messaging Server。

  2. local.store.relinker 設定為啟用。

    這將因為重複儲存相同郵件而導致降低新系統上郵件儲存的大小。請參閱20.11.7 由於相同郵件的重複儲存而縮減郵件儲存大小,以取得更多資訊。

  3. 在新 Messaging Server 上佈建使用者。

    可以使用 Delegated Administrator 完成此作業。使用者被佈建於新系統上後,新到達的郵件就會傳送至新收件匣。

  4. 讓使用者將其郵件用戶端配置為可同時檢視新舊 Messaging Server 電子信箱。

    這可能涉及到在用戶端設定新電子郵件帳號。請參閱郵件用戶端文件,以取得詳細資訊。

  5. 指示使用者將資料夾從舊 Messaging Server 拖曳到新 Messaging Server。

  6. 與使用者驗證,確定所有電子信箱都已遷移至新系統,然後關閉舊系統上的使用者帳號。

Procedure使用 moveuser 指令移動電子信箱

任何時候需要在郵件傳送伺服器之間遷移郵件,均可使用此程序。對於從非 Sun Messaging Server 將 IMAP 電子信箱遷移至 Sun Java System Messaging Server 很有用。在使用此方法移動電子信箱之前,請考量其優點和缺點。

使用 moveuser 指令移動電子信箱的優點如下所示:

使用 moveuser 指令移動電子信箱的缺點如下所示:

  1. 安裝和配置新 Messaging Server。

  2. local.store.relinker 設定為啟用。

    這將因為重複儲存相同郵件而導致降低新系統上郵件儲存的大小。請參閱20.11.7 由於相同郵件的重複儲存而縮減郵件儲存大小,以取得更多資訊。

  3. 阻止內送郵件到達郵件傳送伺服器。

    將使用者屬性 mailUserStatus 設定為 hold

  4. 在新的 Messaging Server 上佈建使用者 (如果需要)。

    如果您從舊版 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.3 Administration Reference」中的「MoveUser」

  6. 啟用使用者對新郵件儲存的存取。

    mailUserStatus LDAP 屬性設定為 active

  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 設定為啟用。

    這將因為重複儲存相同郵件而導致降低新系統上郵件儲存的大小。請參閱20.11.7 由於相同郵件的重複儲存而縮減郵件儲存大小,以取得更多資訊。

  3. 在新的 Messaging Server 上佈建使用者 (如果需要)。

    可以使用 Delegated Administrator 完成此作業。請尚勿切換至新系統。

  4. 停用使用者對新舊郵件儲存的存取。

    mailUserStatus LDAP 屬性設定為 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.3 Administration Reference」中的「imsimport」

  7. 啟用使用者對郵件儲存的存取。

    mailUserStatus LDAP 屬性設定為 active

  8. 啟用使用者對新郵件儲存的存取。

  9. 關閉舊系統。