Sun Java System Messaging Server 6.3 管理指南

22.2 配置 JMQ 通知服務

本節簡短說明 JMQ 通知外掛程式如何符合完整郵件佇列服務的環境,並接著提供有關配置 JMQ 通知外掛程式的詳細說明。

22.2.1 規劃 JMQ 通知服務

JMQ 通知外掛程式僅是郵件佇列服務的一部分。郵件傳送服務也包含使用郵件的用戶端及郵件佇列基礎架構 (代理程式、管理元件等)。

以下步驟概述您應執行以建立支援 Messaging Server 的郵件佇列服務之作業:

  1. 定義通知郵件服務。

    定義 Messaging Server 安裝所需的通知郵件。郵件服務開發生命週期的規劃和設計階段不在本章的論述範圍內。但在您配置 JMQ 通知外掛程式之前,應回答以下設計問題:

    • 需要為哪些郵件事件產生通知?如需可用通知郵件的清單,請參閱22.3.1 通知郵件

    • 打算產生郵件至佇列、主題或兩者?

    • 是否打算同時使用專用事件通知服務和郵件佇列服務?

    回答這些問題有助於決定要配置一個通知外掛程式或多個外掛程式,並判定如何配置每個外掛程式。

  2. 安裝、配置及部署郵件佇列產品。

    如需有關安裝郵件佇列的資訊,請參閱「Sun Java System Message Queue Installation Guide」。

    如需有關配置及部署郵件佇列的資訊,請參閱「Sun Java System Message Queue Administration Guide」。

  3. 編寫將使用 JMQ 通知郵件的一或多個郵件佇列用戶端。

    用戶端必須符合郵件佇列用戶端 API 的需求。以下路徑提供以 C 編寫的用戶端原始碼之簡單範例:


    /opt/SUNWmsgsr/examples/jmqsdk/

    原始碼檔案名稱為 jmqclient.c

    此用戶端原始碼會接收 libjmqnotify 程式庫中的參數所定義之 JMQ 通知郵件的郵件,並接著將郵件輸出傳送至 stdout

    如需有關以 C 或 Java 編寫郵件佇列用戶端的資訊,請參閱「Sun Java System Message Queue Developer's Guide for C Clients」或「Sun Java System Message Queue Developer's Guide for Java Clients」。

  4. 配置與啟用產生通知郵件的 JMQ 通知外掛程式。

    本章接下來會說明如何配置通知外掛程式。

  5. 配置與啟動執行階段郵件佇列用戶端。

    如需有關部署執行階段郵件佇列用戶端的資訊,請參閱「Sun Java System Message Queue Administration Guide」。

Procedure配置 JMQ 通知外掛程式

在此程序中,請先配置將產生通知的郵件事件。接著指定郵件佇列所需的資訊。最後 (在步驟 9 中),請在外掛程式程式庫的名稱之後指定參數,以配置外掛程式名稱:


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

如果未指定外掛程式名稱,預設會使用 jmqnotify

開始之前

應安裝、配置及部署以下產品:


備註 –

將在以下步驟配置的大部分 configutil 參數,均為選擇性參數。如需這些參數的預設值清單,請參閱表 22–2


  1. 配置通知郵件參數。

    針對您想納入外掛程式的每種通知郵件,搭配 configutil 公用程式使用 local.store.notifyplugin 指令。

    例如,若要啟用新郵件的通知,請輸入:


    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」中的「Chapter 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. 指定郵件佇列目標 (代理程式) 執行所在的主機。

    例如,輸入以下指令:


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

    其中 jmqnotify 是外掛程式的名稱,

    "127.0.0.1" 是郵件佇列代理程式的主機電腦 IP 位址。

  3. 指定郵件佇列代理程式的連接埠。

    例如,輸入以下指令:


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

    其中 jmqnotify 是外掛程式的名稱,

    "7676" 是郵件佇列代理程式的連接埠。

  4. 指定授權產生郵件至服務的郵件佇列使用者之使用者 ID 和密碼。

    例如,輸入以下指令:


    configutil -o local.store.notifyplugin.jmqnotify.jmqUser -v "guest"

    configutil -o local.store.notifyplugin.jmqnotify.jmqPwd -v "%$#a62t&"

    其中 jmqnotify 是外掛程式的名稱,

    "guest""%$#a62t&" 分別是郵件佇列使用者的使用者 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 是指定給此外掛程式所產生之郵件的郵件佇列優先順序。

    Priority 的預設值為 4。

  7. 指定郵件佇列代理程式保留郵件的時間長度 (以毫秒為單位)。

    例如,輸入以下指令:


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

    其中 jmqnotify 是外掛程式的名稱,

    -v 100 指定郵件佇列服務保留郵件 100 毫秒,再進行遞送或捨棄。值 0 表示會永久保留郵件;郵件不會逾時。

  8. 指定郵件為永久性。

    例如,輸入以下指令:


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

    其中 jmqnotify 是外掛程式的名稱,

    -v 1 指定郵件佇列服務中使用的郵件為永久性。允許的值為 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

    您也必須指定啟用外掛程式與郵件佇列服務進行通訊的參數。

    如需有關配置所有通知參數的逐步說明,請參閱配置 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. 以大於零的值指定 maxHeaderSize 參數,如以下範例所示:


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

    其中 jmqnotify 是外掛程式的名稱,

    1024 是可傳送的標頭大小上限。maxHeaderSize 的預設值為 0,表示傳送的郵件無標頭資訊。

  3. 以大於零的值指定 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. 以大於零的值指定 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 會停用通知。