Sun Java System Messaging Server 6.3 管理指南

22.3 JMQ 通知郵件和特性

本節說明以下主題:

22.3.1 通知郵件

您可以為郵件儲存中發生的各種事件產生通知郵件。例如,當使用者登入時,會產生一封 Login 郵件並遞送至郵件佇列代理程式。

configutil 參數指定各種要產生的郵件。您可以配置各種 configutil 參數,判定將產生郵件的事件。configutil 參數會由一或多個 JMQ 通知外掛程式程式庫所參照。

所有郵件會依據目標類型設定為 "topic""queue",遞送至主題或佇列。如需有關如何配置郵件佇列目標的資訊,請參閱配置 JMQ 通知外掛程式

每封郵件由以下郵件標頭所識別:

MQ_MESSAGE_TYPE_HEADER_PROPERTY

JMQ 通知外掛程式支援下表所示的郵件。

如需啟用這些郵件的 configutil 參數清單,請參閱22.3.4 configutil 參數的預設值

表 22–1 JMQ 通知郵件

通知郵件 

說明 

DeleteMsg

標示為「Deleted」的郵件會從電子信箱移除。這相當於 IMAP 的永久刪除。 

Login

使用者從 IMAP、HTTP 或 POP 登入。(此郵件以 configutil 參數 local.store.notifyplugin.*.LogUser.enable 啟用。)

Logout

使用者從 IMAP、HTTP 或 POP 登出。(此郵件以 configutil 參數 local.store.notifyplugin.*.LogUser.enable 啟用。)

MsgFlags

郵件上的郵件旗標已變更。此郵件帶有新舊旗標。 

NewMsg

系統已接收新郵件並置於使用者的電子信箱。可包含郵件標頭和內文。 

OverQuota

使用者的電子信箱超過其中一個配額 (diskquota、msgquota) 而導致作業失敗。MTA 通道會保留郵件,直到配額變更或使用者的電子信箱計數低於配額為止。如果郵件在 MTA 保留期間過期,則會永久刪除。 

PurgeMsg

郵件由伺服器程序 imexpire 從電子信箱永久刪除 (由於過期)。此為伺服器端的永久刪除,而 DeleteMsg 為用戶端的永久刪除。這與清除不同。 

ReadMsg

已讀取電子信箱中的郵件。(在 IMAP 協定中,此郵件會標示為「Seen」。) 

TrashMsg

郵件由 IMAP 或 HTTP 標示為刪除。視郵件用戶端的配置而定,使用者可能仍能檢視資料夾中的郵件。執行永久刪除時,會從資料夾移除郵件。 

UnderQuota

OverQuota 狀態的配額回復到正常。 

UpdateMsg

郵件由 IMAP 作業附加至電子信箱。例如,使用者將電子郵件複製到電子信箱。可包含郵件標頭和內文。 

22.3.2 通知郵件的規則和使用準則

以下規則和使用準則套用到支援的通知郵件:

22.3.3 特定郵件類型的通知

通知可遞送不同郵件類型 (如文字郵件、語音郵件和影像資料) 的相關狀態資訊。使用者通常需要在相同的郵件資料夾中儲存這些異質的郵件類型。例如,使用者可能需要讓新的文字郵件和語音郵件送達使用者的行動電話收件匣中。

若要配置這些郵件類型,請使用 store.messagetype.enableconfigutil 指令。如需有關配置和管理郵件類型的資訊,請參閱「第 18 章:管理郵件儲存」中的「管理郵件類型」。

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

例如,假設使用者的電子信箱有不同類型的新郵件送達。NewMsg 通知郵件可包含此資料,告知使用者其收件匣中有七封新的語音郵件和四封新的文字郵件。

以下通知郵件可帶有追蹤特定郵件類型的資訊:


NewMsg
UpdateMsg
ReadMsg
TrashMsg
DeleteMsg
PurgeMsg
OverQuota
UnderQuota

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

