Sun Java System Messaging Server 6.3 管理指南

第 20 章 管理郵件儲存

本章說明郵件儲存及其管理介面。本章包含以下各節:

20.1 簡介

郵件儲存包含特定 Messaging Server 實例的使用者電子信箱。郵件儲存的大小將根據電子信箱、資料夾及記錄檔數目的增加而增加。透過指定電子信箱的大小限制 (磁碟配額) 和所允許接收的郵件總量限制,以及為儲存中的郵件設定時效策略等方法,您可以控制儲存的大小。

隨著系統使用者數目的增加,您的磁碟儲存需求也隨之增加。根據您伺服器支援的使用者數目,郵件儲存可能需要一個實體磁碟或多個實體磁碟。有兩種方法可以為系統添加額外的磁碟空間。最簡單的方法是增加額外郵件儲存分割區 (請參閱20.10 配置郵件儲存分割區)

同樣地,如果您要支援多個託管網域,則可能需要將一個伺服器實例專用於單一的大型網域。使用此配置,您可以為特定網域指定儲存管理員。您還可以透過新增更多的分割區來擴充郵件儲存。

Messaging Server 提供了一組指令行公用程式,可用以管理訊息儲存區,如表 20–1 中所述。如需有關使用這些公用程式的資訊,請參閱20.11 執行郵件儲存的維護程序「Sun Java System Messaging Server 6.3 Administration Reference 」

表 20–1 郵件儲存指令行公用程式

公用程式 

說明 

configutil

設定和修改儲存的配置參數。 

deliver

將郵件直接遞送至可由 IMAP 或 POP 郵件用戶端存取的郵件儲存。 

hashdir

識別包含特定使用者的郵件儲存的目錄。 

imsconnutil

監視使用者對郵件儲存的存取。 

imexpire

根據管理員指定的條件 (例如存在時間) 自動從郵件儲存中移除郵件。 

iminitquota

從 LDAP 目錄重新初始化配額限制並重新計算可使用的磁碟空間。 

imsasm

處理使用者電子信箱的儲存和回復。 

imsbackup

備份儲存的郵件。 

imsexport

將 Messaging Server 電子信箱匯出至 UNIX /var/mail 格式資料夾。

imsrestore

回復已備份的郵件。 

imscripter

IMAP 伺服器協定程序檔工具。用於執行單一指令或指令序列。 

mboxutil

用於列出、建立、刪除、重新命名或移動電子信箱;報告配額使用率。 

mkbackupdir

建立備份目錄並將其與郵件儲存中的資訊同步化。 

MoveUser

在 Messaging Server 之間移動使用者帳號。 

imquotacheck

計算郵件儲存中每個使用者的電子信箱大小總量並將其與每個人的指定配額進行比較。imquotacheck 通知的本土化版本無法正確轉換 % 與 $ 符號。若要更正編碼,請在郵件檔案中使用 \24 替代每個 $,使用 \25 替代每個 %。

readership

收集共用 IMAP 資料夾中的讀者資訊。 

reconstruct

重建已經損壞的電子信箱。 

stored

執行背景和日常作業、永久刪除和刪除磁碟上儲存的郵件。 

20.2 郵件儲存目錄配置

圖 20–1 顯示伺服器實例的郵件儲存目錄配置。郵件儲存旨在提供對電子信箱內容的快速存取。如需儲存目錄的說明,請見表 20–2

圖 20–1 郵件儲存目錄配置

本圖顯示郵件儲存目錄配置。

郵件儲存由多個電子信箱資料庫和使用者電子信箱組成。電子信箱資料庫包含有關使用者、電子信箱、分割區、配額以及其他郵件儲存相關資料的資訊。使用者電子信箱包含使用者的郵件和資料夾。電子信箱儲存於郵件儲存分割區中,此為磁碟分割區上專門用以儲存郵件儲存的區域。請參閱20.10 配置郵件儲存分割區,以取得詳細資訊。郵件儲存分割區與磁碟分割區不同,但為便於維護,我們建議您為每個郵件儲存分割區配置一個磁碟分割區。

如 [收件匣] 之類的電子信箱位於 store_root 中。例如,以下為目錄路徑的範例:

store_root/partition/primary/=user/53/53/=mack1

下表說明郵件儲存目錄。

表 20–2 郵件儲存目錄說明

位置 

內容/說明 

msg-svr-base

預設/opt/SUNWmsgsr

包含伺服器程式、配置、維護和資訊檔案的 Messaging Server 機器上的目錄。 

store_root

msg-svr-base/data/store

郵件儲存的頂層目錄。其中包含 mboxlistuserpartition 子目錄。

./store.expirerule

包含自動移除郵件規則 (過期規則)。此選擇性檔案可以位於其他位置。請參閱20.9 設定自動移除郵件 (過期和清除) 功能

store_root/dbdata/snapshots

stored 定期執行的郵件儲存資料庫備份快照。

store_root/mboxlist/

包含電子信箱資料庫,該資料庫 (Berkeley DB) 儲存有關電子信箱和配額的資訊。 

folder.db 包含有關電子信箱 (包含儲存電子信箱的分割區名稱)、ACL 以及 store.idx 中某些資訊副本的資訊。每個電子信箱在 folder.db 中均有一個項目。

quota.db 包含有關配額及其使用率的資訊。每個使用者在 quota.db 中均有一個項目。

lright.db - 是根據 ACL 查詢權限排序的資料夾索引。

peruser.db 包含有關每個使用者旗標之資訊。該旗標可表示特定使用者是否已讀取或刪除某封郵件。

subscr.db 包含有關使用者訂閱的資訊。

store_root/session/

包含使用中的郵件儲存程序資訊。 

store_root/user/

未使用。 

store_root/partition/

包含郵件儲存分割區。系統已建立預設的 primary 分割區。請將您定義的其他分割區放在此目錄中。

store_root/partition/primary/=user/

此分割區的子目錄中包含所有的使用者電子信箱。電子信箱以雜湊結構儲存以便快速搜尋。若要尋找包含特定使用者電子信箱的目錄,請使用 hashdir 公用程式。

.../=user/hashdir/ hashdir/userid /

使用者 ID 為 userid 的頂層郵件資料夾。這是使用者的收件匣。對於預設網域,useriduid。對於託管網域,useriduid@domain。內送郵件會遞送到此郵件資料夾中。

.../userid/ folder

使用者在郵件傳送伺服器上定義的電子信箱。 

.../userid/store.idx

這是一個索引,可針對 /userid/ 目錄中所儲存的郵件提供下列資訊:郵件數目、此電子信箱使用的磁碟配額、電子信箱上次新收到郵件的時間、郵件旗標、每封郵件 (包括標頭和 MIME 結構) 的變量長度資訊以及每封郵件的大小。該索引還包含每個使用者的 mboxlist 資訊和配額資訊的備份副本。

.../userid/store.usr

包含存取過該資料夾的使用者清單。包括列出的每個使用者上次存取資料夾的時間以及該使用者已讀取及已刪除的郵件清單資訊。 

.../userid/store.sub

包含有關使用者訂閱的資訊。 

.../userid/store.exp

包含已刪除但尚未從磁碟中移除的郵件檔案清單。僅當存在已刪除的郵件時該檔案才會顯示。 


.../userid/nn/.../userid/folder/nn/

nn 是一個雜湊目錄,其中包含格式為 message_id.msg 的郵件;nn 可以是 00 到 99 之間的任一數字。message_id 也是一個數字。範例:郵件 1 至 99 都儲存在 .../00 目錄下。第一個郵件為 1.msg,第二個為 2.msg,第三個為 3.msg,以此類推。郵件 100 至 199 儲存在 01 目錄下;郵件 9990 至 9999 儲存在 99 目錄下;而郵件 10000 至 10099 又循環回到 00 目錄,再依此類推。

20.2.1 有效與無效的資料夾名稱

以下是有效與無效的 IMAP 資料夾字元。

有效的 IMAP 資料夾字元:<space> ! " # $ & ' ( ) + , - . / 0-9 : ; < = > @ A-Z [ \ ] ^ _ ` a-z { | } ~

無效的 IMAP 資料夾字元:% * ?

請注意,有特定字元序列會被拒絕,如名為 public/ 的資料夾。使用英文語言環境時,這些限制同樣適用。其他語言 (如日文) 會使用編碼字元集。

20.3 郵件儲存如何移除郵件

將郵件從郵件儲存中移除需要三個階段:

  1. 刪除。用戶端將郵件旗標設定為刪除。此時,郵件被標記為移除,但用戶端仍可透過移除刪除旗標來回復郵件。如果有第二個用戶端,則已刪除的旗標可能無法被該用戶端立即識別。您可以設定 configutil 參數 local.imap.immediateflagupdate,以啟用旗標的立即更新功能。

  2. 永久刪除。郵件會從電子信箱中移除。就技術上而言,這些郵件只是從郵件儲存的索引檔案 store.idx 中移除而已。郵件本身仍在磁碟上,但是一旦被永久刪除,用戶端便無法再回復郵件。

    過期是永久刪除的特殊情況。系統會永久刪除符合一組管理員定義的移除條件 (如郵件的大小和存在時間等) 的郵件。請參閱20.9 設定自動移除郵件 (過期和清除) 功能

  3. 清除。依預設,imexpire 公用程式會在每天晚上 11:00 將所有已永久刪除的郵件從磁碟上清除。您可以使用 local.schedule.expire (控制郵件過期排程) 和 store.cleanupage (控制清除寬限期,即郵件被清除之前的緩衝時間),來配置此功能。請注意,此配置與 imsimta purge 指令和 configutil 參數 local.schedule.purge 不同,此二者會清除舊版的 MTA 記錄檔。

20.4 指定管理員使用儲存的權限

郵件儲存管理員可以檢視及監視使用者電子信箱,並指定郵件儲存的存取控制。儲存管理員有權代理任何服務 (POP、IMAP、HTTP 或 SMTP) 進行身份認證,也就是說,他們可以使用任何使用者的權限為任何服務進行身份認證。這些權限可讓儲存管理員執行某些公用程式,以便管理儲存。例如,使用 MoveUser,儲存管理員可在系統之間移動使用者帳號和電子信箱。

本節說明如何在 Messaging Server 安裝下向郵件儲存授予儲存權限。


備註 –

其他使用者可能也擁有儲存的管理員權限。例如,某些管理員可能就擁有這些權限。


您可以執行以下小節中說明的管理員作業:

Procedure增加管理員項目

  1. 指令行:若要使用指令行新增管理員項目:

    configutil -o store.admins -v "adminlist"

    其中,adminlist 是以空格分隔的管理員 ID 清單。如果您指定一個以上的管理員,則必須以引號括住該清單。此外,管理員還必須是服務管理員群組的成員 (在 LDAP 使用者項目:memberOf: cn=Service Administrators,ou=Groups,o=usergroup 中)。

Procedure修改管理員項目

  1. 指令行。若要使用指令行修改郵件儲存管理員 UID 清單中的現有項目:


    configutil -o store.admins -v "adminlist"

    其中,adminlist 是以空格分隔的管理員 ID 清單。如果您指定一個以上的管理員,則必須以引號括住該清單。此外,管理員還必須是服務管理員群組的成員 (在 LDAP 使用者項目:memberOf: cn=Service Administrators,ou=Groups,o=usergroup 中)。

Procedure刪除管理員項目

  1. 指令行。若要使用指令行刪除儲存管理員,您可以編輯管理員清單,方法如下:


    configutil -o store.admins -v "adminlist"

    其中,adminlist 是以空格分隔的管理員 ID 清單。如果您指定一個以上的管理員,則必須以引號括住該清單。此外,管理員還必須是服務管理員群組的成員 (在 LDAP 使用者項目:memberOf: cn=Service Administrators,ou=Groups,o=usergroup 中)。

20.4.1 保護電子信箱,以防止管理員以外的人員將其刪除或重新命名

您可能希望保護某些電子信箱,以防止管理員以外的人員將其刪除或重新命名。下列程序將說明如何執行此作業。如果管理員以外的某個人嘗試刪除、修改或重新命名受保護的電子信箱,系統將顯示錯誤訊息電子信箱已固定

設定 local.store.pin configutil 變數。使用下列格式:


configutil -o local.store.pin -v "mailbox1"%"mailbox2"%"mailbox 3"

其中 mailbox1mailbox2mailbox 3 是受保護的電子信箱 (請注意,在電子信箱名稱中可以使用空格),% 是各個電子信箱之間的分隔符號。

20.5 關於共用資料夾

除其他使用者和群組根據指定的權限可以讀取、刪除或增加郵件之外,群組共用資料夾同其他郵件資料夾相同。可以透過一般的拖放、篩選器或直接使用 uid+folder @domain

下列範例顯示將電子郵件傳送至 carol.fanning@siroe.com 所擁有且名稱為 crafts_club私人共用資料夾所使用的位址:

carol.fanning+crafts_club@siroe.com

此範例顯示將電子郵件傳送至名稱為 tennis@siroe.com公用共用資料夾所使用的位址。

public+tennis@siroe.com

如果要針對特定主題進行電子郵件討論並將持續進行的討論內容共用並歸檔,則共用資料夾會十分有用。例如,軟體開發者群組可建立名為 mosaic_voices 的共用資料夾,用以討論特定專案的開發。當有郵件傳送至或放入資料夾 mosaic_voices 中時,具有共用資料夾權限 (可以依照個人位址或群組位址增加權限) 的任何人都可以開啟此電子信箱並讀取郵件。

共用資料夾會顯示在使用者信箱樹狀結構的共用資料夾下。範例如下:

圖 20–2 郵件用戶端所顯示的共用郵件資料夾清單範例。

本圖顯示用戶端共用郵件資料夾清單的範例。

共用資料夾有兩種類型:

通常共用資料夾僅適用於特定郵件儲存中的使用者。但 Messaging Server 可讓您建立能夠從多個郵件儲存存取的特殊共用資料夾。這些共用資料夾稱為分散式共用資料夾。如需詳細資訊,請參閱20.6.4 設定分散式共用資料夾

20.6 共用資料夾作業

本節說明共用資料夾管理員作業:

Procedure指定私人共用資料夾的共用屬性

  1. 私人共用資料夾是由使用者所建立。

    許多郵件用戶端都支援私人共用資料夾的建立。您可以嘗試在 Communications Express 上進行。

  2. 設定私人共用資料夾的共用參數。

    支援下列 configutil 參數:

    store.privatesharedfolders.restrictanyone - 如果啟用 (1),則不允許一般使用者將私人共用資料夾的權限設定為 anyone。預設值:0

    store.privatesharedfolders.restrictdomain - 如果啟用 (1),則不允許一般使用者將共用私人資料夾開放給網域以外的使用者使用。預設值:0

    store.privatesharedfolders.shareflags - 如果為 0,使用者之間無法共用旗標。如果為 1,使用者之間可共用旗標。預設值:0

    store.publicsharedfolders.user - 公用共用資料夾所有者的使用者 ID。通常這只會是 public。預設值:空值 (未設定)

Procedure建立公用共用資料夾

公用資料夾必須由系統管理員建立,因為它們需要存取 LDAP 資料庫和 readership 指令。

  1. 建立名為 public 的 LDAP 使用者項目,做為所有公用資料夾的容器 (請參閱20.5 關於共用資料夾)。

    範例:


    dn: cn=public,ou=people,o=sesta.com,o=ISP
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    objectClass: inetUser
    objectClass: ipUser
    objectClass: inetMailUser
    objectClass: inetLocalMailRecipient
    objectClass: nsManagedPerson
    objectClass: userPresenceProfile
    cn: public
    mail: public@sesta.com
    mailDeliveryOption: mailbox
    mailHost: manatee.siroe.com
    uid: public
    inetUserStatus: active
    mailUserStatus: active
    mailQuota: -1
    mailMsgQuota: 100
                      
  2. 使用 mboxutil 指令行公用程式,在 public 帳號下建立資料夾。

    例如,建立名為 gardening 的公用資料夾:


    mboxutil -c user/public/gardening
  3. 設定資料夾名稱。

    通常這會是 public。這是將資料夾名稱設定為 public 的指令:

    configutil -o store.publicsharedfolders.user —v public

  4. 指定使用者及其對該共用資料夾的存取權限。

    使用 readership 指令指定使用者及其存取權限。例如,下列指令將給予 sesta.com 中的每位使用者對公用資料夾 gardening 的查詢、讀取和發佈的存取權限︰

    readership -s user/public/gardening anyone@sesta.com lrp

    如需有關如何使用 readership 的詳細說明,請參閱20.6.2 設定或變更共用資料夾的存取控制權限

20.6.1 增加具有電子郵件群組的共用資料夾

通常使用 Communications Express 向共用資料夾清單增加使用者,或透過按照上述說明來建立公用的共用資料夾,來建立共用資料夾。但是有時候,使用者可能希望將電子郵件群組 (郵件發行清單) 增加至共用資料夾清單,以便群組中的每個使用者都對該共用資料夾有存取權限。例如,名為 tennis@sesta.com 的群組有 25 個成員,且這些成員已決定建立一個共用資料夾,儲存傳送至此群組位址的所有電子郵件。

Procedure將電子郵件群組增加至共用資料夾

將電子郵件群組增加至共用資料夾需要系統管理員權限。

  1. 建立資料夾。(如果已經建立,則略過此步驟。)

    通常應該由該群組中的某個成員來執行此步驟。如果不是群組成員,您可以使用下列指令來為他們建立資料夾:

    mboxutil -c user/gregk/gardening

    gregk 是共用資料夾所有者的 uidgardening 是共用資料夾的名稱。

  2. 將屬性值對 aclGroupAddr group_name@domain 增加至將具有該群組共用資料夾存取權限的每個成員之使用者項目。

    使用以上範例,將下列屬性值對增加至得到共用資料夾存取權限的每個使用者項目:

    aclGroupAddr: tennis@sesta.com

    請注意,若已使用群組項目中的 memberURL 屬性動態建立群組,則群組成員應已具有此屬性。此屬性的 URL 值如下所示:


    memberURL: ldap:///o=sesta.com??sub?(&(aclGroupAddr=tennis@sesta.com)
    (objectclass=inetmailuser))

    (由於印刷排版原因,範例項目行已經換行。實際項目應顯示在一個實體行上。)

  3. 指定群組及對共用資料夾的存取權限。

    使用 readership 指令來執行此作業。使用以上範例,下列指令向 tennis@sesta.com 成員授予公用資料夾 gardening 的查詢、讀取和郵寄存取權限:

    readership -s user/gregk/tennis tennis@sesta.com lrp

    如需有關如何使用 readership 的詳細說明,請參閱20.6.2 設定或變更共用資料夾的存取控制權限

