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

第 18 章 管理郵件儲存

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

簡介

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

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

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

為管理郵件儲存,除 Sun Java System 主控台介面外,Messaging Server 還提供了一組指令行公用程式。表 18–1 說明了這些指令行公用程式。如需有關使用這些公用程式的資訊,請參閱執行郵件儲存的維護程序「Sun Java System Messaging Server 6 2005Q4 Administration Reference」

表 18–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

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

郵件儲存目錄配置

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

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

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

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

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

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

下表說明郵件儲存目錄。

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

位置 

內容/說明 

msg_svr_base

預設/opt/SUNWmsgsr

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

store_root

msg_svr_base/data/store

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

./store.expirerule

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

store_root/dbdata/snapshots

郵件儲存資料庫的備份快照。 

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/
or
.../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 目錄,再依此類推。

郵件儲存如何移除郵件

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

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

  2. 永久刪除。郵件會從電子信箱中移除。嚴格來講,只是將它們從郵件儲存的索引檔案 store.idx 中移除而已。郵件本身仍在磁碟上,但是一旦被永久刪除,用戶端便無法再回復郵件。

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

  3. 清除imexpire 公用程式預設會在每晚 11:00 清除磁碟上已被永久刪除的郵件。這可使用控制訊息過期排程的 local.schedule.expire,以及控制清除寬限期間 (清除訊息前的期間) 的 store.cleanupage 加以配置。請注意,這和清除舊版 MTA 記錄檔的 imsimta purge 指令不同。

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

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

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


備註 –

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


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

Procedure增加管理員項目

可以在主控台或透過指令行增加管理員。

步驟
  1. 從主控台開啟您要配置的 Messaging Server。

  2. 按一下 [配置] 標籤,然後在左側窗格中選取 [郵件儲存]。

  3. 按一下 [管理員] 標籤。

    標籤會包含一份現有管理員 ID 清單。

  4. 按一下 [管理員 UID] 視窗旁邊的 [新增] 按鈕。

  5. 在 [管理員 UID] 欄位中,鍵入您要新增的管理員的使用者 ID。

    您鍵入的使用者 ID 必須是 Sun Java System Directory Server 已知的帳號。

  6. 按一下 [確定] 將管理員新增至 [管理員] 標籤中顯示的清單。

  7. 按一下 [管理員] 標籤中的 [儲存] 以儲存新近修改的管理員清單。

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

    configutil -o store.admins -v " adminlist"

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

Procedure修改管理員項目

本小節說明如何在主控台修改郵件儲存管理員 UID 清單中的現有項目。

步驟
  1. 按一下 [管理員] 標籤。

  2. 按一下 [管理員 UID] 視窗旁邊的 [編輯] 按鈕。

  3. 在 [管理員 UID] 欄位中輸入您的變更。

  4. 按一下 [確定] 以提交您的變更並關閉 [編輯管理員] 視窗。

  5. 按一下 [管理員] 標籤中的 [儲存] 以提交並保留修改的管理員清單。

    指令行

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


    configutil -o store.admins -v "adminlist"

Procedure刪除管理員項目

可以在主控台或透過指令行刪除管理員。

步驟
  1. 按一下 [管理員] 標籤。

  2. 在管理員 UID 清單中選取一個項目。

  3. 按一下 [刪除] 以刪除該項目。

  4. 按一下 [儲存] 以將您的變更提交並保留在管理員清單中。

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


    configutil -o store.admins -v "adminlist"

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

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

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


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

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

關於共用資料夾

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

carol.fanning+crafts_club@siroe.com

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

使用者的共用資料夾儲存於名為 Shared Folders/Users 的郵件資料夾中。使用者可以在此郵件資料夾中建立並存取共用資料夾。在關於共用資料夾中列舉了一個範例。

圖 18–2 Ed 的共用郵件資料夾清單之郵件用戶端範例

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

共用資料夾有兩種類型:

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

共用資料夾作業

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

Procedure建立公用資料夾

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

步驟
  1. 建立 LDAP 使用者項目,並將其命名為 public,以用為所有公用資料夾的容器 (請參閱關於共用資料夾)。

    範例:


    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. 指定使用者及其對該共用資料夾的存取權限。

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

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

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

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

通常使用 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 的詳細說明,請參閱設定或變更共用資料夾的存取控制權限

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

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

readership -s foldername identifier rights_chars

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


備註 –

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


表 18–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)

範例

如果您希望 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 指令。請參閱設定或變更共用資料夾的存取控制權限


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

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

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

設定分散式共用資料夾

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

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

必須透過設定表 18–4 中列出的配置變數,將遠端郵件儲存 (不擁有共用資料夾的郵件儲存) 配置為代理伺服器。

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

名稱 

值 

資料格式 

local.service.proxy.serverlist

郵件儲存伺服器清單 

以空格分隔的字串 

local.service.proxy.admin

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

字串 

local.service.proxy.adminpass

預設的儲存管理員密碼 

字串 

local.service.proxy.admin.hostname

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

字串 

local.service.proxy.adminpass.hostname

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

字串 

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

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

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

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

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


$ StoreServer1 :> readership -l
Ed: user/Han/golf 
Ian: user/Han/golf 
anyone: user/public/press_releases

            

$ StoreServer2 :> readership -l
Jan: user/Kat/tennis
Ann: user/Kat/tennis
anyone: user/public+Announcements user/public+press_releases

            

