Sun Java System Messaging Server 6.3 管理指南

第 22 章 配置 JMQ 通知插件为 Message Queue 生成邮件

本章介绍了如何配置 JMQ 通知插件以生成 Message Queue 服务中客户端使用的邮件。

本章包含以下各节:第 22 章,配置 JMQ 通知插件为 Message Queue 生成邮件

22.1 JMQ 通知概述

Messaging Server 通知插件允许您向邮件传送服务或事件服务传送通知邮件。邮件传送服务将通知发送给使用方(客户端界面),使用方将邮件过滤并传送给指定的用户。

例如,当新电子邮件到达用户的邮箱时,通知插件向邮件传送服务传送一个通知邮件。邮件使用方(即邮件传送服务的一个组件)收到通知并将其发送到用户的电子邮件客户端(如 Communications Express 或 Mozilla Mail)。然后,电子邮件客户端将在用户的计算机屏幕上显示一个弹出消息:“您收到一封新邮件。”

另一个示例:如果用户的邮箱超过了其配额,通知插件将生成超过配额的通知邮件。邮件使用方向用户和需要得知该事件的管理员发送警告。

22.1.1 两种邮件传送服务通知

可以配置 Messaging Server 向两种不同的邮件传送服务传送通知:

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

22.1.2 通知插件

要使 Messaging Server 能够为 Message Queue 或 Event Notification Service 生成通知,您必须为该服务配置插件:

有关如何装入 iBiff 插件和配置 Event Notification Service 的信息,请参见 Sun Java System Messaging Server 管理指南中的“附录 B:在 Messaging Server 中管理 Event Notification Service”。

22.1.3 使用 JMQ 通知的优点

用于 Message Queue 的 JMQ 通知插件具有以下优点:

22.1.3.1 发布到主题或队列

主题和队列使用不同的邮件传送分发模式;这两种模式都可以在 Message Queue 服务中配置。

主题。邮件生成方将邮件发送到主题时,将使用发布/订阅体系结构。在这种广播模式中,生成方向主题目标发送邮件。任意数量的使用方可以订阅此主题目标。每个订阅此主题的使用方将得到其自身的邮件副本。如果没有使用方订阅此主题,则放弃此邮件。

Event Notification Service 也使用发布/订阅体系结构;它与 Message Queue 中定义的主题模式类似。

队列。当邮件生成方将邮件发送到队列时,使用的是点对点的体系结构。在这种模式中,生成方将邮件发送到队列目的地,只有一个使用方可以从中接收到邮件。如果几个使用方都在等待来自此队列的邮件,则只有一个订户会收到邮件。如果没有使用方在等待,邮件将被保留直到邮件超时或者使用方表示对队列感兴趣。

向队列生成邮件允许您在多个使用方之间分散邮件负载。

22.1.3.2 使用多个 JMQ 通知插件

您可以配置 1 到 5 个通知插件。

Messaging Server 在以下默认位置提供了一个插件库:

/opt/SUNWmsgsr/lib/libjmqnotify

使用 configutil 实用程序为插件指定参数并将插件指向可执行代码的库。

如果您指定了多个插件,则每个插件将独立于其他插件生成通知邮件。例如,如果两个插件配置了 delete-message 参数并且从用户的邮箱删除了邮件,则两个插件都将生成一个通知邮件。

通过配置多个插件,您可以根据不同的目的使用不同的邮件分发模式。例如,您可以配置三个不同的插件生成邮件

22.1.3.3 为通知插件配置参数

对于您配置的每一个插件,您都必须定义一组单独的 configutil 参数。

这些参数决定两种信息:

有关如何配置插件的说明,请参见配置 JMQ 通知插件

22.2 配置 JMQ 通知服务

此节简要介绍了如何使 JMQ 通知插件适合完整的 Message Queue 服务环境。然后,它提供了有关配置 JMQ 通知插件的详细说明。

22.2.1 规划您的 JMQ 通知服务

JMQ 通知插件只是 Message Queue 服务的一部分。邮件传送服务还包括使用邮件的客户端和 Message Queue 基础设施(代理、管理组件等等)。

