本章介绍了如何配置 JMQ 通知插件以生成 Message Queue 服务中客户端使用的邮件。
本章包含以下各节:第 22 章,配置 JMQ 通知插件为 Message Queue 生成邮件
Messaging Server 通知插件允许您向邮件传送服务或事件服务传送通知邮件。邮件传送服务将通知发送给使用方(客户端界面),使用方将邮件过滤并传送给指定的用户。
例如,当新电子邮件到达用户的邮箱时,通知插件向邮件传送服务传送一个通知邮件。邮件使用方(即邮件传送服务的一个组件)收到通知并将其发送到用户的电子邮件客户端(如 Communications Express 或 Mozilla Mail)。然后,电子邮件客户端将在用户的计算机屏幕上显示一个弹出消息:“您收到一封新邮件。”
另一个示例:如果用户的邮箱超过了其配额,通知插件将生成超过配额的通知邮件。邮件使用方向用户和需要得知该事件的管理员发送警告。
可以配置 Messaging Server 向两种不同的邮件传送服务传送通知:
Sun Java System Message Queue 3.6 2005Q4
Event Notification Service
Message Queue 服务可以实现 Java Messaging Service (JMS) 规范,它提供了邮件代理、用于创建生成或使用邮件的客户端的界面,以及管理服务和控制。在路由和传送功能、协议和邮件格式方面,Message Queue 遵循 JMS 标准。
Event Notification Service 是一个与 Messaging Server 和 Sun Java System Calendar Server 捆绑在一起的组件。它是一个专用服务,使用发布/订阅体系结构来发送和接收事件通知。
您可以为 Message Queue、Event Notification Service 或这两种服务配置通知生成方。
本章仅介绍如何为 Message Queue 配置通知。
有关 Event Notification Service 的信息,请参见 Sun Java System Communications Suite Event Notification Service Guide。
要使 Messaging Server 能够为 Message Queue 或 Event Notification Service 生成通知,您必须为该服务配置插件:
JMQ 通知插件允许您向 Message Queue 代理传送通知邮件。
iBiff 插件允许您向 Event Notification Service 发布通知事件。
有关如何装入 iBiff 插件和配置 Event Notification Service 的信息,请参见 Sun Java System Messaging Server 管理指南中的“附录 B:在 Messaging Server 中管理 Event Notification Service”。
用于 Message Queue 的 JMQ 通知插件具有以下优点:
Message Queue 实现了 JMS 标准。
用于 Message Queue 时,您可以向主题或/和队列传送方法生成邮件。有关其简短定义,请参见22.1.3.1 发布到主题或队列。
Message Queue 在邮件分发期间,尤其在为队列生成邮件时,提供了增强的负载平衡功能。
JMQ 通知插件允许您最多配置 5 个通知插件。不同的插件可以为主题、队列、Event Notification Service 等生成邮件。有关详细信息,请参见22.1.3.2 使用多个 JMQ 通知插件。
Message Queue 提供可靠的通知传送。
例如,如果您配置 JMQ 通知插件生成邮件时启用了持久性标志,邮件将留在 Message Queue 代理中直到使用方接收到它。邮件被保存起来,如果服务器发生故障,可以重新检索到该邮件并供相应的使用方使用。
主题和队列使用不同的邮件传送分发模式;这两种模式都可以在 Message Queue 服务中配置。
主题。邮件生成方将邮件发送到主题时,将使用发布/订阅体系结构。在这种广播模式中,生成方向主题目标发送邮件。任意数量的使用方可以订阅此主题目标。每个订阅此主题的使用方将得到其自身的邮件副本。如果没有使用方订阅此主题,则放弃此邮件。
Event Notification Service 也使用发布/订阅体系结构;它与 Message Queue 中定义的主题模式类似。
队列。当邮件生成方将邮件发送到队列时,使用的是点对点的体系结构。在这种模式中,生成方将邮件发送到队列目的地,只有一个使用方可以从中接收到邮件。如果几个使用方都在等待来自此队列的邮件,则只有一个订户会收到邮件。如果没有使用方在等待,邮件将被保留直到邮件超时或者使用方表示对队列感兴趣。
向队列生成邮件允许您在多个使用方之间分散邮件负载。
您可以配置 1 到 5 个通知插件。
Messaging Server 在以下默认位置提供了一个插件库:
/opt/SUNWmsgsr/lib/libjmqnotify
使用 configutil 实用程序为插件指定参数并将插件指向可执行代码的库。
如果您指定了多个插件,则每个插件将独立于其他插件生成通知邮件。例如,如果两个插件配置了 delete-message 参数并且从用户的邮箱删除了邮件,则两个插件都将生成一个通知邮件。
通过配置多个插件,您可以根据不同的目的使用不同的邮件分发模式。例如,您可以配置三个不同的插件生成邮件
到队列(使用 Message Queue)
到主题(使用 Message Queue)
到 Event Notification Service
对于您配置的每一个插件,您都必须定义一组单独的 configutil 参数。
这些参数决定两种信息:
要生成的通知邮件的种类。例如,启用 LogUser 参数导致只要用户登录或注销就会发送通知邮件。
Message Queue 需要的配置信息。例如,jmqHost 参数标识运行 Message Queue 代理的主机的 IP 地址。
有关如何配置插件的说明,请参见配置 JMQ 通知插件。
此节简要介绍了如何使 JMQ 通知插件适合完整的 Message Queue 服务环境。然后,它提供了有关配置 JMQ 通知插件的详细说明。
JMQ 通知插件只是 Message Queue 服务的一部分。邮件传送服务还包括使用邮件的客户端和 Message Queue 基础设施(代理、管理组件等等)。
以下步骤介绍了创建支持 Messaging Server 的 Message Queue 服务应该执行的任务:
设计通知邮件服务。
定义 Messaging Server 安装需要的通知邮件。邮件服务开发周期的规划和设计阶段不在本章讨论的范围内。但是,在配置 JMQ 通知插件之前您应回答以下设计问题:
您需要为哪些邮件事件生成通知?有关可用的通知邮件列表,请参见22.3.1 通知邮件。
您打算为队列、主题,还是这两者生成邮件?
您打算使用专用 Event Notification Service 和 Message Queue 服务吗?
这些问题的答案将帮助您决定是配置一个还是多个通知插件,以及决定如何配置每个插件。
安装、配置和部署 Message Queue 产品。
有关安装 Message Queue 的信息,请参见《Sun Java System Message Queue Installation Guide》。
有关配置和部署 Message Queue 的信息,请参见《Sun Java System Message Queue 管理指南》。
编写一个或多个将要使用 JMQ 通知邮件的 Message Queue 客户端。
这些客户端必须符合 Message Queue 客户端 API 的要求。可以从以下路径获得一个客户端源代码的简单示例(用 C 语言编写):
/opt/SUNWmsgsr/examples/jmqsdk/ |
源文件名为 jmqclient.c。
此客户端源代码接收 JMQ 通知邮件(由 libjmqnotify 库中的参数定义)中的邮件。然后,它将邮件发送到 stdout。
有关用 C 或 Java 编写 Message Queue 客户端的信息,请参见 Sun Java System Message Queue Developer's Guide for C Clients 或 Sun Java System Message Queue Developer's Guide for Java Clients。
配置并启用 JMQ 通知插件以生成通知邮件。
本章的剩余部分介绍如何配置通知插件。
配置并启动运行时 Message Queue 客户端。
有关部署运行时 Message Queue 客户端的信息,请参见《Sun Java System Message Queue 管理指南》。
在这一过程中,您首先配置要生成通知的邮件事件。接下来,指定 Message Queue 需要的信息。最后(步骤 9),通过在插件库名称后指定一个参数来配置插件名称:
'/opt/SUNWmsgsr/lib/libjmqnotify$plug-in_name' |
如果没有指定插件名称,则默认使用 jmqnotify。
您应该安装、配置和部署以下产品:
Sun Java System Messaging Server
Sun Java System Message Queue 3.6 SP3 2005Q4 或更高版本
以下步骤中将要配置的大部分 configutil 参数是可选的。有关参数默认值列表,请参见表 22–2。
配置通知邮件参数。
对于每一种想要包含在插件内的通知邮件,请结合使用 local.store.notifyplugin 命令和 configutil 实用程序。
例如,要为新邮件启用通知,输入:
configutil -o local.store.notifyplugin.jmqnotify.NewMsg.enable -v 1 |
其中 jmqnotify 是插件的名称
而 -v 1 为此邮件启用通知。值为 0 将禁用对此邮件的通知。
有关所有 JMQ 通知邮件的列表,请参见22.3.1 通知邮件。
有关启用 JMQ 通知邮件的 configutil 参数的定义,请参见 Sun Java System Messaging Server Administration Reference 中的第 3 章 "Messaging Server Configuration"。
有些通知邮件使用多个 configutil 参数启用具有附加功能的邮件。例如,有些邮件可以在通知文本中包含邮件标题。有关如何配置这些邮件的说明,请参见newflags 和 oldflags 属性的语法。
您必须为每个配置的插件单独配置参数。
因此,如果配置两个插件(名为 jmq1 和 jmq2),并且希望为两个插件启用新邮件通知,则必须运行 local.store.notifyplugin 命令两次:
configutil -o local.store.notifyplugin.jmq1.NewMsg.enable -v 1 |
configutil -o local.store.notifyplugin.jmq2.NewMsg.enable -v 1 |
例如,输入以下命令:
configutil -o local.store.notifyplugin.jmqnotify.jmqHost -v "127.0.0.1" |
其中 jmqnotify 是插件的名称
而 "127.0.0.1" 是 Message Queue 代理主机的 IP 地址。
例如,输入以下命令:
configutil -o local.store.notifyplugin.jmqnotify.jmqPort -v "7676" |
其中 jmqnotify 是插件的名称
而 "7676" 是为 Message Queue 代理指定的端口。
指定授权为服务生成邮件的 Message Queue 用户的用户 ID 和密码。
例如,输入以下命令:
configutil -o local.store.notifyplugin.jmqnotify.jmqUser -v "guest" |
configutil -o local.store.notifyplugin.jmqnotify.jmqPwd -v "%$#a62t&" |
其中 jmqnotify 是插件的名称
而 "guest" 和 "%$#a62t&" 分别是 Message Queue 用户的用户 ID 和密码。
配置目的地(主题或队列)类型和邮件将要发送到的目的地的名称。
按以下步骤操作:
指定目标是主题还是队列。
例如,输入以下命令:
configutil -o local.store.notifyplugin.jmqnotify.DestinationType -v "queue" |
其中 jmqnotify 是插件的名称
而 "queue" 指定目标是一个队列。此参数允许的值是 "queue" 和 "topic"。
指定目标名称。
例如,输入以下命令之一:
configutil -o local.store.notifyplugin.jmqnotify.jmqQueue -v "JES-MS" |
或
configutil -o local.store.notifyplugin.jmqnotify.jmqTopic -v "JES-MS" |
其中 jmqnotify 是插件的名称
jmqQueue 或 jmqTopic 标识目标类型。jmqQueue 和 jmqTopic 参数是同义的并且相互排斥;在一个插件中只能使用这两个参数中的一个。
"JES-MS" 是邮件将要发送到的队列或主题的示例名。
例如,输入以下命令:
configutil -o local.store.notifyplugin.jmqnotify.Priority -v 3 |
其中 jmqnotify 是插件的名称
而 -v 3 是指定给此插件生成的邮件的 Message Queue 优先级。
Priority 的默认值为 4。
指定 Message Queue 代理保留邮件的时间长度(以毫秒为单位)。
例如,输入以下命令:
configutil -o local.store.notifyplugin.jmqnotify.ttl -v 100 |
其中 jmqnotify 是插件的名称
而 -v 100 指定在发送或放弃某个邮件之前,Message Queue 服务保留邮件 100 毫秒。值为 0 表示邮件永久被保留;不会超时。
例如,输入以下命令:
configutil -o local.store.notifyplugin.jmqnotify.Persistent -v 1 |
其中 jmqnotify 是插件的名称
而 -v 1 指定在 Message Queue 服务中使用持久性邮件。允许的值为 1(持久)和 0(非持久)。
要配置具有默认名称的单个插件,可以输入插件库的全限定名称或者库名称及其插件参数:
configutil -o local.store.notifyplugin -v /opt/SUNWmsgsr/lib/libjmqnotify |
或
configutil -o local.store.notifyplugin -v '/opt/SUNWmsgsr/lib/libjmqnotify$jmqnotify' |
其中 libjmqnotify 是库名称,
而 jmqnotify 是插件参数的默认名称。
使用美元符号 ($) 分隔库名称和参数。
将整个值用单引号引起来('值');否则 shell 将解释美元符号。
默认插件读取的 configutil 参数有以下名称:
local.store.notifyplugin.jmqnotify.* |
要配置其他插件名称(如 jmq42),请输入以下命令:
configutil -o local.store.notifyplugin -v '/opt/SUNWmsgsr/lib/libjmqnotify$jmq42' |
jmq42 插件读取的 configutil 参数有以下名称:
local.store.notifyplugin.jmq42.* |
为打算创建的每个插件配置一组单独的 JMQ 通知参数。
例如,假设您配置了两个插件,名为 jmq1 和 jmq2。假设您想为这两个插件都启用新邮件通知,同时单独为 jmq2 插件启用清除邮件通知。在这种情况下,要运行 local.store.notifyplugin 命令三次,如下所示:
configutil -o local.store.notifyplugin.jmq1.NewMsg.enable -v 1 |
configutil -o local.store.notifyplugin.jmq2.NewMsg.enable -v 1 |
configutil -o local.store.notifyplugin.jmq2.PurgeMsg.enable -v 1 |
您还必须指定使插件能够与 Message Queue 服务通信的参数。
有关配置所有通知参数的逐步说明,请参见配置 JMQ 通知插件。
配置插件名称。
要配置两个名为 jmq1 和 jmq2 的插件,请输入以下命令:
configutil -o local.store.notifyplugin -v '/opt/SUNWmsgsr/lib/libjmqnotify$jmq1$$/opt/SUNWmsgsr/ \ lib/libjmqnotify$jmq2' |
在本示例中,运行了两个插件库实例。
使用美元符号 ($) 分隔库名称和指定插件名称的参数。
使用两个美元符号 ($$) 分隔第一个插件实例和第二个插件实例。
将整个值用单引号引起来('值');否则 shell 将解释美元符号。
在本示例中,第一个实例用名为 jmq1 的参数构建其配置:
local.store.notify.jmq1.* |
第二个实例用名为 jmq2 的参数构建其配置:
local.store.notify.jmq2.* |
对于大部分通知邮件,您可以通过运行单个 local.store.notifyplugin 命令指定邮件。
但是,以下通知邮件使用(或可以使用)多个 local.store.notifyplugin 命令配置:
NewMsg
UpdateMsg
DeleteMsg
MsgFlags
以下过程介绍了如何设置这些通知邮件。
有新的或更新的电子邮件时,您可以将邮件标题和邮件正文添加到发送的通知邮件文本。
可以选择包括邮件标题还是邮件正文;可以两个功能都包括、仅包括一个功能,或者都不包括。默认情况下发送不带邮件标题和邮件正文的邮件。
指定新邮件或更新邮件通知:
configutil -o local.store.notifyplugin.jmqnotify.NewMsg.enable -v 1 |
configutil -o local.store.notifyplugin.jmqnotify.UpdateMsg.enable -v 1 |
其中 jmqnotify 是插件的名称
而 -v 1 为这些邮件启用通知。值为 0 禁用通知。
用大于 0 的值指定 maxHeaderSize 参数,如下例所示:
configutil -o local.store.notifyplugin.jmqnotify.maxHeaderSize -v 1024 |
其中 jmqnotify 是插件的名称
而 1024 是要发送的邮件标题的最大大小。maxHeaderSize 的默认值为 0,表示不随邮件发送标题信息。
用大于 0 的值指定 maxBodySize 参数,如下例所示:
configutil -o local.store.notifyplugin.jmqnotify.maxBodySize -v 1024 |
其中 jmqnotify 是插件的名称
而 5120 是要发送的邮件正文的最大大小。maxBodySize 的默认值为 0,不随邮件发送正文信息。
在删除电子邮件消息时,您可以将邮件标题添加到发送的通知邮件文本中。
包含邮件标题是可选的。默认情况下发送不带邮件标题的通知。
在删除电子邮件时发送通知:
configutil -o local.store.notifyplugin.jmqnotify.DeleteMsg.enable -v 1 |
其中 jmqnotify 是插件的名称
而 -v 1 为此邮件启用通知。值为 0 禁用通知。
configutil -o local.store.notifyplugin.jmqnotify.ExpungeHeaders -v 1 |
其中 jmqnotify 是插件的名称
而 -v 1 使删除邮件通知能够包含邮件标题。ExpungeHeaders 的默认值为 0,禁止删除邮件通知包含标题信息。
必须配置 ExpungeHeaders 参数启用 DeleteMsg 邮件包含邮件标题的功能。
用大于 0 的值指定 maxHeaderSize 参数,如下例所示:
configutil -o local.store.notifyplugin.jmqnotify.maxHeaderSize -v 1024 |
其中 jmqnotify 是插件的名称
而 1024 是要发送的邮件标题的最大大小。maxHeaderSize 的默认值为 0,表示不随邮件发送标题信息。
可以配置一个在电子邮件更改状态的时候发送的通知邮件。
邮件标志通知在状态标志更改时生成,这种更改是因为电子邮件:
已回复
已标记
已删除
已读(已阅读)
存为草稿
发送邮件标志通知时,通知包含以下属性:
在电子邮件状态更改之前为其设置的标志
在电子邮件状态更改之后为其设置的标志
此信息包含在两个属性(oldflags 和 newflags)中,它们是包含 5 个字符的字符串。
有关这两个属性值的说明,请参见newflags 和 oldflags 属性的语法。
要启用邮件标志通知,必须配置以下 configutil 参数:
local.store.notifyplugin.MsgFlags
local.store.notifyplugin.*.MsgFlags.enable
第一个 MsgFlags 参数启用 IMAP 服务器和消息存储,以标识和跟踪状态标志更改的值,以便在通知邮件中传送此信息。
此参数应用于所有通知插件。因此,如果任何通知插件使用邮件标志通知,您必须启用此参数。如果没有插件使用邮件标志通知,请确保禁用此参数(其默认值)。
第二个参数 *.MsgFlags.enable 允许为某个特定的插件库发送邮件标志通知。
要为邮件标志启用通知,您必须两个参数都配置。
跟踪状态标志并使邮件标志通知包含状态信息:
configutil -o local.store.notifyplugin.MsgFlags -v 1 |
其中 -v 1 使邮件标志信息能够与邮件标志通知一起发送。值为 0 禁用此通知。
使邮件标志通知由特定的插件发送:
configutil -o local.store.notifyplugin.jmqnotify.MsgFlags.enable -v 1 |
其中 jmqnotify 是插件的名称
而 -v 1 为此插件启用邮件标志通知。值为 0 禁用通知。
本节介绍了以下主题:
可以为消息存储中发生的各种事件生成通知邮件。例如,用户登录时,可以生成 Login 邮件并发送到 Message Queue 代理。
configutil 参数指定每种生成的邮件。通过配置各种 configutil 参数,您可以决定哪些事件会生成邮件。configutil 参数可以被一个或多个 JMQ 通知插件库引用。
所有邮件都被传送到主题或队列,具体取决于将目标类型设置为 "topic" 还是 "queue"。有关如何配置 Message Queue 目标的信息,请参见配置 JMQ 通知插件。
每个邮件由以下邮件标题标识:
MQ_MESSAGE_TYPE_HEADER_PROPERTY
JMQ 通知插件支持的邮件如下表所示。
有关启用这些邮件的 configutil 参数列表,请参见22.3.4 configutil 参数的默认值。
表 22–1 JMQ 通知邮件
通知邮件 |
说明 |
---|---|
DeleteMsg |
从邮箱中删除标记为“已删除”的邮件。此操作等效于 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 操作,将邮件附加到邮箱。例如,用户将一个电子邮件复制到邮箱。可以包含邮件标题和邮件正文。 |
以下规则和原则应用于支持的通知邮件:
大部分通知邮件的文本都是一个空白区。(使用空白区是因为 Message Queue 不允许邮件正文为空。)例外情况如下:
在使用 maxHeaderSize 参数配置时,NewMsg、UpdateMsg 和 DeleteMsg 邮件可以包含邮件标题。您必须将 maxHeaderSize 设置为大于 0 的值。
要使 DeleteMsg 邮件包含邮件标题,还必须将 ExpungeHeaders 参数的值设置为 1。
在使用 maxBodySize 参数配置时,NewMsg 和 UpdateMsg 邮件可以包含邮件正文。您必须将 maxBodySize 设置为大于 0 的值。
对于 NewMsg 和 UpdateMsg 而言,默认情况下不传送(关闭)邮件正文。这可以防止 Message Queue 过载。其他邮件都不包含邮件正文。
可以只为 INBOX 的更改生成通知邮件,也可以为 INBOX 和所有其他文件夹的更改生成通知邮件。以下配置参数允许只为 INBOX 生成(值 = 0),或为 INBOX 和所有其他文件夹生成(值 = 1):
local.store.notifyplugin.jmqnotify.noneInbox.enable
默认设置是只从 INBOX 生成邮件(值 = 0)。
没有选择文件夹的机制;当此变量启用时包含所有文件夹(值 = 1)。
只有在邮件被置于用户邮箱后(而非“服务器接受它并将其放入邮件队列后”)才发出 NewMsg 通知。
不为 POP3 客户端访问生成邮件。
可以通过发出 XNOTNOTIFY 抑制所有邮件。例如,仅用于内务处理的 IMAP 脚本(不打算通知用户)可能会发出 XNOTNOTIFY 抑制所有邮件。
通知可以传送关于各种不同类型的邮件(例如文本邮件、语音邮件和图像数据)的状态信息。用户经常希望这些不同种类的邮件类型存储在同一个邮件文件夹内。例如,用户可能希望新文本邮件和语音邮件都到达用户的手机收件箱。
要配置这些邮件类型,请使用 configutil 命令,例如 store.messagetype.enable。有关配置和管理邮件类型的信息,请参见“第 18 章:管理消息存储”中的“管理邮件类型”。
一旦配置了邮件类型,JMQ 通知邮件就能够标识特定邮件类型。您可以编写 Message Queue 客户端,使其能够按邮件类型解释通知邮件并向邮件客户端传送关于每个类型的状态信息。
例如,假设不同类型的新邮件到达用户的邮箱。NewMsg 通知邮件可以包含要通知用户的数据(例如,用户收件箱中有七个新语音邮件和四个新文本邮件)。
以下通知邮件可以包含跟踪特定邮件类型的信息:
NewMsg UpdateMsg ReadMsg TrashMsg DeleteMsg PurgeMsg OverQuota UnderQuota |
JMQ 通知功能可以按邮件类型统计邮箱中的当前邮件数。随通知邮件发送的是指定每种邮件类型计数的数组,而不是一个计数。
特定于邮件的计数包含在 numMsgs 属性中并随通知邮件一起传送。对于 ReadMsg 和 TrashMsg 通知邮件,已读邮件的数量 (numSeen) 和标记为已删除的邮件数量 (numDeleted) 也按邮件类型计数。
Event Notification Service 不支持邮件类型。使用 JMQ 通知插件传送关于邮件类型的信息。
用 configutil 参数配置 Message Queue 需要的通知邮件和配置信息。
表 22–2 显示了这些参数及其默认值。
有关 configutil 参数的完整定义,请参见 Sun Java System Messaging Server Administration Reference 中的第 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 |
4 |
local.store.notifyplugin.*.ttl |
0 — 表示此邮件永不超时。 |
local.store.notifyplugin.*.Persistent |
1 — 启用 |
每个邮件都包含属性中定义的附加信息。不同的属性出现在不同的邮件中。例如,NewMsg 表示新邮件的 IMAP uid。
表 22–3 介绍了标准通知邮件属性。这些属性出现在所有 JMS 邮件中。
表 22–3 标准通知邮件属性
属性 |
数据类型 |
说明 |
---|---|---|
hostname |
ConstMQString |
生成此邮件的计算机的主机名。 |
pid |
MQInt32 |
生成此邮件的进程的 ID。 |
process |
ConstMQString |
指定生成此邮件的进程的名称。 |
timestamp |
MQFloat64 |
指定从 epoch(GMT 时间 1970 年 1 月 1 日午夜)开始的毫秒数。 |
表 22–4 描述了特定通知邮件包含的属性。
每个邮件包含下表中属性的一个子集。有关与每个邮件相关的属性列表,请参见表 22–5。
表 22–4 特定于特定通知邮件的属性
属性 |
数据类型 |
说明 |
---|---|---|
client |
ConstMQString |
与邮件相关的 Message Queue 客户端 IP 地址。 |
diskquota |
MQInt32 |
与邮件相关的用户磁盘空间配额,以千字节为单位。值设置为 -1 表示没有配额。 |
diskquotaused |
MQInt32 |
与邮件相关的用户磁盘空间使用量,以千字节为单位。 |
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 |
邮箱中标记为已读(已阅读)和已删除的邮件数。 此数值统计已被邮箱所有者标记为已阅读和已删除的邮件。如果其他用户访问此邮箱,他们在邮箱中的操作不包括在此计数内。(但是,其他用户的操作能够触发通知,如 ReadMsg 和 DeleteMsg)。 |
numSeenDeletednn |
MQInt32 |
邮箱中为每种邮件类型指定的标记为已读(已阅读)和已删除的邮件总数。如果配置了邮件类型,numSeenDeletednn 属性将包含每种邮件类型 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 |
与邮件相关的 userid。 |
在解析邮件引用时,订户应该允许没有记录的属性。这考虑未来添加新属性时的兼容性。
newflags 和 oldflags 属性是 5–字符字符串。此字符串必须有以下值:
如果设置了 /answered 标志,则第一个字符为 "A"。否则,为空白 (" ")。
如果设置了 /flagged 标志,则第二个字符为 "F"。否则,为空白 (" ")。
如果设置了 /deleted 标志,则第三个字符为 "D"。否则,为空白 (" ")。
如果设置了 /seen 标志,则第四个字符为 "S"。否则,为空白 (" ")。
如果设置了 /draft 标志,则第五个字符为 "R"。否则,为空白 (" ")。
表 22–5 显示了与每个通知邮件相关的属性。
例如,要查看哪些属性可以应用于 TrashMsg 邮件,请在列标题中查找 "ReadMsg, TrashMsg"。除了标准属性之外,TrashMsg 邮件还可以使用 mailboxName、 numMsgs、uidValidity、numSeen 和 numDeleted。
表 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 |
否 |
是 |
否 |
否 |
是 |
是 |
* 只有在消息存储中定义了邮件类型,通知才会包含 numDeletedn、numMsgs n、numSeenn 和 numSeenDeletedn 属性。