20.6.2 設定或變更共用資料夾的存取控制權限

使用者可以使用 Communications Express 介面設定或變更共用資料夾的存取控制。管理員可以使用 readership 指令行公用程式設定或變更共用資料夾的存取控制。該指令的格式如下:

readership -s foldername identifier rights_chars

其中 foldername 是您要為其設定權限的公用資料夾的名稱,identifier 是您要為其指定權限的個人或群組,rights_chars 是您要指定的權限。如需每個字元的意義,請參閱表 20–3


備註 –

anyone 是一個特殊的識別碼。anyone 的存取權適用於所有使用者。同樣,anyone@domain 的存取權限可套用至同一網域中的所有使用者。


表 20–3 ACL 權限字元

字元 

說明 

l

查詢 – 使用者可以查看並訂閱共用資料夾。(允許使用的 IMAP 指令:LISTLSUB)

r

讀取 – 使用者可以讀取共用資料夾。(允許使用的 IMAP 指令:從資料夾中 SELECTCHECKFETCHPARTIALSEARCHCOPY)

s

查看 – 指示系統跨階段作業持續查看資訊。(設定 IMAP STORE SEEN 旗標)

w

寫入 – 使用者可以將郵件標記為已讀,並可以刪除郵件。(設定 IMAP STORE 旗標,但不包括 SEENDELETED)

i

插入 – 使用者可以在資料夾之間複製和移動電子郵件。(允許使用的 IMAP 指令:APPENDCOPY 到資料夾中)

p

郵寄 – 使用者可以將郵件傳送至共用資料夾的電子郵件位址。(無需 IMAP 指令) 

c

建立 – 使用者可以建立新的子資料夾。(允許使用的 IMAP 指令:CREATE)

d

刪除 – 使用者可以從共用資料夾中刪除項目。(允許使用的 IMAP 指令:EXPUNGE,設定 STORE DELETED 旗標)

a

管理 – 使用者擁有管理權限。(允許使用的 IMAP 指令:SETACL)

20.6.2.1 範例

若要讓 sesta 網域中的每位使用者都擁有對公用資料夾 golftournament 的查詢、讀取以及標記 (而不是發佈) 電子郵件的存取權限,請發出如下指令:

readership -s User/public/golftournament anyone@sesta lwr

若要將相同存取權限指定給郵件儲存中的每個使用者,請使用如下指令:

readership -s User/public/golftournament anyone lwr

如要為群組指定查詢、讀取、電子郵件標記和寄送權限,請使用以下指令:

readership -s User/public/golftournament group=golf@sesta.com lwrp

如果您要將該資料夾的管理和郵寄權限指定給個人 (jdoe),請使用如下指令:

readership -s User/public/golftournament jdoe@sesta.com lwrpa

若要拒絕個人或群組存取公用資料夾,請在 userid 前面加上破折號。例如,若要拒絕對 jsmith 的查詢、讀取以及寫入權限,請發出如下指令:

readership -s User/public/golftournament -jsmith@sesta.com lwr

若要拒絕個人或群組的存取權限,請在 ACL 權限字元前面加上破折號。例如,若要拒絕授予 jsmith 郵寄權限,請使用如下指令:

readership -s User/public/golftournament jsmith@sesta.com -p


備註 –

使用 uid+folder@domain 位址將郵件發佈至共用資料夾,必須使用 p (發佈) 存取權限與 readership 指令。請參閱20.6.2 設定或變更共用資料夾的存取控制權限


20.6.3 啟用或停用共用資料夾的列示

伺服器在回應 LIST 指令時是否會傳回共用資料夾,取決於配置選項 local.store.sharedfolders 中的設定。將選項設為 off,可加以停用。依預設,啟用該設定 (設定為 on)。

SELECTLSUB 指令不受該選項的影響。LSUB 指令會傳回所有已訂閱的資料夾,包含共用資料夾。使用者可以使用 SELECT 指令來選取他們擁有的或已訂閱的共用資料夾。

20.6.4 設定分散式共用資料夾

通常共用資料夾僅適用於特定郵件儲存中的使用者。但是,Messaging Server 能夠建立可跨多個郵件儲存存取的分散式共用資料夾。也就是說,分散式共用資料夾的存取權可以授予郵件儲存群組中的任何使用者。但是請注意,Web 郵件用戶端 (HTTP 存取用戶端,如 Messenger Express) 不支援遠端共用資料夾存取。使用者可以列出和訂閱資料夾,但無法檢視或改變其中的內容。

分散式共用資料夾要求如下:

您必須設定表 20–4 中所列的配置變數,將遠端郵件儲存 (不含共用資料夾的郵件儲存) 配置為代理伺服器。

表 20–4 用於配置分散式共用資料夾的變數

名稱 

值 

資料格式 

local.service.proxy.serverlist

郵件儲存伺服器清單 

以空格分隔的字串 

local.service.proxy.admin

預設的儲存管理員登入名稱 

字串 

local.service.proxy.adminpass

預設的儲存管理員密碼 

字串 

local.service.proxy.admin.hostname

特定主機的儲存管理員登入名稱 

字串 

local.service.proxy.adminpass.hostname

特定主機的儲存管理員密碼 

字串 

20.6.4.1 設定分散式共用資料夾—範例

圖 20–3 顯示三個郵件儲存伺服器 StoreServer1、StoreServer2 和 StoreServer3 的分散式資料夾範例。

圖 20–3 分散式共用資料夾—範例

本圖顯示分散式共用資料夾的範例。

透過設定表 20–4 中顯示的變數,這些伺服器彼此連線而成為對等代理伺服器郵件儲存。每部伺服器各有其私人共用資料夾 — golf (由 Han 所有)、tennis (由 Kat 所有) 和 hurling (由 Luke 所有)。此外,還有兩個分別名為 press_releasesAnnouncements 的公用共用資料夾。三台伺服器中任何一台上的使用者都可以存取這三個共用資料夾中的任何一個。圖 20–2 顯示 Ed 的共用資料夾清單。以下是該配置中每台伺服器的 ACL 範例。


$ StoreServer1 :> imcheck -d lright.db
Ed: user/Han/golf 
Ian: user/Han/golf 
anyone: user/public/press_releases

            

$ StoreServer2 :> imcheck -d lright.db
Jan: user/Kat/tennis
Ann: user/Kat/tennis
anyone: user/public+Announcements user/public+press_releases

            

$ StoreServer3 :> imcheck -d lright.db
Tuck: user/Ian/hurling
Ed: user/Ian/hurling 
Jac: user/Ian/hurling 
anyone: user/public/Announcements

            

20.6.5 監視與維護共用資料夾資料

readership 指令行公用程式可讓您監視和維護保留在 folder.dbperuser.dblright.db 檔案中的共用資料夾資料。folder.db 記錄了每個擁有 ACL 副本的資料夾。peruser.db 中對於每個使用者和電子信箱均具有一個項目,列出各種旗標設定和使用者上次存取資料夾的日期。lright.db 中包含所有使用者及他們有權查詢的共用資料夾的清單。

readership 指令行公用程式具有以下選項:

表 20–5 readership 選項

選項 

說明 

-d days

為每個共用資料夾傳回一個報告,其中包含在指定天數內選取該資料夾的使用者數目。 

-p months

peruser.db 中移除在指定月數內未曾選取共用資料夾的使用者的資料。

-l

列出 lright.db 中的資料。

-s folder_identifier_rights

為指定資料夾設定存取權。它會同時更新 lright.dbfolder.db

使用各種選項,您可以執行以下功能:

20.6.5.1 監視共用資料夾的使用

如果想知道有多少使用者正在存取共用資料夾,請使用以下指令:

readership -d days

其中 days 是要檢查的天數。請注意,此選項會傳回使用中的使用者之數目,而不是使用中的使用者之清單。

範例:若要找出最近 30 天內選用過共用資料夾的使用者數目,請使用以下指令:

readership -d 30

20.6.5.2 列出使用者及其共用資料夾

若要列出使用者及其有存取權的共用資料夾,請使用以下指令:

imcheck -d lright.db

輸出範例:

$ imcheck -d lright.db
group=lee-staff@siroe.com: user/user2/lee-staff
richb: user/golf user/user10/Drafts user/user2/lee-staff user/user10/Trash
han1: user/public+hurling@siroe.com user/golf
gregk: user/public+hurling@siroe.com user/heaving user/tennis

20.6.5.3 移除未使用的使用者

如果您要移除未使用的使用者 (在指定的一段時間內沒有存取共用資料夾的使用者) 請使用以下指令:

readership -p months

其中 months 是要檢查的月數。

範例:移除在過去六個月中沒有存取共用資料夾的使用者:

readership -p 6

20.6.5.4 設定存取權

您可以為新的公用資料夾指定存取權,也可以變更目前公用資料夾的存取權。

如需如何使用此指令設定存取權限的範例,請參閱20.6.2 設定或變更共用資料夾的存取控制權限

20.7 管理郵件類型

本節包含以下主題:

20.7.1 郵件類型簡介

整合郵件傳送應用程式可接收、傳送、儲存及管理多種類型的郵件,包括文字郵件、語音郵件、傳真郵件、影像資料與其他資料格式。郵件儲存可讓您定義多達 63 種不同的郵件類型。

依類型處理郵件的方法之一,是將郵件分門別類存放到個別的資料夾中。

有了郵件類型功能,您即不需再以個別的電子信箱資料夾存放不同類型的郵件。郵件類型一經配置,無論儲存於何處,郵件儲存均可加以識別。因此,您可以在同一資料夾中儲存異質的郵件類型。您也可以執行下列作業:

20.7.1.1 規劃郵件類型配置

在整合郵件傳送應用程式中,會為異質格式的資料指定標準網際網路郵件標頭,以利 Messaging Server 儲存及管理資料。例如,當語音郵件傳送至一般使用者的電話時,電話前端系統會為內送的語音郵件加上郵件標頭,再將其遞送至郵件儲存。

為辨別及管理不同類型的郵件,整合郵件傳送系統的所有元件皆必須使用相同的郵件類型定義與相同的標頭欄位,以識別郵件。

在配置可支援郵件類型的郵件儲存之前,您必須

例如,若您的應用程式中含有電話訊息,可以將此訊息類型定義為「multipart/voice-message」,並以 Content-Type 標頭欄位識別訊息類型。

接著您可以配置電話前端系統,在要遞送至郵件儲存的每則電話訊息中加入下列標頭資訊:

Content-Type: multipart/voice-message

接下來,您必須配置郵件儲存,使其辨別 multipart/voice-message 郵件類型,如以下幾節所說明。

20.7.1.2 定義及使用郵件類型

定義郵件類型時,您必須為其指定唯一的定義,如 multipart/voice-message。依預設值,郵件儲存會讀取 Content-Type 標頭欄位以判定郵件類型。您也可以依本身需求配置不同的標頭欄位,以識別郵件類型。

郵件儲存會讀取 Content-Type (或其他指定的) 標頭欄位,讀取時不區分大小寫。也就是說,即使標頭的大小寫字母組合與預期的組合方式不同,郵件儲存仍會將其視為有效的標頭欄位。

郵件儲存只會讀取標頭欄位中的郵件類型名稱。它會忽略其他引數或參數。

若要定義郵件類型,請使用 configutil 公用程式設定 store.messagetype 參數的值。如需相關指示,請參閱配置郵件類型

在您配置郵件類型後,郵件儲存即可識別及處理指定類型的郵件。在管理整合郵件傳戲應用程式中的郵件類型時,這是首要步驟。

若要充分發揮郵件儲存所提供的郵件類型功能,您應執行下列部份或所有的作業:

這些工作將於下列幾節說明:

Procedure配置郵件類型

若要配置郵件類型,請使用 configutil 公用程式,設定用以定義及識別郵件類型的 store.messagetype 參數值。

  1. store.messagetype.enable 參數設為 on,以啟用郵件類型。

    configutil 參數可讓郵件儲存可識別及處理郵件類型。您必須設定此參數,方可配置個別的郵件類型。

    例如,輸入以下指令:


    configutil -o store.messagetype.enable -v 1
  2. 設定 store.messagetype.x 參數,以定義及識別郵件類型。

    變數 x 可在郵件儲存中識別此特定郵件類型。變數 x 必須是大於零且小於 64 的整數。反覆使用唯一的整數配置此參數,可定義多達 63 個郵件類型。

    您可以使用能夠說明類型的文字字串,定義郵件類型的值。

    例如,若要定義文字郵件類型,可以輸入下列指令:


    configutil -o store.messagetype.1 -v text/plain

    若要定義語音訊息類型,您可以輸入下列指令:


    configutil -o store.messagetype.2 -v multipart/voice-message
  3. 設定 store.messagetype.x.flagname 參數,提供郵件類型的旗標名稱。

    此參數會建立可識別郵件類型的唯一旗標。當此類型的郵件進入郵件儲存時,即會自動設定此旗標;在郵件遭清除前,此旗標與郵件均保有關聯。旗標名稱值為用以說明郵件類型的文字字串。此值不需與 store.messagetype. x 參數的設定值相同。

    變數 x 是以 store.messagetype. x 參數定義的郵件類型整數 ID。

    例如,若要定義前述步驟中所配置之郵件類型的旗標名稱,請輸入下列指令:


    configutil -o store.messagetype.1.flagname -v text
    
    configutil -o store.messagetype.2.flagname -v voice_message
  4. 設定 store.messagetype.x.quotaroot 參數,以配置郵件類型的配額根名稱。

    此參數可讓配額功能識別及管理此郵件類型的配額根。此參數值是一個名稱,亦即可說明郵件類型的文字字串。此值不需與 store.messagetype.x 參數的設定值相同。

    變數 x 是以 store.messagetype.x 參數定義的郵件類型整數 ID。

    配置此參數後,即可設定適用於指定郵件類型的配額。如需更多資訊,請參閱20.7.4 依郵件類型管理配額

    例如,若要啟用前述步驟中所配置之郵件類型的配額根,請輸入下列指令:


    configutil -o store.messagetype.1.quotaroot -v text
    
    configutil -o store.messagetype.2.quotaroot -v voice
  5. 若要配置用以識別郵件類型的替代標頭欄位,請設定 store.messagetype.header 參數。

    依預設值,郵件儲存會讀取 Content-Type 標頭欄位以判定郵件類型。只有在需要使用不同的標頭欄位識別郵件類型時,始需配置 store.messagetype.header 參數。此參數的值為文字字串。

    例如,若要使用名為 X-Message-Type 的欄位,請輸入下列指令:


    configutil -o store.messagetype.header -v X-Message-Type

20.7.2 IMAP 指令中的郵件類型

當您為郵件類型配置 store.messagetype.x.flagname 參數時,必須建立可識別郵件類型的唯一旗標。一般使用者無法修改此旗標。

Messaging Server 所顯示的郵件類型旗標,可做為 IMAP 用戶端的使用者旗標。將郵件類型對映至使用者旗標,可讓郵件用戶端使用簡單的 IMAP 指令,依郵件類型處理郵件。

例如,您可以執行下列作業:

郵件類型使用者旗標是唯讀的。它無法以 IMAP 指令進行修改。

下列範例假設您以此處所顯示的值配置郵件類型 configutil 參數:


store.messagetype.enable = yes

store.messagetype.1 = text/plain
store.messagetype.1.flagname = text
store.messagetype.1.quotaroot = text

store.messagetype.2 = multipart/voice-message
store.messagetype.2.flagname = voice_message
store.messagetype.2.quotaroot = voice

範例 20–1 以郵件類型 configutil 配置為基礎的 IMAP FETCH 階段作業

下列 IMAP 階段作業將擷取目前所選電子信箱的郵件:


2 fetch 1:2 (flags rfc822)
* 1 FETCH (FLAGS (\Seen text) RFC822 {164}

Date: Wed, 8 July 2006 03:39:57 -0700 (PDT)
From: bob.smith@siroe.com
To: john.doe@siroe.com
Subject:  Hello
Content-Type: TEXT/plain; charset=us-ascii


* 2 FETCH (FLAGS (\Seen voice_message) RFC822 {164}

Date: Wed, 8 July 2006 04:17:22 -0700 (PDT)
From: sally.lee@siroe.com
To: john.doe@siroe.com
Subject:  Our Meeting
Content-Type: MULTIPART/voice-message; ver=2.0

2 OK COMPLETED

前述範例中擷取了兩則郵件,一則為文字郵件,另一則為語音郵件。

郵件類型旗標會以 store.messagetype.*.flagname 參數所配置的格式顯示。

Content-Type 標頭欄位會識別郵件類型。郵件類型名稱會依內送郵件寄達時的形式顯示。這些名稱會混用大小寫字母,且包含 charset=us-ascii 之類的郵件類型引數。



範例 20–2 以郵件類型 configutil 配置為基礎的 IMAP SEARCH 階段作業

下列 IMAP 階段作業將搜尋目前所選電子信箱的語音訊息:


3 search keyword voice_message
* SEARCH 2 4 6 
3 OK COMPLETED

在前述範例中,訊息 2、4 與 6 為語音訊息。搜尋作業中所使用的關鍵字為 voice_message,即 store.messagetype.2.flagname 參數的值。


20.7.3 傳送郵件類型的通知訊息

通知可遞送不同郵件類型 (如文字郵件、語音郵件和影像資料) 的相關狀態資訊。Messaging Server 可使用 Sun Java System Message Queue 傳送郵件類型的通知資訊。如需有關為郵件佇列配置 JMQ 通知外掛程式的資訊,請參閱第 22 章, 配置 JMQ 通知外掛程式以產生郵件佇列的郵件

若要啟用 JMQ 通知外掛程式以辨識特定郵件類型,您必須配置 store.messagetype 參數,包括 store.messagetype.x.flagname 參數在內。如需詳細資訊,請參閱配置郵件類型

郵件類型配置完成後,JMQ 通知訊息即可識別特定郵件類型。您可以撰寫依郵件類型解譯通知郵件的郵件佇列用戶端,並送遞各類型的相關狀態資訊至郵件用戶端。

JMQ 通知功能會依郵件類型,計算目前在電子信箱的郵件數。此計數結果不會單筆傳送,而會以陣列指出每種郵件類型的計數,並隨通知郵件傳送。

舉例來說,NewMsg 通知訊息可隨附相關資料,讓使用者得知使用者收件匣內有七則新的語音郵件訊息與四則新的文字郵件。

如需有關依郵件類型傳送通知的更多資訊,請參閱22.3.3 特定郵件類型的通知

20.7.4 依郵件類型管理配額

您在設定郵件類型的配額時,會在配額根中納入該配額值。配額根可指定使用者的配額。它可為特定郵件類型與電子信箱資料夾指定不同的配額,亦可為並非依類型定義的所有其餘郵件類型、資料夾與郵件指定適用的預設配額。

如需有關設定及管理配額的完整資訊,請參閱20.8.2 配額作業理論

20.7.4.1 設定郵件類型配額前

您必須先配置下列參數,方可設定郵件類型的配額:

20.7.4.2 設定郵件類型配額的方法

請使用下列其中一種方法設定郵件類型的配額:

當您以前述 configutil 參數或 LDAP 屬性設定郵件類型的配額時,必須使用以 store.messagetype.x.quotaroot 參數指定的配額根。

20.7.4.3 郵件類型配額根的範例

本節所說明的範例將設定使用者 joe 的下列配額:

此配額根在此 Archive 資料夾中允許的儲存量 (100 M),比其它所有資料夾與郵件類型的允許量總計還大 (60 M)。此外,Archive 資料夾並未設有任何郵件方面的限制;在此範例中,只有儲存限制對歸檔有所影響。

郵件類型具有儲存與郵件數兩種配額。

郵件類型配額會套用至所有此類郵件的總計,無論郵件儲存於 Archive 資料夾還是其他資料夾中。

所有不屬於文字或語音訊息類型,且並非儲存於 Archive 資料夾中的郵件,則會套用預設電子信箱配額。也就是說,郵件類型配額與「歸檔」配額不會計入預設電子信箱配額中。

若要設定此範例中的配額根,應執行下列步驟:

  1. 配置 store.messagetype.x.quotaroot 參數,如下所示:


    store.messagetype.1.quotaroot = text
    
    store.messagetype.2.quotaroot = voice
  2. 配置使用者 joemailQuota 屬性,如下所示:


    mailQuota: 20M;#text%10M;#voice%10M;Archive%100M
  3. 配置使用者 joemailMsgQuota 屬性,如下所示:


    mailMsgQuota: 5000;#text%2000;#voice%200

當您執行 getquotaroot IMAP 指令時,所產生的 IMAP 階段作業會顯示使用者 joe 的電子信箱的所有配額根,如下所示:


1 getquotaroot INBOX
* QUOTAROOT INBOX user/joe user/joe/#text user/joe/#voice
* QUOTA user/joe (STORAGE 12340 20480 MESSAGE 148 5000)
* QUOTA user/joe/#text (STORAGE 1966 10240 MESSAGE 92 2000)
* QUOTA user/joe/#voice (STORAGE 7050 10240 MESSAGE 24 200)

2 getquotaroot Archive
* QUOTAROOT user/joe/Archive user/joe/#text user/joe/#voice
* QUOTA user/joe/Archive (STORAGE 35424 102400)
* QUOTA user/joe/#text (STORAGE 1966 10240 MESSAGE 92 2000)

* QUOTA user/joe/#voice (STORAGE 7050 10240 MESSAGE 24 200)

20.7.5 依郵件類型判定郵件是否過期

過期與清除功能可讓您根據過期規則中所定義的條件,在不同的資料夾之間移動郵件、進行郵件歸檔,以及移除郵件儲存中的郵件。您可以使用 imexpire 公用程式執行這些工作。

imexpire 公用程式由管理員所執行,因此會略過配額限制。

如需有關如何撰寫過期規則及使用 imexpire 公用程式的資訊,請參閱20.9 設定自動移除郵件 (過期和清除) 功能

您可以撰寫過期規則,讓不同類型的郵件根據不同的條件過期。

過期功能極富彈性,您在設定過期條件時可有多種選擇。本節提供文字郵件與語音訊息各依據不同條件而過期的範例。

此範例假設您已依下列方式配置文字郵件與語音訊息類型:


store.messagetype.1 = text/plain

store.messagetype.2 = multipart/voice-message

另外也假設您已配置郵件儲存,使其讀取 Content-Type 標頭欄位以判定郵件類型。


範例 20–3 用以判定不同郵件類型是否過期的規則範例


TextInbox.folderpattern: user/%/INBOX
TextInbox.messageheader.Content-Type: text/plain
TextInbox.messagedays: 365
TextInbox.action: fileinto:Archive


VoiceInbox.folderpattern: user/%/INBOX
VoiceInbox.messageheader.Content-Type: multipart/voice-message
VoiceInbox.savedays: 14
VoiceInbox.action: fileinto:OldMail

VoiceOldMail.folderpattern: user/%/OldMail
VoiceOldMail.messageheader.Content-Type: multipart/voice-message
VoiceOldMail.savedays: 30
VoiceOldMail.action: fileinto:Trash

Trash.folderpattern: user/%/Trash
Trash.savedays: 7
Trash.action: discard

在此範例中,文字郵件與語音訊息會按不同的方式過期,並遵循不同的排程,如下所示:

備註:savedays 規則會使郵件在其儲存日期達指定天數後過期。在一般的語音郵件系統中,使用者均可在語音郵件功能表上儲存語音郵件。文字郵件則會在移至資料夾時進行儲存。messagedays 規則會使郵件在首次進入郵件儲存達指定天數後過期,無論郵件儲存於哪個資料夾,及其移動頻繁與否。


20.8 關於郵件儲存配額

隨著電子郵件與語音郵件快速累積,IMAP 電子信箱可能會變得非常龐大。使用者或網域可包含多大的磁碟空間或多少封郵件的郵件儲存配額限制 (或配額),是針對某個特定資料夾或特定郵件類型而指定的。配額可用以限制或降低郵件儲存的用量。本節包含以下資訊:

如需進一步資訊,請參閱20.11.4 監視配額限制

20.8.1 配額簡介

配額可針對特定使用者或網域而設定,並可視情況以郵件數或位元組數的形式設定。此外,亦可針對特定資料夾與郵件類型加以設定。郵件類型配額可讓您指定郵件類型的限制。例如,語音郵件與電子郵件。資料夾配額會以位元組數或郵件數設定使用者資料夾的大小限制。例如,您可以設定「垃圾筒」資料夾的配額。Messaging Server 可讓您為網域與使用者設定預設配額以及自訂配額。

配額設定完成後,即可配置系統對超過或接近配額的使用者或網域應如何回應。其中一種回應是傳送超出配額通知給使用者。另一種回應是在超出配額時停止將郵件遞送至郵件儲存。此即為配額限制,通常會在指定的寬限期屆滿後執行。寬限期是指電子信箱在超出配額多久之後會遭到限制。如果由於超過配額而停止投遞郵件,則內送郵件會保留在 MTA 佇列中直到發生以下情況之一:

當使用者刪除及永久刪除郵件,或伺服器根據所建立的過期原則刪除郵件時,磁碟空間即會恢復為可用狀態 (請參閱20.9 設定自動移除郵件 (過期和清除) 功能)。

20.8.1.1 電話應用程式伺服器的異常

為了使郵件傳送需求一致,Messaging Server 提供一種特殊功能,可以覆寫郵件儲存施加的配額限制。這可確保遞送某些代理程式 (即電話應用程式伺服器 [TAS]) 接受的郵件。由 TAS 接受的郵件可通過特殊的 MTA 通道路由,以確保郵件投遞至儲存中,而不受配額的限制。此用法頗為冷癖,但可運用在電話應用程式中。如需有關配置 TAS 通道的更多資訊,請與 Sun 的郵件傳送部門代表連絡。

依郵件類型設定的配額,可運用在使用整合郵件傳送的電話應用程式中。例如,若使用者電子信箱中同時存有文字與語音郵件等不同的郵件,管理員即可為不同類型的郵件設定不同的配額。使用者的電子郵件可具有一項配額,而其語音郵件可具有另一項配額。

20.8.2 配額作業理論

將配額屬性增加到 LDAP 使用者與網域項目中,即可指定自訂使用者與網域配額。配額預設值、通知策略、強制執行和寬限期可在 configutil 參數中或使用 imquotacheck 公用程式進行設定。

若要確定使用者的配額是否已經滿載,Messaging Server 會首先檢查是否為個別使用者設定了配額。如果未設定配額,則 Messaging Server 會檢查為所有使用者設定的預設配額。使用者的配額是就所有使用者資料夾中所有累積的位元組數或郵件數。網域的配額則是就特定網域中所有使用者的所有累積位元組數或郵件數。郵件類型的配額是就該郵件類型所有累積的位元組數或郵件數。資料夾的配額是就使用者資料夾中所有累積的位元組數或郵件數。

您可以為使用者的電子信箱樹狀結構指定下列配額值:

當您為使用者指定多個配額值時,會套用下列準則:

您對配額屬性與 configutil 參數所做的變更會自動生效,但並非立即生效,因為這些資訊儲存於快取中,可能需要一些時間才能讓變更完全生效。Messaging Server 所提供的指令「Sun Java System Messaging Server 6.3 Administration Reference」中的「iminitquota」 可立即更新已變更的項目。

imquotacheck 公用程式可用來根據指定配額檢查郵件儲存使用率。

20.8.3 郵件儲存配額屬性和參數

本節列出主要的郵件儲存配額屬性與 configutil 參數。其目的在於為您簡介功能介面。如需這些屬性與參數的詳細資訊,請參閱適當的參考文件。

下表列出配額屬性。請參閱「Sun Java Communications Suite 5 Schema Reference 」

表 20–6 郵件儲存配額屬性

屬性 

說明 

mailQuota

允許使用者電子信箱使用的磁碟空間位元組數。 

mailMsgQuota

對使用者所允許的最大郵件數目。這是儲存中所有資料夾的累積計數。 

mailUserStatus

郵件使用者的狀態。可用的值包括 activeinactivedeletedholdoverquota

mailDomainDiskQuota

網域中所有電子信箱的累積計數所允許的磁碟空間位元組。 

mailDomainMsgQuota

對網域所允許的最大郵件數目,即儲存中所有電子信箱的郵件總計數。 

mailDomainStatus

郵件網域的狀態。值和預設與 mailUserStatus 相同。

下表列出配額參數。如需最新且最詳細的資訊,請參閱「Sun Java System Messaging Server 6.3 Administration Reference」中的第 3 章「Messaging Server Configuration」

表 20–7 郵件儲存 configutil 參數

參數 

說明 

store.quotaenforcement

當為 off 時啟用配額限制,配額資料庫仍會更新但會一直遞送郵件。預設值:On 

store.quotanotification

啟用配額通知。預設值:OFF 

store.defaultmailboxquota

依位元組數目儲存預設配額。預設值:-1 (無限制) 

store.defaultmessagequota

依郵件數目儲存預設配額。數字。預設值:-1 (無限制) 

store.quotaexceededmsg

配額警告訊息。如果沒有,則不傳送通知。預設值:None。 

store.quotaexceededmsginterval

用於傳送超配額通知的時間間隔 (以天為單位)。預設值:7 

store.quotagraceperiod

將傳送至電子信箱的郵件退回給寄件者之前該電子信箱超出配額的時間 (以小時為單位)。小時數。預設值:120 

store.quotawarn

配額警告臨界值。向用戶端傳送超配額警告之前所超出配額的百分比。預設值:90 

local.store.quotaoverdraft

用於提供與從 Netscape Messaging Server 中遷移的系統的相容性。設定為 ON 時,允許投遞使磁碟使用率超出配額的一個郵件。使用者超過配額後,將會延遲或退回郵件,傳送配額警告訊息並啟動配額寬限期計時器。(預設為在郵件儲存達到臨界值時傳送配額警告訊息。)預設值:Off,但是若設定了 store.overquotastatus 則會被視為 on,否則使用者永遠不會超過配額,而永遠不會使用 overquotastatus

local.store.overquotastatus

在郵件於 MTA 中排入佇列之前啟用配額限制。這可以防止 MTA 佇列被填滿。設定後,使用者尚未超過配額,但是內送郵件使使用者超過配額時,則投遞郵件,但是 mailuserstatus LDAP 屬性被設定為 overquota,以便 MTA 不再接受更多的郵件。預設值:off 

郵件儲存配額也包含幾項公用程式。「Sun Java System Messaging Server 6.3 Administration Reference」中的「iminitquota」可初始化配額設定。換句話說,配額屬性與 configutil 參數會在執行此指令後自動生效。相關變更不需執行指令即可自動生效,但不會立即生效,因為這些資訊儲存於快取中,可能需要一些時間才能讓變更生效。

imquotacheck 公用程式可用來根據指定配額檢查郵件儲存使用率。

20.8.4 配置郵件儲存配額

本節說明以下作業:

20.8.4.1 指定預設使用者配額

未在 LDAP 項目中設定個別配額的使用者,會套用預設配額。此程序包含兩個步驟:1) 指定使用者預設配額,以及 2) 指定要連結至預設配額的使用者。下列範例將說明如何設定預設使用者配額。如需詳細的參數資訊,請參閱「Sun Java System Messaging Server 6.3 Administration Reference」中的第 3 章「Messaging Server Configuration」

以位元組為單位指定郵件大小的預設使用者磁碟配額:

configutil -o store.defaultmailboxquota -v [ -1 | number ]

其中,-1 表示無配額 (郵件用法無限制),number 表示位元組數。

指定郵件總數的預設使用者配額:

configutil -o store.defaultmessagequota -v [ -1 | number ]

其中,-1 表示無配額 (郵件數無限制),number 表示郵件數。

指定特定使用者的預設配額:

在使用預設郵件儲存配額的使用者項目中,將 mailQuota 屬性設定為 -2。請注意,若未指定 mailQuota,則會使用系統預設配額。

20.8.4.2 指定個別使用者配額

每個使用者均可擁有個人化的配額。若要設定使用者專用配額,請在使用者的 LDAP 項目中設定「Sun Java Communications Suite 5 Schema Reference」中的「mailQuota」「Sun Java Communications Suite 5 Schema Reference」中的「mailMsgQuota」屬性 (如需完整細節,請參閱「Sun Java System Messaging Server 6.3 Administration Reference」中的「configutil Parameters」)。下列範例將說明如何設定使用者配額。

若要指定系統預設配額,請勿將 mailQuota 加入 LDAP 項目中,或將其設為 –2

若要將配額設為 1,000 封郵件,請將 mailMsgQuota 設為 1000

若要將配額設為 2MB,請將 mailQuota 設為 2M2000000

若要將配額設為 2 GB,請將 mailQuota 設為 2G20000000002000M

若要指定 2 GB 的配額、20 MB 的語音郵件配額,以及 100 MB 的 Archive 資料夾配額:

mailQuota: 2G;#voice%20M;Archive%100M

2GB 的配額代表使用者電子信箱中未明確指定配額的所有資料夾。在此範例中,此配額排除了 Archive 資料夾中的郵件,與 voice 類型的郵件。100 MB 的配額包含 Archive 資料夾中所有資料夾的郵件。

20.8.4.3 指定網域配額

您可以設定網域的磁碟空間或郵件配額。這些配額針對特定網域中所有使用者的累積位元組或郵件。若要設定網域配額,請在適當的 LDAP 網域項目中設定「Sun Java Communications Suite 5 Schema Reference」中的「mailDomainDiskQuota」「Sun Java Communications Suite 5 Schema Reference」中的「mailDomainMsgQuota」屬性.

若要將配額設為 1,000 封郵件,請將 mailDomainMsgQuota 設為 1000

若要將配額設為 2MB,請將 mailDomainDiskQuota 設為 2M2000000

若配額設為 2 GB,請將 mailDomainDiskQuota 設為 2G20000000002000M

Procedure設定配額通知

配額通知是指在使用者接近其配額時,為其傳送警告訊息的程序。使用此功能時必須執行以下三個步驟。

  1. 啟用配額通知

    在指令行上執行下列作業:

    configutil -o store.quotanotification -v [ yes | no ]

    如果未設定郵件,則不會向使用者傳送配額警告訊息。

  2. 定義配額警告訊息

    警告訊息是指傳送給即將超過其磁碟配額之使用者的訊息。使用指令行定義配額警告郵件:

    configutil -o store.quotaexceededmsg -v ’message

    該郵件的格式必須符合 RFC 822。它必須包含一個標頭 (至少包含一個主旨行),之後是 $$,然後是郵件內文。「$」表示新的一行。根據要使用的 shell,可能需要在 $ 前附加 \,以退出 $ 的特殊意義。($ 通常為 shell 的退出字元。)範例:

    configutil -o store.quotaexceededmsg -v ”Subject: WARNING: User quota exceeded$$User quota threshold exceeded - reduce space used.’

    此外,還支援以下變數︰

    [ID] - 使用者 ID

    [DISKUSAGE] - 磁碟使用率

    [NUMMSG] - 郵件數目

    [PERCENT] - store.quotawarn 百分比

    [QUOTA] - mailquota 屬性

    [MSGQUOTA] - mailmsgquota 屬性

    以下是使用這些變數的範例︰

    configutil -o store.quotaexceededmsg -v ”Subject: Overquota Warning$$[ID],$$Your mailbox size has exceeded [PERCENT] of its alloted quota.$Disk Usage: [DISKUSAGE]$Number of Messages: [NUMMSG]$Mailquota: [QUOTA]$Message Quota: [MSGQUOTA]$$-Postmaster’

  3. 指定傳送警告訊息的頻率。

    設定下列參數:

    configutil -o store.quotaexceededmsginterval -v number

    其中,number 表示天數。例如,3 表示每 3 天傳送一次郵件。

  4. 指定配額臨界值

    配額臨界值是指在超過多大的配額百分比後始應傳送警告至用戶端。當使用者的磁碟使用率超出指定的臨界值時,伺服器便會向使用者傳送警告訊息。


    備註 –

    local.store.quotaoverdraft=on 時,不論使用 store.quotawarn 設定的臨界值為何,只有在使用者的磁碟使用率超過配額的 100% 時,才會觸發電子郵件通知。


    對於其用戶端支援 IMAP ALERT 機制的 IMAP 使用者,每次使用者選取電子信箱時訊息就會顯示在使用者的螢幕上,同時還將訊息寫入至 IMAP 記錄。

    使用指令行指定配額臨界值:

    configutil -o store.quotawarn -v number

    其中,number 表示所允許的配額百分比。

20.8.4.4 啟用或停用配額限制