以下步骤介绍了创建支持 Messaging Server 的 Message Queue 服务应该执行的任务:

  1. 设计通知邮件服务。

    定义 Messaging Server 安装需要的通知邮件。邮件服务开发周期的规划和设计阶段不在本章讨论的范围内。但是,在配置 JMQ 通知插件之前您应回答以下设计问题:

    • 您需要为哪些邮件事件生成通知?有关可用的通知邮件列表,请参见22.3.1 通知邮件

    • 您打算为队列、主题,还是这两者生成邮件?

    • 您打算使用专用 Event Notification Service 和 Message Queue 服务吗?

    这些问题的答案将帮助您决定是配置一个还是多个通知插件,以及决定如何配置每个插件。

  2. 安装、配置和部署 Message Queue 产品。

    有关安装 Message Queue 的信息,请参见《Sun Java System Message Queue Installation Guide》

    有关配置和部署 Message Queue 的信息,请参见《Sun Java System Message Queue 管理指南》

  3. 编写一个或多个将要使用 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 ClientsSun Java System Message Queue Developer's Guide for Java Clients

  4. 配置并启用 JMQ 通知插件以生成通知邮件。

    本章的剩余部分介绍如何配置通知插件。

  5. 配置并启动运行时 Message Queue 客户端。

    有关部署运行时 Message Queue 客户端的信息,请参见《Sun Java System Message Queue 管理指南》

Procedure配置 JMQ 通知插件

在这一过程中,您首先配置要生成通知的邮件事件。接下来,指定 Message Queue 需要的信息。最后(步骤 9),通过在插件库名称后指定一个参数来配置插件名称:


'/opt/SUNWmsgsr/lib/libjmqnotify$plug-in_name'

如果没有指定插件名称,则默认使用 jmqnotify

开始之前

您应该安装、配置和部署以下产品:


注 –

以下步骤中将要配置的大部分 configutil 参数是可选的。有关参数默认值列表,请参见表 22–2


  1. 配置通知邮件参数。

    对于每一种想要包含在插件内的通知邮件,请结合使用 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 属性的语法


    注 –

    您必须为每个配置的插件单独配置参数。

    因此,如果配置两个插件(名为 jmq1jmq2),并且希望为两个插件启用新邮件通知,则必须运行 local.store.notifyplugin 命令两次:


    configutil -o local.store.notifyplugin.jmq1.NewMsg.enable -v 1

    configutil -o local.store.notifyplugin.jmq2.NewMsg.enable -v 1

  2. 指定运行 Message Queue 目标(代理)的主机。

    例如,输入以下命令:


    configutil -o local.store.notifyplugin.jmqnotify.jmqHost -v "127.0.0.1"

    其中 jmqnotify 是插件的名称

    "127.0.0.1" 是 Message Queue 代理主机的 IP 地址。

  3. 指定 Message Queue 代理的端口。

    例如,输入以下命令:


    configutil -o local.store.notifyplugin.jmqnotify.jmqPort -v "7676"

    其中 jmqnotify 是插件的名称

    "7676" 是为 Message Queue 代理指定的端口。

  4. 指定授权为服务生成邮件的 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 和密码。

  5. 配置目的地(主题或队列)类型和邮件将要发送到的目的地的名称。

    按以下步骤操作:

    1. 指定目标是主题还是队列。

      例如,输入以下命令:


      configutil -o local.store.notifyplugin.jmqnotify.DestinationType -v "queue"

      其中 jmqnotify 是插件的名称

      "queue" 指定目标是一个队列。此参数允许的值是 "queue""topic"

    2. 指定目标名称。

      例如,输入以下命令之一:


      configutil -o local.store.notifyplugin.jmqnotify.jmqQueue -v "JES-MS"


      configutil -o local.store.notifyplugin.jmqnotify.jmqTopic -v "JES-MS"

      其中 jmqnotify 是插件的名称

      jmqQueuejmqTopic 标识目标类型。jmqQueuejmqTopic 参数是同义的并且相互排斥;在一个插件中只能使用这两个参数中的一个。

      "JES-MS" 是邮件将要发送到的队列或主题的示例名。

  6. 指定邮件优先级。

    例如,输入以下命令:


    configutil -o local.store.notifyplugin.jmqnotify.Priority -v 3

    其中 jmqnotify 是插件的名称

    -v 3 是指定给此插件生成的邮件的 Message Queue 优先级。

    Priority 的默认值为 4。

  7. 指定 Message Queue 代理保留邮件的时间长度(以毫秒为单位)。

    例如,输入以下命令:


    configutil -o local.store.notifyplugin.jmqnotify.ttl -v 100

    其中 jmqnotify 是插件的名称

    -v 100 指定在发送或放弃某个邮件之前,Message Queue 服务保留邮件 100 毫秒。值为 0 表示邮件永久被保留;不会超时。

  8. 指定邮件持久性。

    例如,输入以下命令:


    configutil -o local.store.notifyplugin.jmqnotify.Persistent -v 1

    其中 jmqnotify 是插件的名称

    -v 1 指定在 Message Queue 服务中使用持久性邮件。允许的值为 1(持久)和 0(非持久)。

  9. 配置插件名称。

    要配置具有默认名称的单个插件,可以输入插件库的全限定名称或者库名称及其插件参数:


    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.*