$ StoreServer3 :> readership -l
Tuck: user/Ian/hurling
Ed: user/Ian/hurling 
Jac: user/Ian/hurling 
anyone: user/public/Announcements

            

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

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

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

表 18–5 readership 選項

選項 

說明 

-d days

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

-p months

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

-l

列出 lright.db 中的資料。

-s folder_identifier_rights

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

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

監視共用資料夾的使用

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

readership -d days

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

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

readership -d 30

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

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

readership -l

輸出範例:

$ readership -l
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

移除未使用的使用者

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

readership -p months

其中 months 是要檢查的月數。

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

readership -p 6

設定存取權

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

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

關於郵件儲存配額

郵件儲存配額是一種設定使用者或網域可使用之磁碟空間或郵件數目的限制或配額的方法。本節包含以下資訊:

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

使用者配額

您可依磁碟空間或郵件數目指定使用者配額。磁碟空間配額為每個使用者指定磁碟空間容量 (以位元組為單位)。磁碟配額可套用至所有使用者郵件的總容量,無論該使用者擁有多少個郵件資料夾,也無論使用者郵件的總數是多少。郵件配額可讓您限制儲存在使用者電子信箱中的郵件數目。

配額資訊儲存在使用者 LDAP 屬性 (表 18–6) 和 configutil 變數 (表 18–7) 中。(如需最新的完整資訊,請參閱「Sun Java System Communications Services 6 2005Q4 Schema Reference」。)除設定配額自身外,Messaging Server 還可讓您控制下列功能:

網域配額

如同為使用者設定配額,也可依位元組數目或郵件數目為網域設定配額。該配額針對特定網域中所有使用者的所有累積位元組或郵件。

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

為了使郵件傳送需求一致,Messaging Server 提供一種特殊功能,可以置換郵件儲存施加的配額限制。這可確保遞送某些代理程式 (即電話應用程式伺服器 [TAS]) 接受的郵件。由 TAS 接受的郵件可通過特殊的 MTA 通道路由,以確保郵件投遞至儲存中,而不受配額的限制。如需有關配置 TAS 通道的更多資訊,請參閱第 12 章, 配置通道定義

郵件儲存配額屬性和參數

本小節包含郵件儲存配額屬性和參數。如需有關這些屬性和參數的詳細資訊,請參閱「Sun Java System Communications Services 6 2005Q4 Schema Reference」

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

屬性 

說明 

郵件配額

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

0 - 不允許使用者電子信箱使用任何空間。 

–1 - 允許無限制地使用空間。 

-2 - 使用系統預設配額。(configutil 參數 store.defaultmailboxquota)

mailMsgQuota

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

0 - 不允許使用者電子信箱有郵件 

-1 - 允許有無限多的郵件。 

-2 - 使用系統預設配額。(configutil 參數 store.defaultmessage.quota。)

mailUserStatus

郵件使用者的狀態。可以是以下值之一: 

active - 正常處理郵件。預設為 active。

inactive - 使用者的郵件帳號處於非使用中。傳回暫態失敗。

deleted - 帳號被標記為已刪除並準備清除。傳回永久性失敗。封鎖對電子信箱的存取。

hold - 郵件被傳送至保留佇列,且不允許存取電子信箱

overquota - 在此狀態下,MTA 不會將郵件傳送至電子信箱。此為 configutil 參數 store.overquotastatus 為 on 時設定的狀態。

mailDomainDiskQuota

網域中所有電子信箱的累積計數所允許的磁碟空間位元組。-1 值為表示不限制使用空間。(預設) 若要強制網域磁碟配額,請執行指令:imquotacheck -f -d domain

mailDomainMsgQuota

對網域所允許的最大郵件數目,即儲存中所有電子信箱的郵件總計數。值為 -1 表示沒有限制。(預設)。若要強制網域郵件配額,請執行指令:imquotacheck -f -d domain

mailDomainStatus

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

表 18–7 郵件儲存 configutil 參數

參數 

說明 

store.quotaenforcement

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

store.quotanotification

啟用配額通知。預設:On 

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 

配置郵件儲存配額

本節說明以下作業:

Procedure指定預設使用者配額

可透過主控台或指令行設定可套用至未設定個人配額之使用者的預設配額。

步驟
  1. 按一下 [配置] 標籤,然後在左側窗格中選取 [郵件儲存]。

  2. 按一下 [配額] 標籤。

  3. 若要指定預設使用者磁碟配額,請在 [預設使用者磁碟配額] 欄位中,選取以下其中一個選項:

    無限制。如果您不想設定預設磁碟配額,請選取此項。

    大小規格。如果您要將使用者的預設磁碟配額限制在特定範圍內,請選取此項。在按鈕旁邊的欄位中鍵入一個數字,然後從下拉式清單中選擇 [KB] 或 [MB]。

  4. 若要指定郵件數目配額,請在 [預設使用者郵件配額] 方塊中鍵入一個數字。

  5. 按一下 [儲存]。

  6. 在使用預設郵件儲存配額的使用者項目中,將 Mbytes 屬性設定為 -1

    指令行

    使用指令行指定預設使用者配額:

    為郵件的總容量指定使用者的預設磁碟配額:

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

    其中,-1 表示無配額;number 表示位元組的數目。

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

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

    其中,-1 表示無配額;number 表示郵件的數目。

    在使用預設郵件儲存配額的使用者項目中,將 mailQuota 屬性設定為 -2。請參閱表 18–6

