Sun Java System Messaging Server 6.3 管理指南

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」)、設定歸檔系統,或執行適當作業以控制電子信箱大小。