numMsgs 特性會包含此郵件特定的計數,並隨通知郵件遞送。對於 ReadMsgTrashMsg 通知郵件,已讀取的郵件數 (numSeen) 和標記為已刪除的郵件數 (numDeleted) 也會依郵件類型計算。


備註 –

事件通知服務不支援郵件類型。使用 JMQ 通知外掛程式遞送郵件類型的相關資訊。


22.3.4 configutil 參數的預設值

郵件佇列所需的通知郵件和配置資訊會以 configutil 參數進行配置。

表 22–2 顯示這些參數及其預設值。

如需 configutil 參數的完整定義,請參閱「Sun Java System Messaging Server Administration Reference」中的「Chapter 3: Messaging Server Configuration」。

表 22–2 configutil 參數及其預設值

configutil 參數

預設值 

local.store.notifyplugin.*.maxBodySize

0 — 已停用 

local.store.notifyplugin.*.maxHeaderSize

0 — 已停用 

local.store.notifyplugin.*.NewMsg.enable

1 — 已啟用 

local.store.notifyplugin.*.UpdateMsg.enable

1 — 已啟用 

local.store.notifyplugin.*.ReadMsg.enable

1 — 已啟用 

local.store.notifyplugin.*.DeleteMsg.enable

1 — 已啟用 

local.store.notifyplugin.*.PurgeMsg.enable

1 — 已啟用 

local.store.notifyplugin.*.LogUser.enable

1 — 已啟用 

local.store.notifyplugin.*.MsgFlags.enable

0 — 已停用 

local.store.notifyplugin.*.noneInBox.enable

0 — 已停用 

local.store.notifyplugin.*.jmqHost

「127.0.0.1」 

local.store.notifyplugin.*.jmqPort

7676 

local.store.notifyplugin.*.jmqTopic

「JES-MS」 

local.store.notifyplugin.*.jmqQueue

「JES-MS」 

local.store.notifyplugin.*.jmqUser

「guest」 

local.store.notifyplugin.*.jmqPwd

「guest」 

local.store.notifyplugin.*.destinationtype

「topic」 

local.store.notifyplugin.*.Priority

local.store.notifyplugin.*.ttl

0 — 表示郵件永遠不會逾時。 

local.store.notifyplugin.*.Persistent

1 — 已啟用 

22.3.5 通知郵件特性

每封郵件帶有特性中所定義的其他資訊。不同郵件有不同特性。例如,NewMsg 表示新郵件的 IMAP uid

22.3.5.1 標準通知郵件特性

表 22–3 說明標準通知郵件特性。所有 JMS 郵件皆有這些特性。

表 22–3 標準通知郵件特性

特性 

資料類型 

說明 

hostname

ConstMQString 

產生郵件的主機電腦名稱。 

pid

MQInt32 

產生郵件的程序 ID。 

process

ConstMQString 

指定產生郵件的程序名稱。 

timestamp

MQFloat64 

指定開始時間 (1970 年 1 月 1 日午夜 GMT) 以來的毫秒數。 

22.3.5.2 特定通知郵件的專屬特性

表 22–4 說明特定通知郵件帶有的特性。

每封郵件包含下表所示的特性之子集。如需與每封郵件相關的特性清單,請參閱表 22–5

表 22–4 特定通知郵件的專屬特性

特性 

資料類型 

說明 

client

ConstMQString 

與郵件相關的郵件佇列用戶端之 IP 位址。 

diskquota

MQInt32 

與郵件相關的使用者之磁碟空間配額 (以 KB 為單位)。此值設定為 -1 表示沒有配額。 

diskquotaused

MQInt32 

與郵件相關的使用者所用的磁碟空間量 (以 KB 為單位)。 

hdrLen

MQInt32 

郵件標頭的大小。請注意,這可能和郵件內文中的標頭大小不同,因為內文會遭截斷。 

imapUid

MQInt32 

與郵件相關的 IMAP uid 特性。 

lastUid

MQInt32 

電子信箱中所用的最後一個 IMAP uid 值。 

mailboxName

