この節で説明する内容は、次のとおりです。
メッセージストア内で発生するさまざまな種類のイベントに対して通知メッセージを生成できます。たとえば、ユーザーがログインしたら、Login メッセージを生成して Message Queue ブローカに配信できます。
configutil パラメータは、生成する各メッセージの種類を指定します。各種の configutil パラメータを設定することによって、どのイベントでメッセージを生成するかを決定します。configutil パラメータは、1 つ以上の 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 プロトコルでは、メッセージが「開封済み」としてマークされました。 |
TrashMsg |
IMAP または HTTP によってメッセージに削除のマークが付けられました。メールクライアントの設定によっては、フォルダ内のメッセージが引き続きユーザーに表示される可能性があります。これらのメッセージは、破棄が実行された時点でフォルダから削除されます。 |
UnderQuota |
制限容量が OverQuota 状態から正常に戻りました。 |
UpdateMsg |
IMAP 操作によってメッセージがメールボックスに追加されました。たとえば、ユーザーが電子メールメッセージをメールボックスにコピーしました。メッセージヘッダーや本文が含まれている可能性があります。 |
サポートされている通知メッセージには、次の規則とガイドラインが適用されます。
ほとんどの通知メッセージのテキストは 1 つの空白文字です。これは、空のメッセージ本文が Message Queue で許可されないために使用されます。例外は以下のとおりです。
NewMsg、UpdateMsg、および DeleteMsg メッセージは、maxHeaderSize パラメータで設定された場合、メッセージヘッダーを含むことができます。maxHeaderSize を 0 より大きい値に設定してください。
DeleteMsg メッセージにメッセージヘッダーを含めるには、ExpungeHeaders パラメータを 1 の値に設定することも必要です。
NewMsg および UpdateMsg メッセージは、maxBodySize パラメータで設定された場合、メッセージ本文を含むことができます。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 スクリプト (ユーザーは通知の対象になっていない) が、すべてのメッセージを抑制するためにこのコマンドを発行する可能性があります。
通知は、テキストメッセージ、ボイスメール、イメージデータなどの、異なるタイプのメッセージに関する状態情報を配信できます。ユーザーはたいてい、これらの異なるメッセージタイプのメッセージが同じメールフォルダに格納されることを期待しています。たとえば、新しいテキストメッセージとボイスメールがユーザーの携帯電話の受信箱に到着することを希望する場合があります。
これらのメッセージタイプを設定するには、store.messagetype.enable などの configutil コマンドを使用します。メッセージタイプの設定と管理については、第 20 章「メッセージストアを管理する」にある「メッセージタイプの管理」を参照してください。
メッセージタイプが設定されていれば、JMQ 通知メッセージで特定のメッセージタイプを識別できます。通知メッセージをメッセージタイプごとに解釈し、各タイプに関する状態情報をメールクライアントに配信するように Message Queue クライアントを記述できます。
たとえば、異なるタイプの新しいメッセージがユーザーのメールボックスに到着したとします。たとえば、ユーザーの受信箱に 7 つの新しいボイスメールメッセージと 4 つの新しいテキストメッセージが存在することをユーザーに通知するデータを、NewMsg 通知メッセージに含めることができます。
次の通知メッセージに、特定のメッセージタイプを追跡するための情報を含めることができます。
NewMsg UpdateMsg ReadMsg TrashMsg DeleteMsg PurgeMsg OverQuota UnderQuota |
JMQ 通知機能は、現在メールボックス内にあるメッセージの数をメッセージタイプごとにカウントします。1 つのカウントを送信するのではなく、メッセージタイプごとのカウントを指定する配列が通知メッセージとともに送信されます。
メッセージ固有のカウントは numMsgs プロパティーに含まれ、通知メッセージで配信されます。ReadMsg および TrashMsg 通知メッセージでは、開封されたメッセージの数 (numSeen) と削除済みとしてマークされた数 (numDeleted) もメッセージタイプごとにカウントされます。
イベント通知サービスは、メッセージタイプをサポートしていません。メッセージタイプに関する情報を配信するには、JMQ 通知プラグインを使用してください。
通知メッセージや、Message Queue に必要な設定情報は、configutil パラメータで設定されます。
これらのパラメータとそのデフォルト値を表 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 |
エポック (1970 年 1 月 1 日 0:00:00 GMT) 以降のミリ秒数を指定します。 |
表 22–4 は、特定の通知メッセージに含まれるプロパティーを示しています。
各メッセージには、次の表に示すプロパティーのサブセットが含まれます。各メッセージに関連付けられたプロパティーのリストについては、表 22–5 を参照してください。
表 22–4 特定の通知メッセージに固有のプロパティー
プロパティー |
データ型 |
説明 |
---|---|---|
client |
ConstMQString |
メッセージに関連付けられた Message Queue クライアントの IP アドレス。 |
diskquota |
MQInt32 |
メッセージに関連付けられたユーザーのディスク制限容量 (K バイト単位)。この値が -1 に設定されている場合は、制限容量がないことを示します。 |
diskquotaused |
MQInt32 |
メッセージに関連付けられたユーザーによって使用されたディスク容量 (K バイト単位)。 |
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 |
メッセージタイプごとに指定された、開封済み (読み取り済み) としてマークされたメールボックス内のメッセージの総数。メッセージタイプが設定されている場合は、numSeennn プロパティーに、メッセージタイプ 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 |
メッセージに関連付けられたユーザー ID。 |
サブスクライバは、メッセージ参照を解析する場合、ドキュメント化されていないプロパティーを許可するようにしてください。これにより、新しいプロパティーが追加された場合でも将来の互換性が確保されます。
newflags および oldflags プロパティーは 5 文字の文字列です。文字列は次の値を持つ必要があります。
/answered フラグが設定されている場合、最初の文字は "A" です。設定されていない場合は空白文字 (" ") です。
/flagged フラグが設定されている場合、2 番目の文字は "F" です。設定されていない場合は空白文字 (" ") です。
/deleted フラグが設定されている場合、3 番目の文字は "D" です。設定されていない場合は空白文字 (" ") です。
/seen フラグが設定されている場合、4 番目の文字は "S" です。設定されていない場合は空白文字 (" ") です。
/draft フラグが設定されている場合、5 番目の文字は "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、numMsgsn、numSeenn、および numSeenDeletedn プロパティーが通知に含まれるのは、メッセージストアでメッセージタイプが定義されている場合だけです。