Sun Java System Messaging Server 6.3 管理指南

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 規則會使郵件在首次進入郵件儲存達指定天數後過期,無論郵件儲存於哪個資料夾,及其移動頻繁與否。