依預設值,使用者或網域在超過其配額時並不會受到任何影響,但收到配額通知時則有影響 (若已設定)。配額限制會鎖定電子信箱,使其無法接收更多的郵件,直至磁碟使用率減少至配額層級以下。

啟用或停用配額限制:


configutil -o store.quotaenforcement -v [ on | off]

請注意,超過配額的郵件會儲存在 MTA 佇列中,並將通知傳送給寄件者,表明未遞送他們的郵件,但稍後會嘗試重新遞送。重新投遞嘗試將持續到寬限期過期且所有郵件被傳回給寄件者,否則磁碟使用率將低於配額並且將郵件從 MTA 佇列中移出並投遞至郵件儲存。如果您希望在超過配額的郵件到達郵件佇列之前將其傳回,請使用以下指令行:


configutil -o store.overquotastatus -v on

在網域層級啟用配額限制

若要啟用特定網域的配額,請使用下列指令:

imquotacheck -f -d domain

若要對所有網域啟用配額,請排除 -d 選項。當網域超過配額時,maildomainstatus 屬性會設定為 overquota如此將阻止任何郵件傳送至該網域。若網域並未 overquota,則該值會設定為 active

停用配額限制

若據顯示正在強制執行使用者配額,則即使您已經停用配額,也請檢查以下參數︰

這些 configutil 參數應為 off 或未設定︰

請注意,如果 store.overquotastatuson,它會始終視 store.quotaoverdrafton,否則使用者將永遠不會超過配額觸發拒絕。此外,若 store.quotaoverdrafton,則僅允許使用者接收一則小於配額的郵件。亦即,永遠不會接受大於使用者配額的郵件。

變更這些參數後,請務必重新啟動郵件傳送服務。

以下郵件儲存屬性應該處於使用中︰

請注意,如果郵件大於電子信箱配額,則不論配額強制配置為何,郵件均將退回。

20.8.4.5 設定寬限期

寬限期指定電子信箱滿載 (磁碟空間或郵件數目) 後要隔多久才會將郵件退回給寄件者。寬限期並不是指將郵件保留在郵件佇列中多長時間,而是指電子信箱超過配額之後多長時間才會退回所有內送郵件 (包含郵件佇列中的郵件)。(如需詳細資訊,請參閱20.1 簡介。)使用者達到配額臨界值而收到警告時,寬限期即開始。請參閱設定配額通知

使用指令行指定配額寬限期:

configutil -o store.quotagraceperiod -v number

其中,number 表示小時數。

20.8.4.6 Netscape Messaging Server 配額相容性模式

磁碟使用率超過 Netscape Messaging Server 中的配額後,伺服器會延遲或退回郵件遞送,而傳送超過配額通知,並開始進入寬限期。Messaging Server 會提供參數 local.store.quotaoverdraft ,該參數會保留此運作方式。

如果設定為 ON,則會傳送郵件,直到磁碟使用率超過配額為止。此時,郵件延遲 (郵件停留在 MTA 郵件佇列中但不會被投遞至郵件儲存),超過配額警告訊息會被傳送至使用者,並且啟動寬限期。寬限期決定電子信箱超過配額多長時間之後會退回超過配額郵件。(預設為在郵件儲存達到臨界值時傳送配額警告訊息。)此參數預設為 Off

20.9 設定自動移除郵件 (過期和清除) 功能

自動移除郵件功能 (也稱為過期和清除) 可根據一組管理員定義的條件從郵件儲存中自動移除郵件。此功能可自動移除舊的或過大的郵件、已讀取/已刪除的郵件及帶有特定 [主旨︰] 行的郵件等。此功能允許使用以下移除條件:

此功能由 imexpire 公用程式執行,可永久刪除並清除郵件。請參閱20.3 郵件儲存如何移除郵件,以取得有關郵件移除程序的詳細資訊。


備註 –

伺服器會在不發出警告的情況下移除郵件,因此有必要事先告知使用者自動移除郵件的策略。未預期移除郵件可能會讓使用者及管理員大吃一驚。


20.9.1 imexpire 的運作原理

您可以從指令行呼叫 imexpire,或藉由 imsched 常駐程式進行排程以自動執行。管理員可在名為 store.expirerule 的檔案中指定一組過期規則。此檔案指定移除郵件所依據的條件。可以有多個檔案,每個檔案放置於附屬於某一規則範圍的目錄中。亦即,將可全域套用至整個郵件儲存的規則放置於一個目錄中,將套用至分割區的規則放置於另一個目錄中,將套用至使用者的規則放置於第三個目錄中,以此類推。


備註 –

雖然全域過期規則可透過 configutil 指令與 store.expire.attribute 參數加以指定,但最好還是使用 store.expirerule 來指定。若使用 configutil 建立太多規則,可能會導致效能問題。


imexpire 會在系統啟動時載入所有過期規則。依預設,imexpire 會為每個分割區建立一個執行緒。每個執行緒會將其指定分割區內的使用者資料夾清單掃過一遍,然後載入本機過期規則檔案。過期功能會根據適用於資料夾的過期規則來檢查每個資料夾,並依需要永久刪除郵件。若電子信箱目錄下含有 store.exp 檔案,並且其中已永久刪除/已過期郵件超過了透過 store.cleanupage 配置參數所指定的時間,則清除功能會永久性移除郵件雜湊目錄下的郵件檔案,並將 UID 記錄從 store.exp 檔案中移除。

您也可以將特定使用者的使用者 ID 增加 (每行一個) 至 msg-svr-base/config/ 中名為 expire_exclude_list 的檔案中,將其排除在過期規則之外。

20.9.2 佈署自動移除郵件功能

自動移除郵件需要三個步驟:

  1. 定義自動移除郵件的策略:哪些郵件將被自動移除?哪些使用者、資料夾、網域及分割區可以自動移除郵件?哪些大小、郵件存在時間及標頭將定義移除條件。定義要移除的郵件範圍。請參閱20.9.2.1 定義自動移除郵件的策略

  2. 指定實作此策略的 imexpire 規則。請參閱20.9.2.2 設定實作自動移除郵件策略的規則

  3. 指定 imexpire 排程。請參閱20.9.2.3 排程自動移除郵件和記錄層級

20.9.2.1 定義自動移除郵件的策略

透過指定移除條件來定義您的自動移除郵件策略。imexpire 允許使用下列條件定義移除:

郵件的存在時間。自動移除超過 X 天的郵件。屬性:messagedays

郵件計數。自動移除超出 X 封郵件的資料夾中的郵件。屬性:messagecount

超出大小限制的郵件的存在時間。在 Y 天寬限期之後自動移除超過 X 位元組的郵件。屬性:messagesizemessagesizedays

已讀取已刪除郵件旗標。自動移除設定已讀取已刪除旗標的郵件。這些條件可設定為「and」「or」。若設定為 or,則郵件的已讀取/已刪除旗標將導致自動刪除,無論其他條件為何。若設定為 and,則郵件的已讀取/已刪除旗標必須設定為同時滿足其他所有指定的條件。屬性:seendeleted

郵件的標頭欄位。可讓您指定標頭和字串作為移除郵件的條件。例如,移除標頭中含有「主旨︰Work from Home!」

郵件資料夾。可讓您指定要移除其中郵件的資料夾。屬性:folderpattern。請注意,此屬性僅使用修改過的 UTF-7 字元集。


備註 –

imexpire 不允許根據讀取郵件之後所經過的時間來刪除或保留郵件。例如,您無法指定移除有 200 天未被讀取的郵件。


自動移除郵件策略的範例

範例 1:在超過 1,000 封郵件的資料夾中移除所有已存放 365 天以上的郵件。

範例 2:移除 siroe.com 網域中已存放 180 天以上的郵件。

範例 3:移除所有標記為已刪除的郵件。

範例 4:移除符合以下條件的郵件:位於 sesta.com、被標記為已讀取、已超過 30 天以上、容量超過 100 KB、所在的資料夾包含 1,000 封以上的郵件,並且標頭為 X-spam

20.9.2.2 設定實作自動移除郵件策略的規則

若要實作前一節中定義的自動移除郵件策略,您必須設定 imexpire 規則。您必須將規則放置於 store.expirerule 檔案中,藉以設定規則。以下是包含兩個全域 store.expirerule 規則的範例:


Rule1.regexp: 1
Rule1.folderpattern: user/.*/trash
Rule1.messagedays: 2
Rule2:regexp: 1
Rule2.folderpattern: user/.*
Rule2.messagedays: 14

            

在此範例中,Rule 1 指定垃圾箱資料夾中的所有郵件將在兩天後被移除。Rule 2 指定郵件儲存中的所有郵件將在 14 天後被移除。

本節包含以下小節:

過期規則使用準則

本小節說明 store.expirerule 檔案規則的使用準則。


備註 –

在舊版的 Messaging Server 中,可以使用 configutil 參數 store.expirerule. attribute 設定過期規則 (請參閱「Sun Java System Messaging Server 6.3 Administration Reference」中的「configutil Parameters」)。現在仍可使用,但是不再支援使用標頭限制的過期規則 (例如使具有特定主旨行的郵件過期)。在任何情況下,最好都使用 store.expirerule 來指定所有過期規則。


表 20–8 imexpire 屬性

屬性 

說明 (屬性值) 

action

指定要對過期規則所發現的郵件執行之動作。可能的值為: 

discard 會捨棄郵件。這是預設。

report 動作會將電子信箱名稱、UID 有效性與 UID 列印至 stdout。

archive 會以 Sun Compliance and Content Management System 進行郵件歸檔,然後捨棄該郵件。

fileinto: folder 動作會將郵件放置於特定資料夾中。共用資料夾字首可用以將郵件放置於其他使用者所擁有的資料夾中。

exclusive

指定此規則是否為專用規則。如果指定為 exclusive,則僅將此規則套用至指定的電子信箱,而忽略其他所有規則。如果存在一個以上的專用規則,則將使用最後載入的專用規則。例如,如果全域專用規則和本機專用規則均已指定,則將使用本機規則。如果有多個的全域專用規則,則使用由 configutil 列出的最後一個全域規則。(1/0)

folderpattern

指定受此規則影響的資料夾。格式必須以 user/ 開頭,代表目錄 store_root/partition/*/。請參閱表 20–9。(POSIX 常規表示式)

messagecount

資料夾中郵件的最大數目。隨著其他郵件被遞送,最舊的郵件會被永久刪除。(整數) 

foldersize

遞送其他郵件時最舊的郵件被永久刪除之前的資料夾空間上限。(以位元組為單位的整數) 

messagedays

郵件在被永久刪除之前的存在時間 (以天為單位)。(整數) 

messagesize

郵件被標記為已永久刪除前的最大大小 (以位元組為單位)。(整數) 

messagesizedays

寬限期。超出大小限制的郵件保留在資料夾中的天數。(整數) 

messageheader.header

指定將郵件標記為移除的標頭欄位和字串。值不區分大小寫,並且無法識別常規表示式。範例:Rule1.messageheader.Subject: Get Rich Now!

對於標頭 ExpiresExpiry-Date,如果在這些標頭欄位中指定的日期值早於 messagedays 屬性所對應的日期,則 imexpire 將移除郵件。如果指定多個過期標頭欄位,則將使用最早的過期日期。(字串)。

regexp

建立規則時啟用 UNIX 常規表示式。(1 或 0)。如果未指定,將使用 IMAP 表示式。 

savedays

郵件在遭到永久刪除前儲存於資料夾中的天數。 

seen

seen 是當使用者開啟郵件時,由系統設定的郵件狀態旗標。若將屬性 seen 設定為 and,則郵件必須已讀取並且必須符合其他條件,才能實作此規則。若將屬性 seen 設定為 or,則郵件只需被讀取符合其他條件,即可實作此規則。(and/or)。

sieve

用以指定郵件選取條件的篩選規則。範例:Rule17.sieve: header :contains “Subject” “Vigara”

deleted

deleted 是當使用者刪除郵件時,由系統設定的郵件狀態旗標。若將屬性 deleted 設定為 and,則郵件必須被刪除並且必須符合其他條件,才能實作此規則。若將屬性 deleted 設定為 or,則郵件只需被讀取符合其他條件,即可實作此規則。(and/or)

本土化電子信箱名稱

IMAP 協定會指定電子信箱名稱使用修改過的 UTF-7 編碼。Messaging Server 支援外部介面的本土化字元集,因此電子信箱名稱可進行本土化。但在內部作業時,系統會將本土化名稱轉換為 UTF-7。因此,用戶端上具有本土化電子信箱名稱的資料夾,將具有 UTF-7 格式的對應電子信箱檔案名稱。(請注意,IMAP 錯誤訊息會以 UTF-7 輸出電子信箱名稱,而非使用本土化字元集。)

一般而言,大部分需要電子信箱名稱的郵件儲存公用程式皆具有選項旗標而可設定成使用其他字元集,但它們仍預期名稱應以本土化字元集顯示。這些公用程式包括 reconstructmboxutilimsbackupimsrestorehashdir。但 imexpire 則要求電子信箱名稱必須使用 UTF-7,如屬性 folderpattern 所指定。使用本土化名稱無法運作。

若要取得 imexpire 的適當 folderpattern,可能必須將本土化電子信箱名稱轉換為修改過的 UTF-7 對等項目。使用 mboxutil -E 指令可執行此作業,如下所示:

顯示本土化檔名與修改過的 UTF-7 檔名之 mboxutil。

第一個 mboxutil 顯示本土化檔名。第二個 mboxutil 以修改過的 UTF-7 顯示檔名。您也可以使用 IMAP 清單指令:

IMAP 清單指令

以文字形式設定 imexpire 規則

透過在 store.expirerule 檔案中指定規則來設定自動移除郵件規則。store.expirerule 檔案中的每一行包含一個過期條件。全域規則配置檔案 (msg-svr-base/data/store/store.expirerule) 的過期條件格式如下:

rule_name.attribute : value

使用者或電子信箱規則配置檔案的過期規則格式如下:

attribute: value

範例 20–4 顯示 msg-svr-base/config/store.expirerule 中的一組全域過期規則。

Rule 1 設定全域過期策略 (即套用至所有郵件的策略),內容如下:

Rule 2 為 siroe.com 託管網域中的使用者設定自動移除郵件策略。它限制電子信箱的容量不得超過 1 兆位元組,移除已刪除的郵件,並移除存放時間超過 14 天的郵件。

Rule 3 為使用者 f.dostoevskiinbox 資料夾中的郵件設定自動移除郵件策略。它會移除主旨行中包含「On-line Casino」字句的郵件。


範例 20–4 imexpire 規則範例


Rule1.regexp: 1
Rule1.folderpattern: user/.*
Rule1.messagesize: 100000
Rule1.messagesizedays: 3
Rule1.deleted: or
Rule1.Subject: Vigara Now!
Rule1.Subject: XXX Porn!
Rule1.messagecount: 1000
Rule1.messagedays: 365
Rule2.regexp: 1
Rule2.folderpattern: user/.*@siroe.com/.*Rule2.exclusive: 1
Rule2.deleted: or
Rule2.messagedays: 14
Rule2.messagecount: 1000
Rule3.folderpattern: user/f.dostoevski/inboxRule3.Subject: *On-line Casino*
                  

設定 imexpire 資料夾式樣

可透過將 imexpire 屬性 regex 設定為 1,將資料夾式樣指定為使用 POSIX 常規表示式。如果未指定,則將會使用 IMAP 表示式。此格式必須以 user/ 開頭,後跟式樣。表 20–9 顯示各種資料夾的資料夾式樣。)

表 20–9 使用常規表示式的 imexpire 資料夾式樣

資料夾式樣 

範圍 

user/userid/.*

將規則套用至 userid 下所有資料夾中的所有郵件。

user/userid/Sent

將規則套用至 useridSent 資料夾中的郵件:

user/.*

將規則套用至全部郵件儲存。 

user/.*/trash

將規則套用至所有使用者的 trash 資料夾。

user/.*@siroe.com/.*

將規則套用至託管網域 siroe.com 中的資料夾: 

user/[^@]*/.*

將規則套用至預設網域中的資料夾。 

20.9.2.3 排程自動移除郵件和記錄層級

「自動移除郵件」由 imsched 排程常駐程式啟動。依預設,imsched 會在每晚 23:00 時呼叫 imexpire,以永久刪除並清除郵件。您可以設定表 20–10 中所述的 configutil 參數 local.schedule.expirestore.cleanupage,以自訂此排程。

對於大型郵件儲存來說,過期清除作業可能會耗時甚久,因此您也許會想要先測試一下全程所花的時間以便決定多久執行一次這些程序。例如,如果過期/清除循環需耗時 10 小時,則預設的每日執行一次過期清理也許就不太合適。排程會使用 imexpire 指令與自動作業排程參數執行過期與清除作業 (請參閱4.6 排程自動作業)。例如:


configutil -o local.schedule.expire -v "0 1 * * 6 /opt/SUNWmsgsr/sbin/imexpire -e"
configutil -o local.schedule.mspurge -v "0 23 * * * /opt/SUNWmsgsr/sbin/imexpire -c"

在此範例中,郵件會在每星期六凌晨 1 點過期,並於每晚 11 點清除。若未設定清除排程,imexpire 將會在過期後執行清除。

表 20–10 過期和清除 configutil 記錄和排程參數

參數 

說明 

local.schedule.expire

執行 imexpire 的間隔。使用 UNIX crontab 格式:minute hour day-of-month month-of-year day-of-week

數值均以空格或定位鍵分隔,範圍可以是 0-59、0-23、1-31、1-12 與 0-6 (0=星期日)。每個時間欄位都可以填入星號 (代表所有合法數值)、一列以逗號分隔的數值,或是範圍 (兩個以破折號連接的數值)。請注意,此處的日期可以用月份中的日期或每週第幾日的格式來指定,但是這兩者通常不一起使用,因為某日剛好又是星期幾的機率甚低。如果指定了這兩種格式,則必須在兩者都符合時才會執行作業。例如,設定為每月 17 日及星期二執行,則這兩個值必須均符合時才會執行作業。 

請注意,imexpire 也可以分別與 -e-c 旗標搭配使用,而僅執行過期或清除作業。請參閱「Sun Java System Messaging Server 6.3 Administration Reference」中的「imexpire」

間隔範例:

1) 在夜間 12:30、上午 8:30 以及下午 4:30 執行 imexpire

30 0,8,16 * * * /opt/SUNWmsgsr/sbin/imexpire

2) 每個工作日的凌晨 3:15 執行 imexpire

15 3 * * 1-5 /opt/SUNWmsgsr/sbin/imexpire