指定個別使用者配額

每個使用者均可擁有個人化的配額。若要設定使用者特定配額,請在使用者 LDAP 項目中設定 mailQuotamailmsgquota 屬性。(請參閱表 18–6。)若要強制執行配額,請將 configutil store.quotaenforcement 設定為 on

指定網域配額

您可以為特定網域設定磁碟空間配額或郵件配額。這些配額針對特定網域中所有使用者的累積位元組或郵件。若要設定網域配額,請在使用者 LDAP 項目中設定 mailDomainDiskQuotamailDomainMsgQuota 屬性 (請參閱表 18–6) 並執行 imquotacheck -f

部署配額通知

配額通知是在使用者接近配額時,向使用者傳送警告訊息的程序。使用此功能需要以下三個程序:

Procedure啟用配額通知

可透過主控台或指令行啟用配額通知。

步驟
  1. 按一下 [配額] 標籤。

  2. 核取 [啟用配額通知] 方塊。若要停用配額通知,請取消核取此方塊。

  3. 定義配額警告訊息。請參閱定義配額警告訊息

  4. 按一下 [儲存]。

    指令行

    使用指令行啟用或停用配額通知:

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

    如果未設定郵件,則不會向使用者傳送配額警告訊息。請參閱下一節,以取得配額警告郵件格式的範例。

Procedure定義配額警告訊息

您可以使用以下方法定義將傳送給要超出磁碟配額之使用者的郵件。郵件會傳送至使用者的電子信箱。

步驟
  1. 按一下 [配額] 標籤。

  2. 從下拉式清單中選擇要使用的語言。

  3. 在下拉式清單下面的郵件文字欄位中鍵入您要傳送的郵件。

  4. 按一下 [儲存]。

    指令行

    使用指令行定義配額警告郵件:

    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’

    定義傳送警告郵件的頻率:

    configutil -o store.quotaexceededmsginterval -v number

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

Procedure指定配額臨界值

配額臨界值是在向用戶端傳送警告之前所超出配額的百分比。當使用者的磁碟使用率超出指定的臨界值時,伺服器便會向使用者傳送警告訊息。


備註 –

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


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

步驟
  1. 按一下 [配額] 標籤。

  2. 在 [配額警告臨界值] 欄位中輸入代表警告臨界值的數字。

    該數字代表所允許配額的百分比。例如,如果您指定 90%,則當使用者的磁碟配額用量達到 90% 後便會收到警告。預設為 90%。若要關閉此功能,請輸入 100%。

  3. 按一下 [儲存]。

    指令行

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

    configutil -o store.quotawarn -v number

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

啟用或停用配額限制

依預設,使用者或網域可以超過其配額,除收到超過配額通知 (如果設定) 外無任何影響。配額限制會鎖定電子信箱,使其無法接收更多的郵件,直至磁碟使用率減少至配額層級以下。

Procedure啟用配額強制

可以在主控台或透過指令行啟用配額強制。

步驟
  1. 按一下 [配額] 標籤。

  2. 核取 [啟用配額強制] 方塊。若要停用配額限制,請取消核取此方塊。

  3. 按一下 [儲存]。

    指令行

    啟用或停用配額限制:


    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,則僅允許使用者接受一個小於配額的郵件。亦即,永遠不會接受大於使用者配額的郵件。

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

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

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

設定寬限期

寬限期指定電子信箱滿載 (磁碟空間或郵件數目) 後要隔多久才會將郵件退回給寄件者。郵件由 MTA 接受,但是它會停留在 MTA 佇列中而不遞送給郵件儲存,直至發生以下狀況之一:

例如,如果您的寬限期設定為兩天,而您已超額一天,則系統將繼續接收新郵件並將其保留在郵件佇列中,並且會繼續嘗試投遞郵件。第二天後,郵件將退回至寄件者。


備註 –

寬限期並不是指將郵件保留在郵件佇列中多長時間,而是指電子信箱超過配額之後多長時間才會退回所有送進郵件 (包含郵件佇列中的郵件)。使用者達到配額臨界值時,寬限期即開始。請參閱指定配額臨界值與所收到的警告。


Procedure設定郵件保留在佇列中的寬限期

步驟
  1. 按一下 [配額] 標籤。

  2. 在 [超過配額寬限期] 欄位中輸入數字。

  3. 從下拉式清單中指定 [天][小時]

  4. 按一下 [儲存]。

    指令行

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

    configutil -o store.quotagraceperiod -v number

    其中,number 表示小時數。

Netscape Messaging Server 配額相容性模式

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

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

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

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

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


備註 –

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


imexpire 的運作原理

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


備註 –

儘管可以透過主控台或 configutil 指令也可指定全域過期規則,但使用 store.expirerule 還是首選方法。如果使用主控台或 configutil 建立太多規則,可能會導致效能問題。


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

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

佈署自動移除郵件功能

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

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

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

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

定義自動移除郵件的策略

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

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

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

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

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

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

郵件資料夾。可讓您指定要移除其中郵件的資料夾。屬性:folderpattern


備註 –

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


自動移除郵件策略的範例

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

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

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

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

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