ConstMQstring 

與事件相關的郵件儲存電子信箱名稱。mailboxName 使用以下其中一種格式 (其中 uid 是使用者的唯一識別碼):

uid — 識別預設 (主要) 網域中的使用者收件匣。

uid@domain — 識別託管網域中的使用者收件匣。

uid/mailboxname — 識別預設網域中最上層的使用者電子信箱。

uid@domain/mailboxname — 識別託管網域中最上層的使用者電子信箱。

uid/foldername/mailboxname — 識別預設網域中使用者資料夾內的電子信箱。

uid@domain/foldername/mailboxname — 識別託管網域中使用者資料夾內的電子信箱。

msgquota

MQInt32 

使用者最大郵件數的配額。此值設定為 -1 表示沒有配額。 

newflags

ConstMQString 

目前作業變更旗標之後為使用者電子信箱的郵件設定的旗標。產生 MsgFlags 通知郵件時一律會有此特性和 oldflags

如需 newflags 值的語法,請參閱此表之後的newflags 和 oldflags 特性的語法

numDeleted

MQInt32 

在電子信箱中標示為已刪除的郵件數。 

此數目會計算由電子信箱所有者刪除的郵件數。如果其他使用者具有此電子信箱的存取權,計數中不會包含這些使用者在電子信箱中的動作。(但是,其他使用者的動作可能觸發 DeleteMsg 等通知)。

numDeletednn

MQInt32 

在電子信箱中依各種郵件類型指定且標示為已刪除的郵件總數。如果配置了郵件類型, 

numDeletednn 特性會帶有各種郵件類型 nn 的計數。

numDeleted 特性一律會傳送;此特性會計算包含所有類型標示為已刪除的所有郵件總數。

例如,如果有 20 封郵件標示為已刪除,其中 10 封屬於類型 3,7 封屬於類型 16,而其餘郵件為無法辨識的類型,則此通知會帶有以下特性和計數: 

numDeleted=20

numDeleted3=10

numDeleted16=7

numMsgs

MQInt32 

電子信箱目前的郵件總數。 

numMsgsnn

MQInt32 

電子信箱目前依各種郵件類型指定的郵件總數。如果配置了郵件類型, 

numMsgsnn 特性會帶有各種郵件類型 nn 的計數。

numMsgs 特性一律會傳送;此特性會計算電子信箱中包含所有類型的所有郵件總數。

例如,如果目前在電子信箱中有 20 封郵件,其中 10 封屬於類型 3,7 封屬於類型 16,而其餘郵件為無法辨識的類型,則此通知會帶有以下特性和計數: 

numMsgs=20

numMsgs3=10

numMsgs16=7

numSeen

MQInt32 

在電子信箱中標示為已讀取的郵件數。 

此數目會計算由電子信箱所有者讀取的郵件數。如果其他使用者具有此電子信箱的存取權,計數中不會包含這些使用者在電子信箱中的動作。(但是,其他使用者的動作可能觸發 ReadMsg 等通知)。

numSeennn

MQInt32 

在電子信箱中依各種郵件類型指定且標示為已讀取的郵件總數。如果配置了郵件類型,numSeen nn 特性會帶有各種郵件類型 nn 的計數。

numSeen 特性一律會傳送;此特性會計算包含所有類型標示為已讀取的所有郵件總數。

例如,如果有 20 封郵件標示為已讀取,其中 10 封屬於類型 3,7 封屬於類型 16,而其餘郵件為無法辨識的類型,則此通知會帶有以下特性和計數: 

numSeen=20

numSeen3=10

numSeen16=7

numSeenDeleted

MQInt32 

電子信箱中標示為已讀取且已刪除的郵件數。 

此數目會計算由電子信箱所有者標示為已讀取且已刪除的郵件數。如果其他使用者具有此電子信箱的存取權,計數中不會包含這些使用者在電子信箱中的動作。(但是,其他使用者的動作可能觸發 ReadMsgDeleteMsg 等通知)。

numSeenDeletednn