Procedure配置多个插件

  1. 为打算创建的每个插件配置一组单独的 JMQ 通知参数。

    例如,假设您配置了两个插件,名为 jmq1jmq2。假设您想为这两个插件都启用新邮件通知,同时单独为 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 通知插件

  2. 配置插件名称。

    要配置两个名为 jmq1jmq2 的插件,请输入以下命令:


    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.*

22.2.2 使用多个 configutil 参数指定通知邮件

对于大部分通知邮件,您可以通过运行单个 local.store.notifyplugin 命令指定邮件。

但是,以下通知邮件使用(或可以使用)多个 local.store.notifyplugin 命令配置:

  1. NewMsg

  2. UpdateMsg

  3. DeleteMsg

  4. MsgFlags

以下过程介绍了如何设置这些通知邮件。

Procedure配置带有邮件标题和邮件正文的新邮件和更新邮件通知

有新的或更新的电子邮件时,您可以将邮件标题和邮件正文添加到发送的通知邮件文本。

可以选择包括邮件标题还是邮件正文;可以两个功能都包括、仅包括一个功能,或者都不包括。默认情况下发送不带邮件标题和邮件正文的邮件。

  1. 指定新邮件或更新邮件通知:


    configutil -o local.store.notifyplugin.jmqnotify.NewMsg.enable -v 1

    configutil -o local.store.notifyplugin.jmqnotify.UpdateMsg.enable -v 1

    其中 jmqnotify 是插件的名称

    -v 1 为这些邮件启用通知。值为 0 禁用通知。

  2. 用大于 0 的值指定 maxHeaderSize 参数,如下例所示:


    configutil -o local.store.notifyplugin.jmqnotify.maxHeaderSize -v 1024

    其中 jmqnotify 是插件的名称

    1024 是要发送的邮件标题的最大大小。maxHeaderSize 的默认值为 0,表示不随邮件发送标题信息。

  3. 用大于 0 的值指定 maxBodySize 参数,如下例所示:


    configutil -o local.store.notifyplugin.jmqnotify.maxBodySize -v 1024

    其中 jmqnotify 是插件的名称

    5120 是要发送的邮件正文的最大大小。maxBodySize 的默认值为 0,不随邮件发送正文信息。

Procedure配置带有邮件标题的删除邮件通知

在删除电子邮件消息时,您可以将邮件标题添加到发送的通知邮件文本中。

包含邮件标题是可选的。默认情况下发送不带邮件标题的通知。

  1. 在删除电子邮件时发送通知:


    configutil -o local.store.notifyplugin.jmqnotify.DeleteMsg.enable -v 1

    其中 jmqnotify 是插件的名称

    -v 1 为此邮件启用通知。值为 0 禁用通知。

  2. 指定 ExpungeHeaders 参数:


    configutil -o local.store.notifyplugin.jmqnotify.ExpungeHeaders -v 1

    其中 jmqnotify 是插件的名称

    -v 1 使删除邮件通知能够包含邮件标题。ExpungeHeaders 的默认值为 0,禁止删除邮件通知包含标题信息。

    必须配置 ExpungeHeaders 参数启用 DeleteMsg 邮件包含邮件标题的功能。

  3. 用大于 0 的值指定 maxHeaderSize 参数,如下例所示:


    configutil -o local.store.notifyplugin.jmqnotify.maxHeaderSize -v 1024

    其中 jmqnotify 是插件的名称

    1024 是要发送的邮件标题的最大大小。maxHeaderSize 的默认值为 0,表示不随邮件发送标题信息。

22.2.2.1 配置邮件状态更改通知