3) 僅在星期一執行 imexpire

0 0 * * 1 /opt/SUNWmsgsr/sbin/imexpire

預設值: 

0 23 * * * /opt/SUNWmsgsr/sbin/imexpire

若要停用:將 local.schedule.expire.enable 設為 NO

store.cleanupage

purge 將其永久移除之前,過期的或已永久刪除的郵件的存在時間 (以小時為單位)。

預設值:無 

local.store.expire.loglevel

指定記錄層級: 

1 = 記錄整個過期階段作業的摘要。 

2 = 為每個過期的電子信箱記錄一則訊息。 

3 = 為每封過期的郵件記錄一則訊息。 

預設值:1 

設定 imexpire 記錄層級

imexpire 將在作業完成後將摘要記錄到預設的記錄檔中。如果您從指令行呼叫過期,則可以使用 -v (詳細) 和 -d (除錯) 選項來指示 imexpire 將詳細的狀態/除錯訊息記錄到 stderr 中。若以 imsched 呼叫 imexpire,則 configutil 參數 local.store.expire.loglevel 可以設定為 1、2 或 3,以取得不同的記錄層級。記錄層級 1 是預設值,它將記錄整個過期階段作業的摘要。記錄層級 2 將為每個過期的電子信箱記錄一則訊息。記錄層級 3 將為每個過期的郵件記錄一則訊息。

從自動移除郵件中排除指定的使用者

msg-svr-base/config/ 中名為 expire_exclude_list 的檔案中,增加指定使用者的使用者 ID (每行各一),將其排除在過期規則之外。或在使用者的電子信箱下配置虛擬專用過期規則。

20.10 配置郵件儲存分割區

電子信箱儲存在郵件儲存分割區中,郵件儲存分割區是磁碟分割區中專用於儲存郵件儲存的一個區域。郵件儲存分割區與磁碟分割區不同,但為便於維護,建議您為每個郵件儲存分割區配置一個磁碟分割區和一個檔案系統。郵件儲存分割區其實就是特別指定為郵件儲存的目錄。

依預設,使用者電子信箱會儲存在 store_root/partition/ 目錄中 (請參閱20.2 郵件儲存目錄配置)。partition 目錄是一個邏輯目錄,其中可能包含一個或多個分割區。啟動時,partition 目錄中會包含一個名為primary 分割區。

您可以依需要將分割區增加至 partition 目錄。例如,您可能要分割單一磁碟以組織使用者,方法如下:


store_root/partition/mkting/
store_root/partition/eng/
store_root/partition/sales/

隨著磁碟儲存需求的增加,您可能要將這些分割區對映到其他實體磁碟機上。

您應限制任一磁碟上的電子信箱數目。將電子信箱分配到多個磁碟上可以縮短郵件遞送時間 (雖然這不一定能改善 SMTP 的接收比率)。您分配給每個磁碟的電子信箱數目,將視磁碟容量和分配給每個使用者的磁碟空間容量而有所不同。例如,如果您為每個使用者分配的磁碟空間較少,則每個磁碟上可以分配較多的電子信箱。

若您的郵件儲存需要多個磁碟,可以使用 RAID (備援經濟磁碟陣列) 技術簡化多重磁碟管理。藉由 RAID 技術的協助,您可以將資料分散到一組磁碟上,但是這些磁碟看起來卻像是一個邏輯磁碟區,因此可以簡化磁碟的管理。您可能還需要 RAID 技術的備援功能;即,它可以複製儲存,以便在故障回復時進行資料復原。


備註 –

若要提高磁碟存取的效率,郵件儲存和郵件佇列應位於單獨的磁碟上。


20.10.1 增加分割區

增加分割區時,請指定絕對實體路徑 (磁碟上儲存分割區的位置) 和邏輯名稱 (稱為分割區暱稱)。

您可以使用分割區別名來對映使用者與邏輯分割區的名稱,無論實體路徑為何。設定使用者帳號以及為使用者指定郵件儲存時,您可以使用分割區別名。您輸入的名稱必須是字母數字名稱,並且必須是小寫字母。

若要建立和管理分割區,用於執行伺服器的使用者 ID 必須有權將資料寫入實體路徑中指定的位置。


備註 –

新增分割區後,您必須停止伺服器然後再重新啟動以更新配置資訊。


Procedure增加郵件儲存分割區

  1. 指令行,從指令行增加分割區至儲存區:

    configutil -o store.partition.nickname.path -v path

    其中,nickname 是分割區的邏輯名稱,path 是分割區所在的絕對路徑名稱。

    指定預設主分割區的路徑:


    configutil -o store.partition.primary.path -v path
    

20.10.2 將電子信箱移至其他磁碟分割區

依預設,電子信箱均在 primary 分割區中建立。如果此分割區已滿,將無法儲存額外的郵件。解決此問題的方法有以下幾種:

如果可能,建議您使用磁碟區管理軟體為系統增加額外的磁碟空間,因為對使用者來說此程序是最簡單的方法。但是,也可以將電子信箱移至其他分割區。