MQInt32 

在電子信箱中依各種郵件類型指定且標示為已讀取且已刪除的郵件總數。如果配置了郵件類型,numSeenDeleted nn 特性會帶有各種郵件類型 nn 的計數。

numSeenDeleted 特性一律會傳送;此特性會計算包含所有類型標示為已讀取且已刪除的所有郵件總數。

例如,如果有 20 封郵件標示為已讀取且已刪除,其中 10 封屬於類型 3,7 封屬於類型 16,而其餘郵件為無法辨識的類型,則此通知會帶有以下特性和計數: 

numSeenDeleted=20

numSeenDeleted3=10

numSeenDeleted16=7

oldflags

ConstMQString 

目前作業變更旗標之前為使用者電子信箱的郵件設定的旗標。產生 MsgFlags 通知郵件時一律會有此特性和 newflags

如需 oldflags 值的語法,請參閱此表之後的newflags 和 oldflags 特性的語法

quotaRoot

ConstMQString 

可以是使用者名稱、資料夾名稱或郵件類型。 

size

MQInt32 

郵件的大小。請注意,由於內文一般會是郵件的截斷版本,因此這會和郵件內文的大小不同。 

uidValidity

MQInt32 

IMAP uid 有效性特性。 

userid

ConstMQString 

與郵件相關的使用者 ID。 


備註 –

訂閱者解析郵件參照時,應允許未加以說明的特性。這可在未來新增特性時允許相容。


newflags 和 oldflags 特性的語法

newflagsoldflags 特性是 5 個字元的字串。此字串必須有以下值:

22.3.5.3 各封通知郵件具有的特性

表 22–5 顯示與各封通知郵件相關的特性。

例如,若要檢視套用到 TrashMsg 郵件的特性,請參閱欄標頭「ReadMsg、TrashMsg」。TrashMsg 郵件在標準特性之外,可使用 mailboxNamenumMsgsuidValiditynumSeennumDeleted

表 22–5 各封通知郵件具有的特性

特性 

NewMsg、UpdateMsg 

ReadMsg、TrashMsg 

DeleteMsg、PurgeMsg 

MsgFlags 

 

Login、Logout 

OverQuota、UnderQuota 

client

否 

否 

否 

否 

是 

否 

diskquota

否 

否 

否 

否 

否 

是 

diskquotaused

否 

否 

否 

否 

否 

是 

hdrLen

是 

否 

否 

是 

否 

否 

hostname

是 

是 

是 

是 

是 

是 

imapUid

是 

否 

是 

是 

否 

否 

lastUid

否 

否 

是 

否 

否 

否 

mailboxName

是 

是 

是 

是 

否 

否 

msgquota

否 

否 

否 

否 

否 

是 

newflags

否 

否 

否 

是 

否 

否 

numDeleted

是 

是 

是 

否 

否 

否 

numDeletedn

是* 

是* 

是* 

否 

否 

否 

numMsgs

是 

是 

是 

否 

否 

是 

numMsgsn

是* 

是* 

是* 

否 

否 

否 

numSeen

是 

是 

是 

否 

否 

否 

numSeenn

是* 

是* 

是* 

否 

否 

否 

numSeenDeleted

是 

是 

是 

否 

否 

否 

numSeenDeletedn

是* 

是* 

是* 

否 

否 

否 

oldflags

否 

否 

否 

是 

否 

否 

Owner

否 

是 

否 

否 

否 

否 

pid

是 

是 

是 

是 

是 

是 

process

是 

是 

是 

是 

是 

是 

quotaRoot

否 

否 

否 

否 

否 

是 

size

是 

否 

否 

否 

否 

否 

timestamp

是 

是 

是 

是 

是 

是 

uidValidity

是 

是 

是 

是 

否 

否 

userid

否 

是 

否 

否 

是 

是 


備註 –

* 僅在郵件儲存中定義郵件類型時,通知才會具有 numDeletednnumMsgs nnumSeennnumSeenDeletedn 特性。