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

執行郵件儲存的維護程序

本節提供有關您維護和回復郵件儲存所使用的公用程式的資訊。您應經常閱讀 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