Procedure將電子信箱移至其他磁碟分割區

  1. 確定在遷移過程中不會有使用者連線至電子信箱。要做到這一點,可以先通知使用者登出,並在移動電子信箱期間保持離線狀態;或設定 mailAllowedServiceAccess 屬性,以便在使用者登出後暫停 POP、IMAP 和 HTTP 服務。(請參閱「Sun Java Communications Suite 5 Schema Reference」中的「mailAllowedServiceAccess」


    備註 –

    暫停 POP、IMAP 和 HTTP 存取的設定 mailAllowedServiceAccess 不會中斷任何開啟的電子信箱連線。在移動電子信箱之前,您必須確定所有的連線均已關閉。


  2. 使用以下指令來移動使用者電子信箱:

    mboxutil -r user/<userid>/INBOX user/<userid>/INBOX <partition_name>

    範例:

    mboxutil -r user/ofanning/INBOX user/ofanning/INBOX secondary

  3. 在移動的使用者 LDAP 項目中,將 mailMessageStore 屬性設定為新分割區的名稱。

    範例:mailMessageStore: secondary

  4. 通知使用者已允許進行郵件儲存連線。如果適用,將 mailAllowedServiceAccess 屬性變更為允許 POP、IMAP 和 HTTP 服務。

20.10.3 變更預設郵件儲存分割區定義

預設分割區就是在建立使用者時,以及未在使用者項目中指定mailMessageStore LDAP 屬性時,所使用的分割區。mailMessageStore LDAP 屬性可指定使用者的郵件儲存分割區,所有使用者項目中均應指定該屬性,從而無需預設分割區。此外,不論是為了負載平衡或出於其他任何原因,均應該變更預設分割區。如果仍有依賴於預設分割區定義的使用者,則變更預設分割區是無效且危險的。

若絕對有必要變更預設分割區,請確保舊預設分割區 (不再使用的分割區) 上的所有使用者都已將 mailMessageStore 屬性設定到目前分割區 (其不再是預設分割區),再使用 configutil 參數 store.defaultpartition 變更預設分割區定義。

20.11 執行郵件儲存的維護程序

本節提供有關您維護和回復郵件儲存所使用的公用程式的資訊。您應經常閱讀 Postmaster 傳送的郵件,以便及時掌握伺服器傳送的警告和警示。您還應該監視記錄檔,以取得有關伺服器如何執行的資訊。如需有關記錄檔的更多資訊,請參閱第 25 章, 管理記錄

本節包含以下內容:

20.11.1 向郵件儲存中增加更多實體磁碟

Messaging Server 郵件儲存包含特定 Messaging Server 實例的使用者電子信箱。郵件儲存的大小將根據電子信箱、資料夾及記錄檔數目的增加而增加。

隨著系統使用者數目的增加,您的磁碟儲存需求也隨之增加。根據您伺服器支援的使用者數目,郵件儲存可能需要一個實體磁碟或多個實體磁碟。Messaging Server 可讓您根據需要增加更多儲存。增加更多儲存的方法之一就是使用儲存設備。如需如何使用 Messaging Server 配置 Network Appliance 儲存設備的資訊,請參閱「Using NetApp Filers with Sun Java System Messaging Server Message Store」

20.11.2 管理電子信箱

本節說明以下管理和監視電子信箱的公用程式:mboxutilhashdirreadership

20.11.2.1 mboxutil 公用程式

使用 mboxutil 指令可執行一般的電子信箱維護作業。mboxutil 作業包含以下各項:


備註 –

請注意,您不應在執行過程中終止 mboxutil 程序。如果此程序被 SIGKILL (kill -9) 終止,則可能需要重新啟動每台伺服器,並執行回復作業。


如需詳細語法與使用需求,請參閱「Sun Java System Messaging Server 6.3 Administration Reference」中的「mboxutil」

範例

列出所有使用者的所有電子信箱:

mboxutil -l

列出所有電子信箱並包含路徑和 ACL 資訊:

mboxutil -l -x

若要為使用者 daphne 建立名為 INBOX 的預設電子信箱:

mboxutil -c user/daphne/INBOX

若要為使用者 delilah 刪除名為 projx 的郵件資料夾:

mboxutil -d user/delilah/projx

若要為使用者 druscilla 刪除名為 INBOX 的預設電子信箱及所有郵件資料夾

mboxutil -d user/druscilla/INBOX

若要將使用者 desdemona 的郵件資料夾 memos 重新命名為 memos-april

mboxutil -r user/desdemona/memos user/desdemona/memos-april

若要將使用者 dimitria 的郵件帳號移至新分割區:

mboxutil -r user/dimitria/INBOX user/dimitria/INBOX partition

其中 partition 指定新分割區的名稱。

若要將使用者 dimitria 的名為的 personal 郵件資料夾移至新分割區:

mboxutil -r user/dimitria/personal user/dimitria/personal partition

20.11.2.2 移除孤立帳號

若要搜尋孤立帳號 (孤立帳號是指在 LDAP 中沒有對應項目的電子信箱),請使用下列指令:


mboxutil -o

指令輸出如下所示:

  mboxutil: Start checking for orphaned mailboxes
  user/annie/INBOX
  user/oliver/INBOX
  mboxutil: Found 2 orphaned mailbox(es)
  mboxutil: Done checking for orphaned mailboxes

若要建立列出孤立電子信箱並可轉變成刪除孤立電子信箱的程序檔檔案 (範例檔案名稱為 orphans.cmd),請使用以下指令:


mboxutil -o -w orphans.cmd

指令輸出如下所示:

  mboxutil: Start checking for orphaned mailboxes
  mboxutil: Found 2 orphaned mailbox(es)
  mboxutil: Done checking for orphaned mailboxes

使用以下指令刪除孤立的檔案︰


mboxutil -d -f orphans.cmd

20.11.2.3 hashdir 公用程式

郵件儲存中的電子信箱以雜湊結構儲存以便快速搜尋。因此,若要尋找含特定使用者電子信箱的目錄,請使用 hashdir 公用程式。

此公用程式可識別包含特定帳號的郵件儲存的目錄。此公用程式還可報告郵件儲存的相對路徑,如 d1/a7/。該路徑相對於使用者 ID 目錄之前的目錄層級。該公用程式會將路徑資訊傳送至標準輸出。

例如,若要尋找使用者 crowe 電子信箱的相對路徑:

hashdir crowe

20.11.2.4 readership 公用程式

readership 公用程式可報告有多少使用者 (電子信箱所有者除外) 閱讀過共用 IMAP 資料夾中的郵件。

IMAP 資料夾的所有者可以授予其他人閱讀資料夾中郵件的權限。允許其他人存取的資料夾稱為共用資料夾。管理員可以使用 readership 公用程式來查看有多少使用者 (所有者除外) 在存取共用資料夾。

此公用程式會掃描所有的電子信箱並為每個共用資料夾產生一行輸出資料,用於報告讀者數目 (後跟空格和電子信箱的名稱)。

每個讀者都是獨立的認證個體,他們都在過去的指定天數內選取過共用資料夾。但是讀取個人電子信箱的使用者不會算作讀者之一。此公用程式不會報告個人電子信箱的閱讀狀況,除非至少有一個資料夾所有者以外的人在閱讀。

例如,以下指令會將過去 15 天中選取過共用 IMAP 資料夾的任何人都算作讀者:

readership -d 15

20.11.3 信箱大小上限

信箱的大小上限約為一百萬則郵件。若超過此數目,郵件即可能無法遞送給使用者,或產生郵件儲存效能問題。如需詳細資訊,請參閱20.14.4.7 使用者郵件因電子信箱溢位而未遞送

20.11.4 監視配額限制

監視配額使用率和限制, 使用imquotacheck,可產生報告而列出定義的配額和限制,並提供有關配額使用率的資訊。配額和使用率圖表以千位元組為單位報告。該公用程式還可以將電子信箱大小與使用者的指定配額進行比較。您可以選擇將電子郵件通知傳送給超出指定配額設定百分比的使用者。


備註 –

imquotacheck 中,某些功能已經變更。(在 Messaging Server 6.x 中,imquotacheck 公用程式已取代 quotacheck 公用程式。)在 Messaging Server 5.x 中,當您使用 quotacheck 公用程式擷取使用者清單時,quotacheck 會搜尋本機 mboxlist 資料庫。此功能複製了 mboxutil 公用程式中的搜尋功能。

在 Messaging Server 6.x 中,已從 imquotacheck 公用程式中移除此複製功能。如果您使用 imquotacheck 執行使用者搜尋,搜尋將對 LDAP 目錄執行,而非本機 mboxlist 資料庫。若要從本機 mboxlist 資料庫中擷取使用者清單,請使用 mboxutil 公用程式。


列示規則檔案中配額超出最小臨界值的所有使用者的使用情況:

imquotacheck

若要列出網域 siroe.com 的配額資訊:

imquotacheck -d siroe.com

根據預設規則檔案向所有使用者傳送通知:

imquotacheck -n

若要根據指定的 rulefilemyrulefile 與指定的郵件樣本檔案 mytemplate.file 傳送通知給所有使用者 (如需更多資訊,請參閱「Sun Java System Messaging Server 6.3 Administration Reference」中的「imquotacheck」):

imquotacheck -n -r myrulefile -t mytemplate.file

列示所有使用者的使用情況 (將忽略規則檔案):

imquotacheck -i

為使用者 user1 列示每個資料夾的使用情況 (將忽略規則檔案):

imquotacheck -u user1 -e

20.11.5 監視磁碟空間

您可以指定系統監視磁碟空間和分割區使用的頻率,以及在何種情況下傳送警告。如需詳細資訊,請參閱27.3.2 監視磁碟空間

20.11.6 stored 常駐程式

stored 常駐程式可執行下列維護作業,以進行郵件儲存:

如果有任何伺服器常駐程式當機,您必須停止所有常駐程式,然後再重新啟動它們,包含 stored

20.11.7 由於相同郵件的重複儲存而縮減郵件儲存大小

如果將一封郵件傳送至多位收件者,該郵件會置於每位收件者的電子信箱中。某些郵件傳送系統將相同郵件的單獨副本儲存在每位收件者的電子信箱中。相反,Sun Java System Messaging Server 會儘量保留單一郵件副本,而不管郵件常駐電子信箱的數目。透過在包含此郵件的電子信箱中建立指向此郵件的強制連結來實現此操作。

其他郵件傳送系統遷移至 Sun Java Messaging Server 時,這些多重郵件副本可能在遷移過程中進行複製。使用大型郵件儲存時,這意味著不必要地複製了大量郵件。此外,在正常伺服器作業中也可能累積相同郵件的多個副本,例如,IMAP 附加作業或其他來源。

Messaging Server 提供名為 relinker 的新指令,可移除過量的郵件副本,並使用至單一副本的強制連結加以取代。

20.11.7.1 重新連結程式作業原理

重新連結功能可以在指令模式或即時模式中執行。當執行 relinker 指令時,它將掃描郵件儲存分割區、建立或更新 MD5 郵件摘要儲存庫 (作為強制連結)、刪除過量郵件檔案,並建立必要的強制連結。

摘要儲存庫由郵件儲存中指向郵件的強制連結組成。它儲存在目錄階層 partition_path/=md5 中。此目錄平行於使用者電子信箱階層 partition_path/=user (請參閱圖 20–1)。摘要儲存庫中的郵件由它們的 MD5 摘要唯一識別。例如,若 fredb/00/1.msg 的摘要為 4F92E5673E091B43415FFFA05D2E47,則 partition/=user/hashdir/hashdir/=fredb/00/1.msg 會連結至 partition/=md5/ hashdir/hashdir/4F92E5673E091B43415FFFA05D2E47EA.msg。如果其他電子信箱具有相同郵件,例如 partition_path /=user/hashdir/hashdir/gregk/00/17.msg,該郵件也將強制連結至 partition_path/=md5/4F/92/4F92E5673E091B43415FFFA05D2E47EA.msg。如圖 20–4 所示。

圖 20–4 郵件儲存摘要儲存庫

此圖說明郵件儲存儲存庫。

就此郵件而言,連結計數將為三。如果同時從 fredb 與 gregk 電子信箱中刪除郵件,則連結計數為一,且郵件會被清除。

重新連結程式可以在類似功能的即時模式中執行。請參閱20.11.7.3 在即時模式中使用重新連結程式以取得詳細資訊。

20.11.7.2 在指令行模式中使用重新連結程式

重新連結程式可掃描所有郵件儲存分割區,建立或更新 MD5 郵件儲存庫 (做為強制連結),並刪除過量的郵件檔案。在重新連結程式掃描儲存分割區後,將輸出重新連結前後有關唯一郵件數目以及分割區大小的統計資料。為能夠更快速地執行雜湊儲存,重新連結程式只會計算 =md5 中所沒有的郵件摘要。其中也具有可清除整個摘要儲存庫的選項 (不會影響使用者電子信箱)。

指令語法如下:

relinker [-P. partitionname] [-d]

其中,partitionname 指定要處理的分割區 (預設:所有分割區),而 -d 指定將要刪除的摘要儲存庫。輸出範例如下所示︰


# relinker

Processing partition: primary
Scanning digest repository...
Processing user directories..............................
---------------------------------------------------------
Partition statistics           Before            After 
---------------------------------------------------------
Total messages                 4531898         4531898
Unique messages                4327531         3847029
Message digests in repository        0         3847029
Space used                       99210Mb         90481Mb
Space savings from single-copy    3911Mb         12640Mb
---------------------------------------------------------


# relinker -d 
Processing partition: primary
Purging digest repository...
---------------------------------------------------------
Partition statistics                 Before         After
---------------------------------------------------------
Message digests in repository       3847029             0
---------------------------------------------------------

重新連結程式會耗費相當長的時間來執行,尤其是儲存庫中沒有郵件時首次執行該程式的情況。這是因為它必須計算每個郵件的摘要 (如果 relinker 條件配置為包含所有郵件—請參閱20.11.7.4 配置重新連結程式以取得有關配置重新連結程式條件的資訊)。例如,處理 100 GB 的郵件儲存會花費六小時。但是,如果啟用執行階段重新連結 (請參閱20.11.7.3 在即時模式中使用重新連結程式

若單獨使用 relinker 指令行模式,且未啟用執行階段選項,則必須清除摘要儲存庫 (=md5),否則儲存 (=user) 中清除的郵件所佔空間將無法成為可用的磁碟空間,因為它們在摘要儲存庫中依然具有連結 (成為孤立連結)。如果您正要執行儲存的一次性最佳化 (例如遷移之後),您可以先執行一次 relinker,然後使用 relinker -d 刪除整個儲存庫。若要重複清除 (在遷移期間),僅需重複執行 relinker 指令即可,因為該指令每次執行時,也會清除儲存庫中過期的或孤立的郵件。

可以以平行方式安全地執行重新連結程式的多個實例,同時每個實例處理不同的分割區 (使用 -p 選項)。郵件僅在相同的分割區中重新連結。

20.11.7.3 在即時模式中使用重新連結程式

configutil 參數 local.store.relinker.enabled 設定為 yes,可在即時模式中啟用重新連結程式功能。在即時模式中使用重新連結程式將計算符合配置的重新連結程式條件 (20.11.7.4 配置重新連結程式) 的所有已傳送郵件 (或已復原的郵件、已附加 IMAP 的郵件等) 之摘要,然後查看儲存庫以確認該摘要是否已存在。如果摘要存在,則將會在目標電子信箱中建立與該摘要的連結,而非建立郵件的新副本。如果沒有摘要,則將建立郵件,並且之後在儲存庫中新增與該摘要的連結。

stored 會掃描每個分割區的摘要儲存庫,並清除連結記數為 1 的或不符合重新連結程式條件的郵件。掃描在可配置時間段內一次執行一個目錄。這樣就可以平均分散 I/O 負載,並且不會明顯地影響其他伺服器作業。依預設,清除週期為 24 小時,這意味著郵件在從儲存中刪除或超出配置的最長存在時間之後,仍可在磁碟上最多存在 24 小時。當重新連結程式即時模式啟用時,將啟用此作業。

20.11.7.4 配置重新連結程式

表 20–11 顯示可用以設定重新連結程式條件的參數。

表 20–11 relinker configutil 參數

參數 

說明 

local.store.relinker.enabled

在附加碼中啟用郵件的即時重新連結並啟用 stored 清除。即使此選項已關閉,仍然可以執行 relinker 指令行工具。然而,由於 stored 不會清除儲存庫,relinker -d 必須用於此作業。開啟此選項將會影響郵件遞送效能,作為對節省磁碟空間的代價。

預設值:no

local.store.relinker.maxage

郵件保留在儲存庫中的最長存在時間,或 relinker 指令行考量的最長存在時間 (以小時為單位)。-1 表示沒有時間限制,即僅從儲存庫中清除孤立的郵件。對於 relinker,它表示將處理現有郵件,不論存在時間為何。較短值可使儲存庫變得較小,因此可以讓 relinkerstored 清除更快地執行,並更快地收回磁碟空間,而較長值允許在較長時期內進行重複的郵件重新連結,例如,在間隔的幾天之內複製相同郵件至儲存,或在幾天或幾週之內執行遷移。

預設值:24 

local.store.relinker.minsize

執行階段或指令行 relinker 考量的郵件大小下限 (以千位元組為單位)。設定非零值將放棄重新連結程式對較小郵件的有利之處,以獲得較小的儲存庫。

預設值:0 

local.store.relinker.purgecycle

整個 stored 清除週期的大概持續期間 (以小時為單位)。實際持續期間視在儲存庫中掃描每個目錄所花費的時間而定。值越小,所使用的 I/O 就越多,較大的值不會很快地回收磁碟空間。0 表示不斷地執行清除而不會在目錄之間出現暫停。-1 表示不會在 stored 中執行清除 (必須使用 relinker -d 指令執行清除)。

預設值:24 

20.12 備份和復原郵件儲存

郵件儲存備份與復原是最常見且最重要的管理作業之一。它涵蓋了郵件儲存中所有郵件和資料夾的備份。您必須為自己的郵件儲存實作備份和復原策略,以確定在以下問題發生時不會遺失資料:

您可以使用指令行公用程式 imsbackupimsrestore,或是使用 Legato NetworkerTM 的整合解決方案來執行郵件儲存的備份和復原。

Messaging Server 提供單一副本備份程序。不管特定郵件同時為多少個使用者資料夾所共同持有,在備份時只會使用第一個找到的郵件檔案來製作一個備份。第二個郵件副本將做為第一個郵件檔案名稱的連結進行備份,以下亦同。imsbackup 維護一個含有所有郵件的雜湊表,其使用郵件檔案的裝置和 I 節點做為索引。但是,此方法在復原資料時還有一些額外功能。如需更多資訊,請參閱20.12.5 部分復原的注意事項


備註 –

也可以透過備份所有的郵件檔案和目錄執行郵件儲存備份和復原。請參閱20.12.9 郵件儲存災難備份與回復


本節包含以下小節:

20.12.1 建立電子信箱的備份策略

備份策略取決於多項因素,如:

20.12.1.1 業務尖峰負荷

為系統排程備份時,必須將尖峰業務負載納入考量,因為這或許能降低系統在尖峰時刻的負載。例如,最好將備份排程到清晨執行,如清晨 2:00。

20.12.1.2 完整備份和增量備份

增量備份 (請參閱增量備份) 將掃描儲存有無變更資料,並僅備份有所變更的資料。完整備份將備份整個郵件儲存。您需要決定系統要多久執行一次完整備份或增量備份。您可以將增量備份做為每日維護程序的一部分執行,而完整備份需要每週執行一次。

20.12.1.3 平行或串列備份

當使用者資料儲存於多個磁碟上時,您可以視需要平行備份使用者群組。根據系統資源,平行備份可以加快整個備份程序的速度。但是,如果您想儘量減少備份對系統效能的影響,則串列備份也許比較合適。平行備份與串列備份之間的抉擇受許多因素影響,包括系統負荷、硬體配置以及有多少磁帶機可用等。

20.12.2 建立備份群組

備份群組是由常規表示式定義的任意一組使用者電子信箱。將使用者電子信箱部署於備份群組中,可讓您定義更靈活的備份管理。

例如,您可以建立三個備份群組:第一個群組包含的使用者 ID 都是以從 A 到 L 之間的字母開頭;第二個群組包含的使用者 ID 則是以從 M 到 Z 之間的字母開頭;第三個群組包含的使用者 ID 都是以數字開頭。管理員可以使用這些備份群組以平行方式備份電子信箱,或是一天只備份某幾個群組,其他群組則改日再備份。

請注意幾個關於備份群組的事項:

  1. 它們是由郵件使用者任意組成的虛擬群組。它們無法準確地對映至郵件儲存目錄 (圖 20–1),儘管表面上已準確對映。

  2. 它們是由管理員使用 UNIX 常規表示式定義的。

  3. 常規表示式定義於配置檔案 msg-svr-base/config/backup-groups.conf 中。

  4. 當在 imsbackupimsrestore 中參照備份群組時,它們使用的路徑格式為:/partition_name/backup_group

backup-groups.conf 的格式如下:


group_name=definition
group_name=definition
.
.
.

使用前段所述的範例,以下定義將用於建立三個備份群組:


groupA=[a-l].*
groupB=[m,-z].*
groupC=[0-9].*

現在您可以在多個層級上使用 imsbackupimsrestore。您可以使用備份指令備份/復原整個郵件儲存:

imsbackup -f device /

若要備份 groupA 中所有使用者的全部電子信箱,請使用以下指令:

imsbackup -f device /partition/groupA

預設分割區名為 primary

20.12.2.1 預先定義的備份群組

Messaging Server 包含一個預先定義的備份群組,且不需要為其建立 backup-groups 配置檔案。此群組名為 user;它包含所有使用者。例如,下面將備份 primary 分割區上的所有使用者:

imsbackup -f backupfile /primary/user

20.12.3 Messaging Server 的備份和復原公用程式

為進行備份及復原資料,Messaging Server 提供了 imsbackupimsrestore 公用程式。請注意,imsbackupimsrestore 公用程式並不具備一般用途工具 (如 Legato Networker) 中的進階功能。例如,這些公用程式對自動更換磁帶裝置的支援就很有限,而且它們也無法將單一的儲存同時寫入多個裝置。綜合備份仍須透過 Legato Networker 這類多用途的外掛程式才能完成。如需使用 Legato Networker 的更多資訊,請參閱20.12.6 使用 Legato Networker

20.12.3.1 imsbackup 公用程式

使用 imsbackup,您可以將選取的郵件儲存內容寫入任何串列裝置,包括磁帶、UNIX 管道或純文字檔案等。您可以使用 imsrestore 公用程式在以後復原整個備份或選取的部分備份。imsbackup 的輸出可傳送至 imsrestore

以下範例會將整個郵件儲存備份到 /dev/rmt/0


imsbackup -f /dev/rmt/0 /

這會將使用者 ID 為 joe 的電子信箱備份到 /dev/rmt/0


imsbackup -f /dev/rmt/0 /primary/user/joe
            

此範例會將備份群組 groupA 中定義之所有使用者的所有電子信箱備份到 backupfile (請參閱20.12.2 建立備份群組):


imsbackup -f- /primary/groupA > backupfile
            

增量備份

以下範例將備份從 2004 年 5 月 1 日下午 1:10 到現在儲存的郵件。預設為備份所有郵件,不論這些郵件的日期為何時︰


imsbackup -f /dev/rmt/0 -d 20040501:131000 /
               

此指令使用預設區塊化倍數 20。如需 imsbackup 指令的完整語法說明,請參閱「Sun Java System Messaging Server 6.3 Administration Reference」

20.12.3.2 imsrestore 公用程式

若要從備份裝置復原郵件,請使用 imsrestore 指令。例如,以下指令會從檔案 backupfile 中復原 user1 的郵件。

imsrestore -f backupfile /primary/user1

如需 imsbackup 指令的完整語法說明,請參閱「Sun Java System Messaging Server 6.3 Administration Reference」

20.12.4 執行備份時排除垃圾郵件

執行備份作業時,您可以指定要在備份時排除的電子信箱。透過排除積累大量無用郵件的垃圾或垃圾箱電子信箱,可以簡化備份階段作業,減少完成作業所需的時間並最小化儲存備份資料所需的磁碟空間。

若要排除電子信箱,請為 configutil 參數 local.store.backup.exclude 指定值。

您可以指定單一電子信箱或由「%」字元分隔的電子信箱清單。(「%」在電子信箱名稱中是非法字元。)例如,您可以指定以下值︰

Trash

Trash%Bulk Mail%Third Class Mail

在第一個範例中,排除了資料夾 Trash。在第二個範例中,排除了資料夾 TrashBulk MailThird Class Mail

備份公用程式將備份使用者電子信箱中除 local.store.backup.exclude 參數指定的資料夾之外的所有資料夾。

此功能可以與 Messaging Server 備份公用程式、Legato Networker 及協力廠商備份軟體配合使用。

您可以覆寫 local.store.backup.exclude 設定,並透過在作業期間指定其完整邏輯名稱來備份排除的電子信箱。假設已經排除 Trash 資料夾。您仍可以透過指定某些內容來備份 Trash,例如︰

/primary/user/user1/trash

但是如果您指定

/primary/user/user1

則排除 Trash 資料夾。

20.12.5 部分復原的注意事項

部分復原即僅復原郵件儲存的一部分。全部復原即復原整個郵件儲存。郵件儲存使用單一副本的郵件系統。也就是說,儲存中的任何郵件只會以單一檔案作一份副本。該郵件的任何其他實例 (如將郵件傳送至多個電子信箱的時間) 將以連結的方式儲存在此副本中。因此,在復原郵件時會有些額外的麻煩。例如:

以下範例會展示在執行部分復原時系統會如何處置由多個使用者共用的郵件。假設有三個相同的郵件,分屬 A、B 和 C 三個使用者,如下所示:


A/INBOX/1
B/INBOX/1
C/INBOX/1

範例 1. 在此範例中,系統將執行部分備份和完全復原程序,如下所示:

  1. 備份使用者 B 和 C 的電子信箱。

  2. 刪除使用者 B 和 C 的電子信箱。

  3. 復原步驟 1 中的備份資料。

在此範例中,B/INBOX/1C/INBOX/1 均被指定了新的 I 節點號碼,並且郵件資料被寫入磁碟上的新位置。被復原的郵件只有一個;第二個郵件只是第一個郵件的強制連結。

範例 2. 在此範例中,系統將執行完整備份和部分復原,如下所示:

  1. 執行完整備份。

  2. 刪除使用者 A 的電子信箱。

  3. 復原使用者 A 的電子信箱。

為 A/INBOX/1 指定了一個新的 I 節點號碼。

範例 3. 在此範例中,部分復原可能需要嘗試多次:

  1. 執行完整備份。

    B/INBOX/1C/INBOX/1 均以 A/INBOX/1 連結的方式備份下來。

  2. 刪除使用者 A 和 B 的電子信箱。

  3. 復原使用者 B 的電子信箱。

    復原公用程式會要求管理員先復原 A/INBOX

  4. 復原使用者 A 和 B 的電子信箱。

  5. 刪除使用者 A 的電子信箱 (可選擇的)。


    備註 –

    若要確定所有部分復原的郵件均已復原,您可以執行附有 -i 選項的 imsbackup 指令。如有需要,-i 選項會多次備份每封郵件。

    如果備份裝置是可搜尋式的,(例如:磁碟機或磁帶),imsrestore 將搜尋 A/INBOX/1 所在的位置,並將其復原為 B/INBOX/1。如果備份裝置是不可搜尋式的 (例如:UNIX 管道),imsrestore 將記錄物件 ID 和檔案的相依 (連結) 物件之 ID,然後管理員必須再次呼叫帶有 -r 選項的 imsrestore,以復原遺漏的郵件參照。


20.12.5.1 復原已增量備份的電子信箱中的郵件

若要復原已經增量備份的電子信箱中之郵件,同時該電子信箱存在於您希望復原郵件的伺服器上,則復原郵件時只需直接執行 imesrestore 即可。但是如果您希望復原已經增量備份的電子信箱中的郵件,而電子信箱已不存在,則必須執行其他復原程序。

請使用以下程序之一將郵件復原至郵件儲存伺服器上不存在的電子信箱︰

復原增量備份必須按照這些說明的原因如下︰如果已刪除電子信箱或正在遷移電子信箱,imsrestore 公用程式會使用備份歸檔檔案中儲存的電子信箱唯一識別有效性和郵件唯一識別 (UID) 重新建立該電子信箱。

過去,imsrestore 重新建立刪除的或已遷移的電子信箱時,它會指定新的電子信箱 UID 有效性和新的郵件 UID。在此情況下,具有快取郵件的用戶端必須重新同步化電子信箱 UID 有效性和郵件 UID。用戶端必須再次下載新的資料,這將增加伺服器的工作負荷量。

在新的 imsrestore 運作方式下,仍會同步化用戶端快取,而復原程序透明作業,對效能無負面影響。

如果電子信箱存在,則 imsrestore 指定新的 UID 給已復原的郵件,以便新的 UID 與為現有郵件指定的 UID 保持一致。為確保 UID 一致,imsrestore 會在復原作業期間鎖定電子信箱。但是,因為 imsrestore 現在使用備份歸檔檔案中的電子信箱 UID 有效性和郵件 UID,而不是指定新的 UID 值,所以如果執行增量備份和復原,則 UID 可能會不一致。

若使用 imsbackup 公用程式的 -d 日期選項執行增量備份,則必須多次呼叫 imsrestore 才能完成復原作業。如果已執行增量備份,您必須復原最新的完整備份和所有後續增量備份。

復原作業期間可以將新的郵件投遞至電子信箱,但這樣可能造成郵件 UID 不一致。若要避免 UID 不一致,您需要執行上述動作中的一項。

20.12.6 使用 Legato Networker

Messaging Server 包含可提供使用協力廠商備份工具 (如 Legato Networker) 介面的備份 API。郵件儲存的實體結構和資料格式均被壓縮在備份 API 中。備份 API 將直接與郵件儲存互動。備份 API 將郵件儲存抽象化,轉成備份服務可以理解的邏輯形式。備份服務就使用此郵件儲存的概念形式來儲存和擷取備份物件。

Messaging Server 可提供一個應用程式特定模組 (ASM),此模組可由 Legato Networker 的 saverecover 指令呼叫,以備份及復原郵件儲存資料。然後,ASM 將呼叫 Messaging Server 的 imsbackupimsrestore 公用程式。


備註 –

本節提供有關如何將 Legato Networker 與 Messaging Server 郵件儲存配合使用的資訊。若要瞭解 Legato Networker 介面,請參閱 Legato 說明文件。


Procedure使用 Legato Networker 備份資料

  1. 建立從 /usr/lib/nsr/imsasmmsg-srv-base/lib/msg/imsasm 的符號連結

  2. 從 Sun 或 Legato 取得 nsrfile 的二進位檔副本,然後將其複製到以下目錄:

    /usr/bin/nsr

    請注意僅在使用舊版 Networker (5.x) 時才需要此操作。如果使用的是 Networker 6.0 及更高版本,nsrfile 會自動安裝在 /usr/bin/nsr 中。

  3. 如果您要依群組來備份使用者,請執行以下步驟:

    1. 按照20.12.2 建立備份群組中的說明建立備份群組

    2. 若要驗證您的配置,請執行 mkbackupdir.sh

      查看由 mkbackupdir.sh 建立的目錄結構。該結構應與表 20–4 中所示的結構類似。

      請注意,如果您未指定 backup-groups.conf 檔案,備份程序將對所有使用者均使用預設備份群組 ALL

  4. /nsr/res/ 目錄中,為您的 save 群組建立一個 res 檔案,以在備份前呼叫 mkbackupdir.sh 程序檔。如需範例,請參閱表 20–4


    備註 –

    在早期版本的 Legato Networker 中,save 集名稱有 64 個字元的限制。如果此目錄的名稱加上電子信箱的邏輯名稱 (例如,/primary/groupA/fred),長度超過 64 個字元,則您必須執行 mkbackupdir.sh -p。因此,您在執行 mkbackupdir.sh-p 選項時應使用短路徑名稱。例如,以下指令將在 /backup 目錄下建立備份影像:

    mkbackupdir.sh -p /backup

    重要事項:郵件儲存所有者 (例如mailsrv)。


    表 20–6 顯示備份群組目錄結構範例。


    /backup/primary/groupA/amy
                          /bob
                          /carly
                   /groupB/mary
                          /nancy
                          /zelda
                   /groupC/123go
                          /1bill
                          /354hut

    以下範例顯示 /nsr/res 目錄中名為 IMS.resres 檔案範例:


    type: savepnpc;
    precmd: "echo mkbackupdir started",
       "/usr/siroe/server5/msg-siroe/bin/mkbackupdir.sh -p /backup";
    pstcmd: "echo imsbackup Completed";
    timeout: "12:00 pm";
    
                         

    現在您便可以按以下方法執行 Legato Networker 介面:

  5. 如有需要,請建立 Messaging Server save 的群組。

    1. 執行 nwadmin

    2. 選取 [自訂] | [群組] | [建立]。

  6. savepnpc 用做備份指令,建立一個備份用戶端:

    1. 將 save 集設定到 mkbackupdir 建立的目錄中。

      對於單一階段作業備份,請使用 /backup

      對於平行備份,請使用 /backup/server/group

      確保您已按照20.12.2 建立備份群組中的定義建立 group

      您還必須設定平行的備份階段作業的數目。

      請參閱使用 Legato Networker 備份資料

  7. 選取 [群組控制] | [啟動],以測試您的備份配置。

    範例。在 Networker 中建立 A 備份用戶端:

    在 Networker 中建立備份用戶端。請從 nwadmin 中選取 [用戶端] | [用戶端設定] | [建立]


    Name: siroe
    Group: IMS
    Savesets:/backup/primary/groupA
       /backup/secondary/groupB
       /backup/tertiary/groupC
             .
             .
    Backup Command:savepnpc
    Parallelism: 4
    
                         

20.12.6.1 使用 Legato Networker 復原資料

若要回復資料,您可以使用 Legato Networker 的 nwrecover 介面或 recover 指令行公用程式。以下範例將回復使用者 al 的收件匣:

recover -a -f -s siroe /backup/siroe/groupA/a1/INBOX

下一個範例將回復整個郵件儲存:

recover -a -f -s siroe /backup/siroe

20.12.7 使用協力廠商備份軟體 (包括 Legato)

Messaging Server 提供了兩個郵件儲存備份解決方案,即指令行 imsbackup 與 Solstice Backup (Legato Networker)。對於大型郵件儲存,執行單一 imbackup 來備份整個郵件儲存將花費大量時間。Legato 解決方案支援在多個備份裝置上同時執行備份階段作業。同步備份可以大幅縮減備份時間 (備份速度可達每小時 25GB)。

如果使用其他協力廠商同步運作備份軟體 (例如,Netbackup),您可以使用以下方法來整合您的備份軟體和 Messaging Server。

Procedure使用協力廠商備份軟體 (包括 Legato)

  1. 將您的使用者分成群組 (請參閱20.12.2 建立備份群組),並在目錄 msg-svr-base/config/ 下建立 backup-groups.conf 檔案。


    備註 –

    此備份方案需要額外的磁碟空間。若要同步備份所有群組,磁碟空間必須是郵件儲存容量的兩倍。如果您沒有足夠的磁碟空間,請將使用者分為多個較小的群組,然後一次備份一組群組。例如 group1 - group5、group6 - group10。在備份完成後移除群組資料檔案。


  2. 執行 imsbackup 以將每個群組備份到展示區的檔案中。

    指令為 imsbackup -f <device> /<instance>/<group>

    您可以同時執行多個 imsbackup 程序。例如:


    # imsbackup -f- /primary/groupA > /bkdata/groupA &
    # imsbackup -f- /primary/groupB > /bkdata/groupB & 
    . . .

    imsbackup 不支援大型檔案,如果備份資料超過 2 GB,您就需要使用 -f- 選項將資料寫入 stdout,然後再將輸出導入檔案中。

  3. 使用您的協力廠商備份軟體來備份展示區中的群組資料檔案 (在範例中為 /bkdata)。

  4. 若要復原使用者,請先找出使用者所屬的群組檔案名稱,從磁帶上復原該檔案,然後使用 imsrestore 從資料檔案中復原該使用者。

    請注意,imsrestore 不支援大型檔案。如果資料檔案超過 2GB,請使用以下指令:

    # cat /bkdata/groupA | imsrestore -f- /primary/groupA/andy

20.12.8 備份和復原問題疑難排解

本小節說明常見備份和復原問題及其解決方案。

20.12.9 郵件儲存災難備份與回復

相對於一個或一組電子信箱的失效,災難是指整個郵件儲存的災難性失敗。即郵件儲存伺服器上的所有資料均遺失的情況。完整的郵件儲存災難復原將包括復原以下遺失的資料︰

若要備份「郵件儲存」以供日後災難回復之用,您可以使用檔案系統快照工具擷取檔案系統的快照。此快照必須時間點檔案系統快照。否則將無法使用 mboxlist 備份 (必須從完整的資料庫快照復原 mboxlist 資料庫)。

所有資料 (郵件儲存分割區、資料庫檔案等) 最好都能在相同的時間點擷取,但若無法這麼做,即必須以下列順序備份資料:

  1. 資料庫快照

  2. 資料庫檔案

  3. 郵件儲存分割區

  4. 配置資料

若郵件儲存分割區與資料庫檔案未以相同的時間點進行快照備份,請在復原檔案系統快照後執行 reconstruct -m。如此將可同步化資料庫與儲存分割區。

20.13 監視使用者存取

Messaging Server 提供指令 imsconnutil,可讓您監視使用者透過 IMAP、POP 和 HTTP 的郵件儲存進行存取。您還可以確定使用者的最後登入和登出情況。該指令作用的對象是單一郵件儲存,它無法跨多個郵件儲存作業。


備註 –

如果使用此功能或其他 Messaging Server 功能監視、讀取或存取使用者的電子郵件,違反法律或規章,或違反客戶自己的政策或協議,則可能要承擔潛在責任。


該指令要求系統使用者擁有超級使用者權限 (預設:mailsrv),並且您必須將配置變數 local.imap.enableuserlistlocal.http.enableuserlist local.enablelastaccess 設定為 1。

若要列出目前經由 IMAP 或其他 Web 郵件用戶端登入的使用者,請使用以下指令:

# imsconnutil -c

若要列出每個使用者對郵件儲存的上一次 IMAP、POP 或 Messenger Express 存取 (登入與登出),請使用下列指令:

# imsconnutil -a

以下指令將執行兩項作業:1) 確定指定使用者目前是透過 IMAP、Messenger Express 還是透過 mshttp (請注意,無法用於 POP,因為 POP 使用者通常不會保持連線) 連線的任何用戶端登入,2) 列出使用者上一次登入和登出的時間:

# imsconnutil -c -a -u user_ID

請注意,使用以下指令可以從檔案輸入使用者清單 (每行一位使用者):

# imsconnutil -c -a -f filename

您還可以使用 -s 旗標來指定特定服務 (imaphttp)。例如,若要列示特定使用者 ID 是否登入 IMAP,請使用以下指令:

# imsconnutil -c -s imap -u user_ID

請注意,只有在配置 IMAP IDLE 時,-k 選項才會發生作用。如需 imsconnutil 語法的完整說明,請參閱「Sun Java System Messaging Server 6.3 Administration Reference」中的「imsconnutil」

以下是某些輸出範例:


$ ./imsconnutil -a -u soroork

UID     IMAP last access    HTTP last access    POP last access
=========================================================================
ed   08/Jul/2003:10:49:05   10/Jul/2003:14:55:52  ---NOT-RECORDED---

$ ./imsconnutil -c

IMAP
UID    TIME                AUTH            TO                 FROM
===========================================================================
ed   17/Jun/2003:11:24:03  plain     172.58.73.45:193   129.157.12.73:2631
bil  17/Jun/2003:04:28:43  plain     172.58.73.45:193   129.158.16.34:2340
mia  17/Jun/2003:09:36:54  plain     172.58.73.45:193   192.18.184.103:3744
jay  17/Jun/2003:05:38:46  plain     172.58.73.45:193   129.159.18.123:3687
pau  17/Jun/2003:12:23:28  plaintext 172.58.73.45:193   192.18.194.83:2943
ton  17/Jun/2003:05:38:46  plain     172.58.73.45:193   129.152.18.123:3688
ani  17/Jun/2003:12:26:40  plaintext 172.58.73.45:193   192.18.164.17:1767
ani  17/Jun/2003:12:25:17  plaintext 172.58.73.45:193   129.150.17.34:3117
jac  17/Jun/2003:12:26:32  plaintext 172.58.73.45:193   129.150.17.34:3119
ton  17/Jun/2003:12:25:32  plaintext 172.58.73.45:193   192.18.148.17:1764
===========================================================================
10 users were logged in to imap.
Feature is not enabled for http.
---------------------------------------------------------------------------

20.14 郵件儲存的疑難排解

本節提供有效維護郵件儲存的準則。此外,本節還說明當郵件儲存損毀或意外關閉時您可以使用的其他郵件儲存回復程序。請注意,有關這些附加郵件儲存復原程序的小節是20.14.3 修復電子信箱和電子信箱資料庫的擴充內容。

極力建議您在閱讀本小節之前,先閱讀該章以及 Sun Java System Messaging Server Administration Reference 中有關指令行公用程式和 configutil 的章節。本節涵蓋以下主題:

20.14.1 郵件儲存的標準監視程序

本節概述郵件儲存的標準監視程序。對於郵件儲存的一般檢查、測試和標準維護作業來說,這些程序很有幫助。

如需附加資訊,請參閱27.7 監視郵件儲存

20.14.1.1 檢查硬體空間

郵件儲存應有足夠的附加磁碟空間與硬體資源。若郵件儲存已接近磁碟空間及硬體空間的上限,在郵件儲存內可能會出現問題。

磁碟空間不足是導致郵件伺服器問題和故障的最常見原因之一。若沒有空間可供寫入郵件儲存,郵件伺服器將當機。此外,當可用磁碟空間低於特定臨界值時,將出現與郵件遞送和記錄等相關的問題。如果 stored 程序的清除功能失敗,無法從郵件儲存中永久刪除已刪除的郵件,則磁碟空間將立即耗盡。

如需有關監視磁碟空間的資訊,請參閱20.11.5 監視磁碟空間27.7 監視郵件儲存

20.14.1.2 檢查記錄檔

檢查記錄檔,確保郵件儲存程序按配置執行。Messaging Server 可為每個主要協定或服務建立一組單獨的記錄檔,它支援:SMTP、IMAP、POP 和 HTTP。您可以查看位於 msg-svr-base/log/ 目錄中的記錄檔。您應定期監視記錄檔。

請注意記錄會影響伺服器效能。您指定的記錄詳細度越高,您的記錄檔在指定時間內佔用的磁碟空間就越大。您應為伺服器定義有效可行的記錄旋轉策略、過期策略和備份策略。如需有關定義伺服器記錄策略的資訊,請參閱第 25 章, 管理記錄

20.14.1.3 使用遙測檢查使用者 IMAP/POP/Webmail 階段作業

Messaging Server 提供名為遙測的功能,可將使用者的整個 IMAP、POP 或 HTTP 階段作業擷取至檔案。該功能對於除錯用戶端問題十分有用。例如,如果使用者抱怨他們的郵件存取用戶端無法按預期作業,就可以使用此功能來追蹤存取用戶端和 Messaging Server 之間的互動。

若要擷取 POP 階段作業,請建立下列目錄:

msg-svr-base/data/telemetry/ pop_or_imap_or_http/userid

若要擷取 POP 階段作業,請建立下列目錄:

msg-svr-base/data/telemetry/pop/userid

若要擷取 IMAP 階段作業,請建立下列目錄:

msg-svr-base/data/telemetry/imap/userid

若要擷取 Webmail 階段作業,請建立下列目錄:

msg-svr-base/data/telemetry/http/userid

請注意,目錄必須為 Messaging Server 使用者 ID 所擁有,或可供其寫入。

Messaging Server 將在該目錄中為每個階段作業建立一個檔案。輸出範例如下所示。


LOGIN redb 2003/11/26 13:03:21
>0.017>1 OK User logged in
<0.047<2 XSERVERINFO MANAGEACCOUNTURL MANAGELISTSURL MANAGEFILTERSURL
>0.003>* XSERVERINFO MANAGEACCOUNTURL {67}
http://redb@cuisine.blue.planet.com:800/bin/user/admin/bin/enduser 
MANAGELISTSURL NIL MANAGEFILTERSURL NIL
2 OK Completed
<0.046<3 select "INBOX"
>0.236>* FLAGS (\Answered flagged draft deleted \Seen $MDNSent Junk)
* OK [PERMANENTFLAGS (\Answered flag draft deleted \Seen $MDNSent Junk \*)]
* 1538 EXISTS
* 0 RECENT
* OK [UNSEEN 23]
* OK [UIDVALIDITY 1046219200]
* OK [UIDNEXT 1968]
3 OK [READ-WRITE] Completed
<0.045<4 UID fetch 1:* (FLAGS)
>0.117>* 1 FETCH (FLAGS (\Seen) UID 330)
* 2 FETCH (FLAGS (\Seen) UID 331)
* 3 FETCH (FLAGS (\Seen) UID 332)
* 4 FETCH (FLAGS (\Seen) UID 333)
* 5 FETCH (FLAGS (\Seen) UID 334)
<etc>

若要停用遙測記錄,請移動或移除您先前建立的目錄。

20.14.1.4 檢查 stored 程序

stored 功能可執行多種重要作業,如郵件資料庫的死結和作業事件、實作時效策略以及永久刪除及清除磁碟上儲存的郵件。如果 stored 停止執行,將導致 Messaging Server 出現問題。如果 stored 未在 start-msg 執行時啟動,則其他程序均不會啟動。

表 20–12 stored 作業

stored 作業 

功能 

stored.ckp

在資料庫檢查點初始化時更新。大約每 1 分鐘標記一次。 

stored.lcu

在清理每個資料庫記錄時更新。大約每 5 分鐘標記一次時間。 

stored.per

在進行每個使用者的資料庫寫出時更新。每小時標記一次時間。 

如需有關 stored 程序的更多資訊,請參閱「Sun Java System Messaging Server 6.3 Administration Reference」中的20.11.6 stored 常駐程式一章。

如需有關監視 stored 功能的附加資訊,請參閱27.7 監視郵件儲存

20.14.1.5 檢查資料庫記錄檔

資料庫記錄檔參照不活躍的作業事件檢查點記錄檔 (位於目錄 store_root/mboxlist 中)。如果記錄檔累積,將不會產生資料庫檢查點。一般說來,總會有兩個或三個資料庫記錄檔同時存在。如果檔案較多,可能是發生問題的徵兆。

20.14.1.6 檢查使用者資料夾

若要檢查使用者資料夾,您可以執行指令 reconstruct -r -n (遞迴不會修正),該指令可檢閱任何使用者資料夾並報告錯誤。如需有關 reconstruct 指令的更多資訊,請參閱20.14.3 修復電子信箱和電子信箱資料庫

20.14.1.7 檢查核心檔案

只有在程序出現非預期終止時,才會有記憶體檔案。查看這些檔案非常重要,特別是當您發現郵件儲存中存在問題的時候。在 Solaris 上,請使用 coreadm 來配置 core 檔案的位置。

20.14.2 郵件儲存的啟動與回復

郵件儲存的資料由郵件、索引資料以及郵件儲存資料庫共同組成。儘管該資料非常牢固,系統中仍可能會出現郵件儲存資料的問題,但這種情況很少發生。這些問題都可以從預設記錄檔中察覺,而且幾乎總是可以修正於無形。在極少數情況下,記錄檔中的錯誤訊息會指出您需要執行 reconstruct 公用程式。此外,做為最後一次復原,郵件會受20.12 備份和復原郵件儲存中說明的備份和復原程序保護。本節的內容將著重於 stored 的自動啟動與回復程序。

郵件儲存將許多原本屬於管理員職責的回復作業都予以自動化。這些作業由郵件儲存常駐程式 stored 在啟動過程中執行,還包含資料庫快照和根據需要自動快速復原。stored 會徹底檢查郵件儲存的資料庫,並且在偵測到問題時自動啟動修復。

stored 還提供資料庫狀態的綜合分析,包括使用預設記錄的狀態訊息、報告對郵件儲存進行的修復,以及嘗試自動恢復作業等。

20.14.2.1 自動啟動和回復—作業原理

stored 常駐程式將在其他郵件儲存程序之前啟動。它將初始化郵件儲存資料庫,必要時也會回復該資料庫。郵件儲存資料庫中包含有資料夾、配額、訂閱以及郵件旗標等資訊。資料庫可以記錄和作業,因此已經內建回復功能。此外,還會在每個資料夾的郵件索引區域中複製資料庫資訊,做為備用。

雖然資料庫非常穩定,仍可能會偶爾發生損毀,但在大多數情況下,stored 可以透明地回復並修復資料庫。但是,只要 stored 重新啟動,您就應該檢查預設記錄檔,以確定系統不需要額外的管理介入。若資料庫需要進一步重建,記錄檔中的狀態訊息會要求您執行 reconstruct

開啟郵件儲存資料庫之前,stored 會分析資料庫的完整性,並將狀態訊息傳送到 warning 類別下的預設記錄中。某些訊息對管理員很有用,某些訊息則包含已編碼的資料,可供內部分析之用。如果 stored 偵測到任何問題,它將嘗試修正並再次啟動資料庫。

當資料庫開啟後,stored 會通知其餘服務可以啟動。如果自動修復失敗,預設記錄中的郵件將指出應採取何種動作。請參閱表示需執行 reconstruct 的錯誤訊息

在舊版中,stored 可能會啟動極為耗時的回復程序,使得管理員常需擔心 stored 是否會「滯塞」。此類耗時的回復方式已被移除,stored 應可在一分鐘內決定最終狀態。但是,如果 stored 需要採用從快照回復之類的回復技術,該程序可能會多花費幾分鐘。