若要實作前一節中定義的自動移除郵件策略,您必須設定 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 2005Q4 Administration Reference」中的「configutil Parameters」)。現在仍可使用,但是不再支援使用標頭限制的過期規則 (例如使具有特定主旨行的郵件過期)。不論何時,最好皆使用 store.expirerule 指定所有的過期規則。


表 18–8 imexpire 屬性

屬性 

說明 (屬性值) 

exclusive

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

folderpattern

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

messagecount

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

foldersize

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

messagedays

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

messagesize

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

messagesizedays

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

郵件標頭欄位

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

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

regexp

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

seen

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

deleted

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

以文字形式設定 imexpire 規則

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

rule_name.attribute : value

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

attribute: value

範例 18–1 會顯示 msg_svr_base/config/store.expirerule 中的一組全域過期規則。

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

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

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


範例 18–1 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/ 開頭,後跟式樣。表 18–9 顯示各種資料夾的資料夾式樣。)

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

資料夾式樣 

範圍 

user/userid/.*

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

user/userid/Sent

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

user/.*

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

user/.*/trash

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

user/.*@siroe.com/.*

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

user/[^@]*/.*

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

Procedure使用主控台設定全域自動移除郵件規則

請注意,儘管可以使用主控台設定全域過期規則,但建議還是優先使用 store.expirerule。如果使用主控台或 configutil 建立太多規則,可能會導致效能問題。

步驟
  1. 帶出自動移除郵件 GUI,如下所示:

    主控台 > 伺服器群組 > Messaging Server (開啟) >Messaging Server 主控台 > [配置] 標籤 > 郵件儲存 > 過期/清除 > 新增

    圖 18–4 顯示了 GUI 的簡圖。

    圖 18–4 自動移除郵件 (過期/清除) GUI—簡圖

    本圖顯示相應的自動移除郵件 GUI 簡圖。

  2. 輸入新規則的名稱。

  3. 輸入將從中自動移除郵件的資料夾。

    請參閱上述設定 imexpire 資料夾式樣

  4. 對於符合指定條件的資料夾來說,如果此規則為專用規則,請核取 [專用] 方塊。

    如果核取此方塊,則此規則的優先順序將高於符合指定式樣的其他所有規則。請參閱表 18–8 以取得有關 [專用] 核取方塊的詳細資訊。

  5. 若要根據資料夾大小建立規則,請執行以下動作:

    • 核取 [資料夾大小限制] 核取方塊。在 [郵件計數] 欄位中,指定系統移除最舊的郵件之前將在資料夾中保留的最大郵件數目。在 [資料夾大小] 欄位中,指定系統移除最舊郵件之前的資料夾大小上限 (以位元組為單位)。

  6. 若要根據郵件存在時間建立規則,請核取 [郵件存在時間限制] 核取方塊:

    在 [天數] 欄位中,指定郵件保留在資料夾中的時間 (以天為單位)。

  7. 根據郵件大小建立規則:

    • 核取 [郵件大小限制] 核取方塊。在 [郵件大小限制] 欄位中,輸入資料夾中允許的郵件大小上限。在 [寬限期] 欄位中,輸入超出大小限制的郵件在移除之前保留在資料夾中的時限。

  8. 根據是否已設定 Seen 或 Deleted 郵件旗標來建立規則:

    • 核取 [郵件旗標限制] 核取方塊。

    • 對於 Seen: 欄位,選取「和」指定郵件必須已讀取並且必須符合其他條件,才能實作此規則。選取「或」指定郵件只需已讀取符合其他條件,即可實作此規則。

    • 對於 Deleted: 欄位,選取「和」指定郵件必須已刪除並且必須符合其他條件,才能實作此規則。選取「或」指定郵件只需被刪除符合其他條件,即可實作此規則。

  9. 根據標頭欄位及它們的值建立規則:

    • 核取 [標頭限制] 核取方塊。

    • 輸入以逗號分隔的標頭和值的清單,格式如下:

      header1: value1, header2 : value2

      範例:Subject: Work at Home!,From: virus@sesta.com

      對於標頭中包含 ExpiresExpiry-Date 的郵件,如果這兩個值早於 [郵件存在時間限制] 中的日期值,則系統將移除該郵件。如果指定多個過期標頭欄位,則將使用最早的過期日期。(字串)。

  10. 按一下 [確定] 以將新規則加入自動移除郵件清單。

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

imsched 排程常駐程式啟動自動移除郵件。依預設,imsched 會在每晚 23:00 時呼叫 imexpire,以永久刪除並清除郵件。可透過設定表 18–10 中說明的 configutil 參數 local.schedule.expirelocal.schedule.purgestore.cleanupage 來自訂此排程。

對於大型郵件儲存來說,過期清除作業可能會耗時甚久,因此您也許會想要先測試一下全程所花的時間以便決定多久執行一次這些程序。例如,如果過期/清除循環需耗時 10 小時,則預設的每日執行一次過期清理也許就不太合適。您可以使用 local.schedule.purge 來指定單獨的清除排程,以便排程過期和清除。如果未設定 local.schedule.purge,則 imexpire 將在郵件過期後直接執行清除。

表 18–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 日及星期二執行,則這兩個值必須均符合時才會執行作業。 

間隔範例:

1) 在夜間 12:30、上午 8:30 以及下午 4:30 執行 imexpire 30 0,8,16 * * * /opt/SUNWmsgsr/lib/imexpire

2) 每個工作日的凌晨 3:15 執行 imexpire15 3 * * 1-5 /opt/SUNWmsgsr/lib/imexpire

3) 僅在星期一執行 imexpire0 0 * * 1 /opt/SUNWmsgsr/lib/imexpire

預設:0 23 * * * /opt/SUNWmsgsr/lib/imexpire

local.schedule.purge

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

預設:0 0,4,8,12,16,20 * * * /opt/SUNWmsgsr/lib/purge -num=5 (每四個小時) 

store.cleanupage

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

預設:無 

local.store.expire.loglevel

指定記錄層級: 

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

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

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

預設:1 

使用主控台進行排程的 imexpire

帶出自動移除郵件 GUI,如下所示:

主控台 > 伺服器群組 > Messaging Server (開啟) >Messaging Server 主控台 > [配置] 標籤 > 郵件儲存 > 過期/清除

此主控台頁面在開始時列出過期規則,而在結束時列出過期與清除排程。若要排程過期和清除,請使用 [過期/清除排程] 中的下拉式功能表,為過期和清除作業設定執行的月份、日期、星期幾 (0 = 星期日) 以及時間。


備註 –

日期值可以用當月第幾日或是星期幾來設定。如果兩者均有設定,則這兩個條件都必須滿足。若您設定了每週第 3 天 (星期三) 以及每月 17 日,則過期/清除作業將僅在當月 17 日又剛好是星期三時執行。


設定 imexpire 記錄層級

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

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

透過將特定使用者的使用者 ID 增加 (每行一個) 至 msg_svr_base/config/ 中名為 expire_exclude_list 的檔案中,將其排除在過期規則之外。

配置郵件儲存分割區

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

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

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


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

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

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

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


備註 –

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


新增分割區

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

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

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


備註 –

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


主控台

若要使用主控台將分割區增加至儲存

Procedure增加郵件儲存分割區

步驟
  1. 從主控台開啟您要配置的 Messaging Server。

  2. 按一下 [配置] 標籤,然後在左側窗格中選取 [郵件儲存]。

  3. 按一下右側窗格中的 [分割區] 標籤。

  4. 按一下 [新增] 按鈕。

  5. 輸入分割區暱稱。

    這是指定分割區的邏輯名稱。

  6. 輸入分割區路徑

    這是指定分割區的絕對路徑名稱。

  7. 若要將其指定為預設郵件儲存分割區,請按一下標有 [使此分割區成為預設分割區] 的選取方塊。


    備註 –

    預設分割區就是在建立使用者時,以及未在使用者項目中指定 mailMessageStore LDAP 屬性時使用的分割區。應該在所有使用者項目中指定 mailMessageStore LDAP 屬性,從而無需預設分割區。


  8. 按一下 [確定] 以提交此分割區的配置項目並關閉視窗。

  9. 按一下 [儲存] 以提交並保留目前的分割區清單。

    指令行

    使用指令行將分割區新增至儲存:

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

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

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


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

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

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

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

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