可以配置一个在电子邮件更改状态的时候发送的通知邮件。

在邮件标志通知中传送的信息

邮件标志通知在状态标志更改时生成,这种更改是因为电子邮件:

发送邮件标志通知时,通知包含以下属性:

此信息包含在两个属性(oldflagsnewflags)中,它们是包含 5 个字符的字符串。

有关这两个属性值的说明,请参见newflags 和 oldflags 属性的语法

邮件标志通知所需的 configutil 参数

要启用邮件标志通知,必须配置以下 configutil 参数:

第一个 MsgFlags 参数启用 IMAP 服务器和消息存储,以标识和跟踪状态标志更改的值,以便在通知邮件中传送此信息。

此参数应用于所有通知插件。因此,如果任何通知插件使用邮件标志通知,您必须启用此参数。如果没有插件使用邮件标志通知,请确保禁用此参数(其默认值)。

第二个参数 *.MsgFlags.enable 允许为某个特定的插件库发送邮件标志通知。


注 –

要为邮件标志启用通知,您必须两个参数都配置。


Procedure在邮件状态标志更改时启用通知

  1. 跟踪状态标志并使邮件标志通知包含状态信息:


    configutil -o local.store.notifyplugin.MsgFlags -v 1

    其中 -v 1 使邮件标志信息能够与邮件标志通知一起发送。值为 0 禁用此通知。

  2. 使邮件标志通知由特定的插件发送:


    configutil -o local.store.notifyplugin.jmqnotify.MsgFlags.enable -v 1

    其中 jmqnotify 是插件的名称

    -v 1 为此插件启用邮件标志通知。值为 0 禁用通知。

22.3 JMQ 通知邮件和属性

本节介绍了以下主题:

22.3.1 通知邮件

可以为消息存储中发生的各种事件生成通知邮件。例如,用户登录时,可以生成 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 操作,将邮件附加到邮箱。例如,用户将一个电子邮件复制到邮箱。可以包含邮件标题和邮件正文。 

22.3.2 通知邮件的规则和原则

以下规则和原则应用于支持的通知邮件:

22.3.3 特定邮件类型的通知

通知可以传送关于各种不同类型的邮件(例如文本邮件、语音邮件和图像数据)的状态信息。用户经常希望这些不同种类的邮件类型存储在同一个邮件文件夹内。例如,用户可能希望新文本邮件和语音邮件都到达用户的手机收件箱。

要配置这些邮件类型,请使用 configutil 命令,例如 store.messagetype.enable。有关配置和管理邮件类型的信息,请参见“第 18 章:管理消息存储”中的“管理邮件类型”。

一旦配置了邮件类型,JMQ 通知邮件就能够标识特定邮件类型。您可以编写 Message Queue 客户端,使其能够按邮件类型解释通知邮件并向邮件客户端传送关于每个类型的状态信息。

例如,假设不同类型的新邮件到达用户的邮箱。NewMsg 通知邮件可以包含要通知用户的数据(例如,用户收件箱中有七个新语音邮件和四个新文本邮件)。

以下通知邮件可以包含跟踪特定邮件类型的信息:


NewMsg
UpdateMsg
ReadMsg
TrashMsg
DeleteMsg
PurgeMsg
OverQuota
UnderQuota

JMQ 通知功能可以按邮件类型统计邮箱中的当前邮件数。随通知邮件发送的是指定每种邮件类型计数的数组,而不是一个计数。

特定于邮件的计数包含在 numMsgs 属性中并随通知邮件一起传送。对于 ReadMsgTrashMsg 通知邮件,已读邮件的数量 (numSeen) 和标记为已删除的邮件数量 (numDeleted) 也按邮件类型计数。


注 –

Event Notification Service 不支持邮件类型。使用 JMQ 通知插件传送关于邮件类型的信息。


22.3.4 configutil 参数的默认值

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

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 

指定从 epoch(GMT 时间 1970 年 1 月 1 日午夜)开始的毫秒数。 

22.3.5.2 特定于特定通知邮件的属性

表 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 

邮箱中标记为已读(已阅读)和已删除的邮件数。  

此数值统计已被邮箱所有者标记为已阅读和已删除的邮件。如果其他用户访问此邮箱,他们在邮箱中的操作不包括在此计数内。(但是,其他用户的操作能够触发通知,如 ReadMsgDeleteMsg)。

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 属性的语法

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 属性。