多數情況下,資料庫在回復後都可以恢復運作不需再做其他處置。然而,某些回復將需執行 reconstruct -m,以同步化郵件儲存中的備援資料。這也會記錄到預設記錄中,因此在啟動後監視預設記錄很重要。雖然郵件儲存看起來一切如常,但還是有必要執行 reconstruct 之類的作業。

查閱記錄檔的另一個原因是可以確定損害資料庫的真正元兇。雖然 stored 的設計目的就是要讓郵件儲存能在存在任何其他系統問題的情況下啟動,但您也許還是想查明資料庫損毀的原因,因為這可能是更大潛在問題的徵兆。

表示需執行 reconstruct 的錯誤訊息

本節說明需執行 reconstruct 的錯誤訊息類型。

當錯誤訊息指出電子信箱錯誤時,請執行 reconstruct <mailbox>。範例:

"Invalid cache data for msg 102 in mailbox user/joe/INBOX. Needs reconstruct"

"Mailbox corrupted, missing fixed headers: user/joe/INBOX"

"Mailbox corrupted, start_offset beyond EOF: user/joe/INBOX"

當錯誤訊息指出資料庫錯誤時,請執行 reconstruct -m。範例:

"Removing extra database logs. Run reconstruct -m soon after startup to resync redundant data"

"Recovering database from snapshot. Run reconstruct -m soon after startup to resync redundant data"

資料庫快照

快照是資料庫的最新備份,stored 可以用它在幾分鐘內透明地復原資料庫。這種方式比依賴其他區域中儲存的備援資訊來運作的 reconstruct 要快得多。

郵件儲存資料庫快照—作業原理

資料庫快照位於 mboxlist 目錄中,依預設每 24 小時自動取樣一次。依預設,快照會複製到 store 目錄的子目錄中。依預設,在任何指定時間,系統會保留五種快照:一個使用中的資料庫,三個快照以及一個資料庫/已移除的副本。已移除資料庫的副本較新,它是資料庫的緊急備用副本,存放於 mboxlist 資料庫目錄的 removed 子目錄下。

若回復程序確定目前資料庫已損毀並決定將其移除,則 stored 會將其移至 removed 目錄中 (如果可行)。這樣就可以根據需要對資料庫進行分析。

資料移動每週進行一次。如果已存在資料庫副本,stored 將不會在每次儲存啟動時替代資料庫副本。只有在 removed 目錄中的資料超過一週後,才會進行替代。這是為了防止原先有問題的資料庫在啟動成功後很快被取代。

指定郵件儲存資料庫快照的間隔與位置

所需空間至少是資料庫加上快照空間的五倍。極力建議管理員應重新配置快照以在單獨的磁碟上執行,並根據系統的需求進行調校。

如果 stored 在啟動時偵測到資料庫有問題,就會自動用最新的快照來回復。三個快照變數可以設定以下參數:快照檔案的位置、執行快照的間隔時間以及儲存的快照數目。這些 configutil 參數列於表 20–13 中。

如果快照的間隔時間太短,會對系統造成太多負擔並且資料庫中有問題的部分也很可能被複製到快照中。如果快照的間隔時間太長,會造成資料庫只能回復到當初快照時的狀態,中間的變動都會損失掉。

一般的建議是一天作一次快照,如果系統上的問題已存在數天之久,一週份或更多的快照會對回復很有幫助,因為您也許會想將系統復原到問題發生之前的狀態。

stored 會監視資料庫,並且當它懷疑資料庫有問題時,會拒絕使用最新的快照。然後它將擷取儘可能新的最可靠快照。雖然快照可能是一天前擷取的,但如果可用,系統還是會以較新的備援資料來覆寫較舊的快照資料。

因此快照的最終目的就是要取得系統最近的穩定狀態資料,以減輕系統在正常作業時重建資料的負擔。

表 20–13 郵件儲存資料庫快照的參數

參數 

說明 

local.store.snapshotpath

郵件儲存資料庫快照檔案的位置。可以是現有絕對路徑,也可以是相對於 store 目錄的路徑。

預設值:dbdata/snapshots

local.store.snapshotinterval

快照間隔的分鐘數。有效值:1 至 46080 

預設值:1440 (1440 分鐘 = 1天) 

local.store.snapshotdirs

所保留的不同版本快照的數目。有效值:2 至 367 

預設值:3 

20.14.3 修復電子信箱和電子信箱資料庫

如果有一個或多個電子信箱損毀,您可以使用 reconstruct 公用程式來重建電子信箱或電子信箱資料庫,並修復任何不一致問題。

reconstruct 公用程式可重建一或多個電子信箱,或主電子信箱檔案,並修復任何不一致的問題。您可以使用此公用程式從郵件儲存中任何一種資料損毀類型回復。請參閱表示需執行 reconstruct 的錯誤訊息

表 20–14 列出 reconstruct 選項。如需詳細的語法和使用需求,請參閱「Sun Java System Messaging Server 6.3 Administration Reference」中的「reconstruct」

表 20–14 reconstruct 選項

選項 

說明 

-e

重建前,移除 store.exp 檔案。這將消除尚未被儲存程序清除之已移除郵件的任何內部儲存記錄。它還有助於在使用 -i-e 時使用 -f 選項,因為這些選項僅在實際重建資料夾後運作。同樣,如果您使用 -n 選項 (執行檢查,而非重建),-i-e 選項不會運作。

如果 reconstruct 未偵測到損毀,則執行 reconstruct -e 將不會回復已移除郵件。-f 將強制重建。

-i

重建前將 store.idx 檔案長度設定為零。它還有助於在使用 -i-e 時使用 -f 選項,因為這些選項僅在實際重建資料夾後才運作。同樣,如果您使用 -n 選項 (執行檢查,而非重建),-i-e 選項不會運作。

-f

強制 reconstruct 執行電子信箱的修正。

-l

重建 lright.db

-m

執行一致性檢查並在需要的情況下修復電子信箱資料庫。此選項會檢查它在暫存區中找到的每個電子信箱,然後在電子信箱資料庫中適當地新增或移除項目。每當在資料庫中新增或移除項目時,此公用程式便會將訊息輸出到標準輸出檔案。明確而言,它會修正 folder.dbquota.dblright.db

-n

僅檢查郵件儲存而不執行電子信箱的修復作業。-n 選項不能單獨使用,除非提供電子信箱名稱。如果未提供電子信箱名稱,則必須將 -n 選項與 -r 選項配合使用。-r 選項可以與 -p 選項結合使用。例如,以下指令均有效:

reconstruct -n user/dulcinea/INBOX

reconstruct -n -r

reconstruct -n -r -p primary

reconstruct -n -r user/dulcinea/

-o

棄用,請參閱 mboxutil -o

-o -d filename

棄用,請參閱 mboxutil -o

-p partition

-p 選項與 -m 選項配合使用,並將重建的範圍限制在指定的分割區內。若未指定 -p 選項,reconstruct 會依預設處理所有分割區。明確而言,它會修正 folder.dbquota.db ,而非 lright.db。這是因為修正 lright.db 時,必須為郵件儲存中的每一名使用者掃描 ACL。對每個分割區執行此選項不會很有效。若要修正 lright.db,請執行 reconstruct -l

指定分割區名稱;不使用完整路徑名稱。 

-q

修復配額子系統中任何不一致的問題,如電子信箱的根配額錯誤或是報告的根配額使用率錯誤。-q 選項可在執行其他伺服器程序時執行。

-r [mailbox]

修復指定電子信箱的分割區並執行一致性檢查。-r 選項還可以修復指定電子信箱中的所有子電子信箱。如果您指定 -r 選項時沒有指定電子信箱引數,則此公用程式將修復使用者分割區目錄下的所有電子信箱暫存區。

-u user

-u 選項與 -m 選項配合使用,並將重建的範圍限制在指定的使用者。-u 選項必須與 -p 選項配合使用。如果未指定 -u 選項,reconstruct 會依預設處理所有分割區或處理使用 -p 選項指定的分割區。

指定使用者名稱;不使用完整路徑名稱。 

20.14.3.1 重建電子信箱

若要重建電子信箱,請使用 -r 選項。此選項的使用時機是:

reconstruct -r 會先執行一致性檢查。它會報告任何不一致的狀況,並僅在偵測到問題時才進行重建。因此,此發行版本已提昇了 reconstruct 公用程式的效能。

您可以按照以下範例中的說明使用 reconstruct

若要重建使用者 daphne 的電子信箱暫存區,請使用以下指令:

reconstruct -r user/daphne

重建電子信箱資料庫中列出的所有電子信箱的暫存區:

reconstruct -r

但是使用此選項時必須小心,因為對於大型郵件儲存來說,重建電子信箱資料庫中列出的所有電子信箱的暫存區會佔用很長時間。(請參閱20.14.3.3 重建效能。)較好的故障回復方式可能是將多個磁碟用於儲存。如果其中一個磁碟發生故障,也不致影響整個儲存。如果磁碟損毀,您只需使用 -p 選項重建一部分儲存,如下所示:

reconstruct -r -p subpartition

若要重建指令行引數中列出的、位於 primary 分割區的電子信箱:

reconstruct -p primary mbox1 mbox2 mbox3

如果您需要重建 primary 分割區中的所有電子信箱:

reconstruct -r -p primary

如果您要強制 reconstruct 重建資料夾而不執行一致性檢查,請使用 -f 選項。例如,以下指令會強制重建使用者資料夾 daphne

reconstruct -f -r user/daphne

若要只檢查所有電子信箱而不進行修正,請使用 -n 選項,如下所示:

reconstruct -r -n

20.14.3.2 檢查並修復電子信箱

執行電子信箱資料庫的高階一致性檢查和修復:

reconstruct -m

若要對主分割區執行一致性檢查和修復,請執行︰

reconstruct -p primary -m

備註 –

以 -P 執行重建。而 -m 旗標不會修正 lright.db。這是因為修正 lright.db 需要掃描郵件儲存中每個使用者的 ACL。對每個分割區執行此選項不會很有效。若要修正 lright.db,請執行 reconstruct -l。


若要對個別使用者的名為 john 的電子信箱執行一致性檢查和修復,請執行︰

reconstruct -p primary -u john -m

-m 選項的使用時機是:

20.14.3.3 重建效能

reconstruct 執行作業所花費的時間取決於以下因素:

reconstruct -r 選項會執行初始一致性檢查;該項檢查會根據需要重建的資料夾數目來提昇 reconstruct 的效能。

有大約 2400 名使用者的 85GB 郵件儲存伺服器 (同時有 POP、IMAP 或 SMTP 活動) 的系統具有以下效能:


備註 –

如果伺服器上沒有 POP、IMAP、HTTP 或 SMTP 活動正在執行,則 reconstruct 作業所需的時間會顯著減少。


20.14.4 常見問題與解決方案

本節列出郵件儲存的常見問題及解決方案:

20.14.4.1 Linux - Messaging Server 修補程式 120230-08,IMAP、POP 與 HTTP 伺服器因超出每個處理程序的階段作業數而無法啟動

安裝此修補程式後,當您嘗試啟動 Messaging Server 時,IMAP、POP 與 HTTP 伺服器無法啟動,並可能傳送類似如下的錯誤記錄:


http server - log:
[29/May/2006:17:44:37 +051800] usg197 httpd[6751]: General Critical: Not enough file 
descriptors to support 6000 sessions per process; Recommend ulimit -n 12851 or 87 
sessions per process.

pop server - log:
[29/May/2006:17:44:37 +051800] usg197 popd[6749]: General Critical: Not enough file 
descriptors to support 600 sessions per process; Recommend ulimit -n 2651 or 58 
sessions per process.

Once these values setting in /opt/sun/messaging/sbin/configutil then imap server 
failed to start

imap server - log: 
[29/May/2006:17:44:37 +051800] usg197 imapd[6747]: General Critical: Not enough 
file descriptors to support 4000 sessions per process; Recommend ulimit -n 12851 
or 58 sessions per process.

為這三個伺服器階段作業設定適當的檔案描述元數目。您可以在 /etc/sysctl.conf 中增加如下內容,並使用 sysctl -p 重新讀取該檔案,而使用其他檔案描述元:


fs.file-max = 65536

您也必須在 /etc/security/limits.conf 中增加如下內容:


*   soft  nofile  65536  
*   hard  nofile  65536

20.14.4.2 Messenger Express 或 Communications Express 未載入郵件頁面

若使用者無法載入任何 Messenger Express 頁面或 Communications Express 郵件頁面,可能是因為資料在壓縮之後遭到毀壞。如果系統部署了過期的代理伺服器,則有時可能會發生這種情況。若要解決此問題,請嘗試將 local.service.http.gzip.staticlocal.service.http.gzip.dynamic 設定為 0,以停用資料壓縮。如果此方法可以解決這個問題,您可能需要更新代理伺服器。

20.14.4.3 使用萬用字元式樣的指令失效

有些 UNIX shell 要求在萬用字元參數的前後加上引號,有些則不要求。例如,C shell 嘗試展開包含萬用字元 (*, ?) 做為檔案的引數,如果找不到相符項,則會失敗。這些與式樣相符的引數可能必須以引號括住,以傳遞至 mboxutil 之類的指令。

例如:

mboxutil -l -p user/usr44*

可在 Bourne shell 下執行,但在 tsch 和 C shell 下會失敗。這些 shell 的慣用格式是:

mboxutil -l -p "user/usr44*"

如果使用萬用字元式樣的指令無法執行,請檢驗您是否需要為該 shell 的萬用字元加上引號。

20.14.4.4 未知/無效的分割區

若使用者的電子信箱被移至剛建立的新分割區,且 Messaging Server 未更新或重新啟動,則該使用者將在 Messenger Express 中收到訊息「未知的/無效的分割區」。此問題只會發生在新分割區上。如果您現在向此新分割區增加其他使用者電子信箱,則必須重新整理/重新啟動 Messaging Server。

20.14.4.5 使用者電子信箱目錄的問題

若郵件儲存的損壞僅限於一小部分使用者,而未對系統造成全域損壞,表示使用者電子信箱有問題。以下使用準則提出了一套用於辨識、分析和解決使用者電子信箱目錄問題的程序:

  1. 復查記錄檔、錯誤訊息或使用者觀察到的任何不尋常行為。

  2. 若要保留除錯資訊及歷程,請將整個 store_root/mboxlist/ 使用者目錄複製到郵件儲存以外的其他位置。

  3. 若要找出可能導致問題的使用者資料夾,請執行 reconstruct -r -n 指令。若無法使用 reconstruct 找到資料夾,表示該資料夾可能不在 folder.db 中。

    若無法使用 reconstruct -r -n 指令找到資料夾,請使用 hashdir 指令確定該資料夾的位置。如需有關 hashdir 的更多資訊,請參閱20.11.2.3 hashdir 公用程式「Sun Java System Messaging Server 6.3 Administration Reference」中「Messaging Server Command-line Utilities」一章的 hashdir 公用程式。

  4. 如果找到該資料夾,請檢查檔案和權限並驗證檔案大小是否正確。

  5. 使用 reconstruct -r (不帶 -n 選項) 重建電子信箱。

  6. reconstruct 未偵測出您觀察到的問題,可以使用 reconstruct -r -f 指令強制重建郵件資料夾。

  7. 如果資料夾不在 mboxlist 目錄 (store_root/mboxlist) 中,而是在 partition 目錄 store_root/partition) 中,則可能存在全域不一致性。在這種情況下,您應執行 reconstruct -m 指令。

  8. 如果上一步驟不管用,您可以移除 store.idx 檔案,然後再次執行 reconstruct 指令。


    注意 – 注意 –

    如果您確定檔案中存在 reconstruct 指令無法發現的問題,則應僅移除 store.idx 檔案。


  9. 若只有一則問題郵件有此問題,您應將此郵件檔案複製到郵件儲存以外的其他位置,然後對 mailbox/ 目錄執行 reconstruct -r 指令。

  10. 如果您確定資料夾位於磁碟上 (store_root/partition/ 目錄),但顯然不在資料庫中 (store_root/mboxlist/ 目錄),請執行 reconstruct -m 指令來確保郵件儲存的一致性。

如需有關 reconstruct 指令的更多資訊,請參閱20.14.3 修復電子信箱和電子信箱資料庫

20.14.4.6 儲存常駐程式無法啟動

如果 stored 無法啟動,並傳回以下錯誤訊息:


# msg-svr-base/sbin/start-msg

msg-svr-base: Starting STORE daemon ...Fatal error: Cannot
find group in name service

這表示系統找不到 local.servergid 中配置的 UNIX 群組。Stored 及其他常駐程式需要將它們的 GID 設定為該群組。有時,由 local.servergid 定義的群組會被意外刪除。在這種情況下,請重建被刪除的群組,將 mailsrv 增加至群組,然後將 instance_root 及其檔案的所有權改授予 mailsrv 和該群組。

20.14.4.7 使用者郵件因電子信箱溢位而未遞送

郵件儲存的 store.idx 檔案有 2GB 的強制限制,即單一電子信箱 (資料夾) 約可容納一百萬則郵件。若電子信箱成長到一定大小而使 store.idx 檔案超出 2GB,使用者即收不到任何新的電子郵件。此外,包括 imapd、popd、mshttpd 等處理該電子信箱的其他處理程序,也可能出現效能下降的情形。

若產生此問題,mail.log_current 中將會顯示如下錯誤:

05-Oct-2005 16:09:09.63 ims-ms Q 7 ...System I/O error.Administrator, check server log for details.System I/O error.

此外,MTA 記錄檔將會顯示如下錯誤:

[05/Oct/2005:16:09:09 +0900] jmail ims_master[20745]:Store Error:Unable to append cache for user/admin:File too large

您可以查看使用者郵件儲存目錄中的檔案,或查看 imta 記錄檔取得更詳細的訊息,以判定此問題的發生原因。

最直接的因應動作是降低檔案大小。請刪除部分郵件,或將部分郵件移至其他電子信箱。您也可以使用 mboxutil -r 為資料夾重新命名,或使用 mboxutil -d 刪除資料夾 (請參閱20.11.2.1 mboxutil 公用程式)。

就長期而言,您必須讓使用者得知電子信箱大小限制、實作時效策略 (請參閱20.9 設定自動移除郵件 (過期和清除) 功能)、配額策略 (請參閱20.8 關於郵件儲存配額)、設定 local.store.maxmessages 以設定信箱限制 (請參閱「Sun Java System Messaging Server 6.3 Administration Reference」中的「configutil Parameters」)、設定歸檔系統,或執行適當作業以控制電子信箱大小。

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. 關閉舊系統。