步驟
  1. 確定在遷移過程中不會有使用者連線至電子信箱。要做到這一點,可以先通知使用者登出,並在移動電子信箱期間保持離線狀態;或設定 mailAllowedServiceAccess 屬性,以便在使用者登出後暫停 POP、IMAP 和 HTTP 服務。(請參閱「Sun Java System Communications Services 6 2005Q4 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 服務。

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

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

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

執行郵件儲存的維護程序

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

本節包含以下內容:

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

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

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

管理電子信箱

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

mboxutil 公用程式

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


備註 –

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


表 18–11 列出了 mboxutil 指令。如需詳細的語法和用法需求,請參閱「Sun Java System Messaging Server 6 2005Q4 Administration Reference」

表 18–11 mboxutil 選項

選項 

說明 

-a

棄用。用於列出所有使用者配額資訊。請使用 imquotacheck

-c mailbox

建立指定的電子信箱。可與 -f 配合使用。 

電子信箱必須存在才能建立次要電子信箱。 

-d mailbox

刪除指定的電子信箱。 

若要刪除郵件儲存中的使用者,請使用以下 -d mailbox 值︰

user/userid/INBOX

例如,若要刪除郵件儲存中的使用者 john,請使用 -d user/john/INBOX。若要刪除使用者 john 的電子信箱中的 mm 資料夾,請使用 -d user/john/mm

建議刪除使用者的方法:在 LDAP 目錄中將使用者狀態標記為已刪除 (透過使用 Delegated Administrator 公用程式的 commadmin user delete 指令或 Delegated Administrator 主控台)。接著,使用 commadmin user purge 指令清除標記為已刪除之時期超過指定天數的使用者。

如果您按照上一段的說明使用 Delegated Administrator 公用程式,則無需使用 mboxutil -d 指令刪除電子信箱。

-e

永久刪除郵件儲存中的所有已刪除郵件。此選項還可以與 -p pattern 選項配合使用以永久刪除所有名稱與 pattern 相符的已刪除電子信箱。

-f file

指定儲存電子信箱名稱的檔案。-f 選項可以與 -c、-d-r 選項配合使用。

此檔案包含執行 mboxutil 指令的電子信箱清單。以下是資料檔項目的範例︰

user/daphne/INBOXuser/daphne/projxuser/daphne/mm

-k mailbox cmd

棄用。在資料夾層級鎖定指定的電子信箱;執行指定的指令;在指令完成後解除鎖定電子信箱。 

-l

列出伺服器上所有的電子信箱。 

如果您針對不同的語言環境建立了多位元組資料夾,則應該編輯︰msg_svr_base/sbin/bundles/encbylang.properties ,以建立適當的字元集與 LANG 環境變數之間的關聯。

-o

檢查孤立帳號。此選項會在目前的郵件傳送伺服器主機上搜尋沒有相應 LDAP 項目的收件匣。例如,-o 選項可以尋找從 LDAP 刪除或移到其他伺服器主機上的所有者的收件箱。對於該選項找到的每個孤立帳號,mboxutil 會將以下指令寫入至標準輸出:

mboxutil-d user/userid /INBOX

除非指定 -w

-p MUTF7_IMAP_pattern

與 -l 選項配合使用時,將僅列出名稱與 MUTF7_IMAP_pattern 相符的電子信箱。

也可與 -d-e 選項配合使用以刪除或永久刪除名稱與 MUTF7_IMAP_pattern 相符的電子信箱。

您可以使用 IMAP 萬用字元。此選項需要 IMAP M-UTF-7 格式的式樣。不建議使用此方法來搜尋非 Ascii 電子信箱。若要搜尋非 Ascii 電子信箱,請使用 -P 選項。 

-P regexp

僅列示名稱與指定的 POSIX 常規表示式相符的電子信箱。此選項需要本地語言中的 regexp

-q domain

棄用。請使用 imquotacheck -d domain

-r oldname newname[ partition]

將電子信箱從 oldname 重新命名為 newname。若要在分割區之間移動資料夾,請使用 partition 選項指定新的分割區。可與 -f 旗標配合使用以使用檔案。

此選項亦可用於重新命名使用者。例如,mboxutil -r user/user1/INBOX user/user2/INBOX 會將所有的郵件和電子信箱從 user1 移到 user2,並且新郵件將顯示在新的收件匣中。(如果 user2 已經存在,此作業將失敗。)

-R mailbox

復原尚未被清除的已刪除郵件。 

電子信箱已永久刪除或過期後,會將已刪除郵件的 uid 儲存在 store.exp 檔案中。清除頁面通過後,imexpire 將郵件實際移除。如果錯誤地執行永久刪除或過期,此選項可以用於將尚未被 imexpire 清除的已刪除郵件復原至原始電子信箱。

-s

-l 選項配合使用時,僅顯示電子信箱名稱,不顯示其他資料。

-t num

列出在指定天數 (num) 內尚未存取的電子信箱。必須將 -t 選項與 -o 選項 (識別孤立的電子信箱) 配合使用。

因此,-t 選項可識別非使用中的電子信箱 (基於最後存取的日期) 與孤立的電子信箱 (在 LDAP 目錄中沒有相應使用者項目的電子信箱)。

若要識別 (列示) 孤立的和非使用中的電子信箱,請使用 mboxutil -o -w file -t num

若要將這些孤立的和非使用中的電子信箱標記為已刪除,請使用 mboxutil -d -f file,其中 file 與前面 -w file 中使用的檔案相同。

若要使用此功能,則必須至少在使用 -t 選項指定的天數內啟用 config 變數 local.enablelastaccess

-u user

棄用。用於列示使用者資訊。現使用 imquotacheck -u user

-w file

-o 選項配合使用。寫入至電子信箱名稱由 -o 選項 (識別孤立帳號) 產生的檔案。

-x

-l 選項配合使用時,顯示電子信箱的路徑和存取控制。


備註 –

POSIX 常規表示式可用於 mboxutil 指令。


電子信箱命名慣例

您必須以下列格式指定電子信箱名稱:user/ userid/mailbox,其中 userid 是擁有該電子信箱的使用者,mailbox 是電子信箱的名稱。對於託管網域,useriduid@domain

例如,以下指令將為使用者 ID 是 crowe 的使用者建立名為 INBOX 的電子信箱。INBOX 是傳送至使用者 crowe 的郵件的預設電子信箱。

mboxutil -c user/crowe/INBOX

重要事項:將名稱 INBOX 保留為每個使用者的預設電子信箱。INBOX 是唯一不區分大小寫的資料夾名稱。所有其他的資料夾名稱均區分大小寫。

範例

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

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

移除孤立帳號

若要搜尋孤立帳號 (孤立帳號指在 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

hashdir 公用程式

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

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

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

hashdir crowe

readership 公用程式

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

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

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

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

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

readership -d 15

監視配額限制

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


備註 –

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 2005Q4 Administration Reference」中的「imquotacheck」):

imquotacheck -n -r myrulefile -t mytemplate.file

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

imquotacheck -i

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

imquotacheck -u user1 -e

監視磁碟空間

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

使用 stored 公用程式

stored 公用程式可為伺服器執行以下監視和維護作業:

stored 公用程式在每天晚上 11:00 自動執行清除和過期作業。您可以選擇執行額外的清除和過期作業。

表 18–12 列出了一些 stored 選項。表格後還隨附有一些常用用法範例。如需詳細的語法和用法需求,請參閱「Sun Java System Messaging Server 6 2005Q4 Administration Reference」

表 18–12 stored 選項

選項 

說明 

-d

棄用。現使用 start-msg store 來啟動 stored (將做為常駐程式執行),用於執行系統檢查並啟動警示、死結偵測和資料庫修復。

-t

檢查 stored. 的狀態。此指令的回覆碼可表示狀態。

-v

詳細輸出。 

-v -v

更加詳細的輸出。 

若要顯示狀態,請輸入:

stored -t -v

如果您要變更自動清除和過期作業的時間,請使用 configutil 指令,如下所示:

configutil -o store.expirestart -v 21

有時,您可能需要重新啟動 stored 公用程式,例如在電子信箱清單資料庫損毀的情況下。若要在 UNIX 上重新啟動 stored,請在指令行使用以下指令:

msg_svr_base/sbin/stop-msg store
msg_svr_base/sbin/start-msg store

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

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

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

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

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

重新連結程式作業原理

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

摘要儲存庫由郵件儲存中指向郵件的強制連結組成。儲存在目錄階層結構 partition_path/=md5 中。此目錄與使用者電子信箱階層結構 partition_path /=user 平行 (請參閱圖 18–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。該範例在 圖 18–5 中顯示。

圖 18–5 郵件儲存摘要儲存庫

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

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

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

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

重新連結程式可掃描全部郵件儲存分割區,建立或更新 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 條件配置為包含所有郵件—請參閱配置重新連結程式以取得有關配置重新連結程式條件的資訊)。例如,處理 100 GB 的郵件儲存會花費六小時。但是,如果啟用執行階段重新連結 (請參閱在即時模式中使用重新連結程式

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

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

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

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

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

配置重新連結程式

表 18–13 顯示設定重新連結程式條件所使用的參數。

表 18–13 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 

備份和復原郵件儲存

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

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

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


備註 –

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


本節包含以下小節:

建立電子信箱的備份策略

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

業務尖峰負荷

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

完整備份和增量備份

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

平行或串列備份

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

建立備份群組

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

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

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

  1. 它們是由郵件使用者任意組成的虛擬群組。他們無法準確地對映至郵件儲存目錄 (圖 18–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

預先定義的備份群組

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

imsbackup -f backupfile /primary/user

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

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

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 (請參閱建立備份群組):


imsbackup -f- /primary/groupA > backupfile
            

增量備份

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


imsbackup -d 20040501:13100
               

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

imsrestore 公用程式

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

imsrestore -f backupfile /primary/user1

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

執行備份時排除垃圾郵件

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

若要排除電子信箱,請為 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 資料夾。

部分復原的注意事項

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

以下範例會展示在執行部分復原時系統會如何處置由多個使用者共用的郵件。假設有三個相同的郵件,分屬 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,以復原遺漏的郵件參照。


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

如果您要復原已經增量備份的電子信箱中的郵件,並且該電子信箱存在於您希望復原郵件的伺服器上,則復原郵件僅需要執行簡單的 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 不一致,您需要執行上述動作中的一項。

使用 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. 按照建立備份群組中的說明建立備份群組

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

      檢查 mkbackupdir.sh 所建立的目錄結構。該結構應與表 18–4 中所顯示的結構類似。

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

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


    備註 –

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

    mkbackupdir.sh -p /backup

    重要事項:郵件儲存所有者 (例如inetuser) 必須擁有備份目錄的寫入權限。


    表 18–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

      確保您已按照建立備份群組中的定義建立 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
    
                         

使用 Legato Networker 復原資料

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

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

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

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

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

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

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

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

步驟
  1. 將您的使用者分成群組 (請參閱建立備份群組) 並在目錄 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

備份和復原問題疑難排解

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

郵件儲存災難備份與回復

災難指整個郵件儲存的災難性失敗。即郵件儲存伺服器上的所有資料均遺失的情況。完整的郵件儲存災難復原將包括復原以下遺失的資料︰

監視使用者存取

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


備註 –

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


該指令要求系統使用者擁有超級使用者權限 (預設:inetuser ),並且您必須將配置變數 local.imap.enableuserlistlocal.http.enableuserlistlocal.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

如需 imsconnutil 語法的完整說明,請參閱「Sun Java System Messaging Server 6 2005Q4 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.
---------------------------------------------------------------------------

郵件儲存的疑難排解

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

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

郵件儲存的標準監視程序

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

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

檢查硬體空間

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

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

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

檢查記錄檔

檢查記錄檔確保郵件儲存程序按配置執行。Messaging Server 可為每個主要協定或服務建立一組單獨的記錄檔,它支援:SMTP、IMAP、POP 和 HTTP。您可以透過主控台,或直接到 msg_svr_base/log/ 目錄下查看記錄檔。您應定期監視記錄檔。

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

使用遙測技術檢查使用者 IMAP/POP 階段作業

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

若要擷取階段作業,只需建立以下目錄:

msg_svr_base/data/telemetry/ pop_or_imap/userid

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>

檢查 stored 程序

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

表 18–14 stored 作業

stored 作業 

功能 

stored.ckp

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

stored.lcu

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

stored.per

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

如需有關 stored 程序的更多資訊,請參閱「Sun Java System Messaging Server 6 2005Q4 Administration Reference」中的使用 stored 公用程式一章。

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

檢查資料庫記錄檔

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

檢查使用者資料夾

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

檢查核心檔案

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

郵件儲存的啟動與回復

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

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

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

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

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

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

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

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

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

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

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

表示需要執行 reconstruct -m 的錯誤訊息

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

當錯誤訊息指出電子信箱錯誤時,請執行 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 參數在表 18–15 中顯示。

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

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

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

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

表 18–15 郵件儲存資料庫快照的參數

參數 

說明 

local.store.snapshotpath

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

預設:dbdata/snapshots

local.store.snapshotinterval

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

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

local.store.snapshotdirs

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

預設:3 

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

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

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

表 18–16 列出了 reconstruct 選項。如需詳細的語法和用法需求,請參閱「Sun Java System Messaging Server 6 2005Q4 Administration Reference」中的「reconstruct」

表 18–16 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 選項指定的分割區。

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

重建電子信箱

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

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

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

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

reconstruct -r user/daphne

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

reconstruct -r

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

檢查並修復電子信箱

執行電子信箱資料庫的高階一致性檢查和修復:

reconstruct -m

若要對主分割區執行一致性檢查和修復,請執行︰

reconstruct -p primary -m

備註 –

將 -p 和 -m 旗標與 reconstruct 一起執行不會修正 lright.db。這是因為修正 lright.db 需要掃描郵件儲存中每個使用者的 ACL。對每個分割區執行此選項不會很有效。若要修正 lright.db,請執行 reconstruct -l。


若要對個別使用者的名為 john 的電子信箱執行一致性檢查和修復,請執行︰

reconstruct -p primary -u john -m

-m 選項的使用時機是:

重建效能

reconstruct 執行作業所花費的時間取決於以下因素:

reconstruct -r 選項會執行初始一致性檢查;該項檢查會根據需要重建的資料夾數目來提昇 reconstruct 的效能。

有大約 2400 名使用者的 85GB 郵件儲存伺服器 (同時有 POP、IMAP 或 SMTP 活動) 的系統具有以下效能:


備註 –

如果伺服器上沒有 POP、IMAP、HTTP 或 SMTP 活動正在執行,則 reconstruct 作業所需的時間會顯著減少。


常見問題與解決方案

本節列出郵件儲存的常見問題及解決方案:

Messenger Express 或 Communications Express 未載入郵件頁面

如果使用者無法載入任何 Messenger Express 頁面或 Communications Express 郵件頁面,可能是因為壓縮之後資料損毀。如果系統部署了過期的代理伺服器,則有時可能會發生這種情況。若要解決該問題,請嘗試將 local.service.http.gzip.staticlocal.service.http.gzip.dynamic 設定為 0,以停用資料壓縮。如果此方法可以解決這個問題,您可能需要更新代理伺服器。

使用萬用字元式樣的指令失效

有些 UNIX shell 要求在萬用字元參數的前後加上引號,有些則不要求。例如,C shell 嘗試展開包含萬用字元 (*、?) 做為檔案的引數,如果找不到相符項,則會失敗。這些與式樣相符的引數可能需要以引號括住,以傳遞至 mboxutil 之類的指令。

例如:

mboxutil -l -p user/usr44*

可在 Bourne shell 下執行,但在 tsch 和 C shell 下會失敗。這些 shell 的慣用格式是:

mboxutil -l -p "user/usr44*"

如果使用萬用字元式樣的指令無法執行,請檢驗您是否需要為該 shell 的萬用字元加上引號。

未知/無效的分割區

如果使用者的電子信箱被移至剛建立的新分割區,且 Messaging Server 未重新整理或重新啟動,則該使用者將在 Messenger Express 中收到訊息「未知的/無效的分割區」。此問題只會發生在新分割區上。如果您現在向此新分割區增加其他使用者電子信箱,則必須重新整理/重新啟動 Messaging Server。

使用者電子信箱目錄的問題

如果郵件儲存的損毀僅限於一小部分使用者,而沒有對系統造成全域損毀,則使用者電子信箱存在問題。以下使用準則提出了一套用於辨識、分析和解決使用者電子信箱目錄問題的程序:

  1. 復查記錄檔、錯誤訊息或使用者觀察到的任何不尋常行為。

  2. 若要保留除錯資訊及歷程,請將整個 store_root/mboxlist/ 使用者目錄複製到郵件儲存以外的其他位置。

  3. 若要找出可能導致問題的使用者資料夾,請執行 reconstruct -r -n 指令。如果您無法使用 reconstruct 找到資料夾,則該資料夾可能不在 folder.db 中。

    如果您無法使用 reconstruct -r -n 指令找到資料夾,請使用 hashdir 指令來確定該資料夾的位置。如需有關 hashdir 的更多資訊,請參閱hashdir 公用程式「Sun Java System Messaging Server 6 2005Q4 Administration Reference」中「Messaging Server 指令行公用程式」一章的 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 指令的更多資訊,請參閱修復電子信箱和電子信箱資料庫

儲存常駐程式無法啟動

如果 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 定義的群組會被意外刪除。在這種情況下,就必須重建被刪除的群組,將 inetuser 加入群組,然後將 instance_root 及其檔案的所有權改授予 inetuser 和該群組。

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

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

Messaging Server 提供多種在系統之間移動電子信箱的方法。每個方法都有它的優點和缺點。這些方法在遷移使用者電子信箱中說明。