Sun Java System Messaging Server 6.3 管理ガイド

5.6.1 IMAP IDLE の設定

IMAP 仕様に対する IMAP IDLE 拡張 (RFC 2177 で定義) では、新しいメッセージが到着したときやその他の更新がユーザーのメールボックスで発生したときに、IMAP サーバーが電子メールクライアントに通知する機能が追加されています。IMAP IDLE 機能には次の利点があります。

5.6.1.1 前提条件

IMAP IDLE 機能では、イベント通知サービス (ENS) を使用して通知を伝達します。IMAP IDLE を使用するには、次の ENS コンポーネントを設定してください。

Messaging Server 用の ENS の設定については、『Sun Java System Communications Services Event Notification Service Guide』を参照してください。

Ibiff 通知プラグインの設定については、「B.1 Messaging Server に ENS Publisher をロードする」を参照してください。

ProcedureIMAP IDLE を設定する

  1. メッセージストアを実行しているホストからの接続のみを受け付けるように enpd サーバーを設定します。

    メッセージストアホストへの接続を制限するには、ENS_ACCESS 環境変数を設定します。この環境変数は、enpd へのアクセスを許可するアクセス権のリストを設定します。構文は次のとおりです。


    setenv ENS_ACCESS 'allowdeny ipaddress|mask;
    allowdeny ipaddress|mask; ...' 

    次に、各引数について説明します。

    allowdeny

    + (許可を指定する場合) または — (拒否を指定する場合) のどちらかです。

    ipaddress

    ドット区切り 10 進数の IP アドレスを指定します。

    mask

    ドット区切り 10 進数の IP アドレスマスクを指定します。

    例:

    次の例では、ローカルホストへのアクセスのみを許可しています。


    setenv ENS_ACCESS '+127.0.0.1|255.255.255.255'

    次の例では、ローカルホストと、192.168.0.17 を除くすべての IP アドレス 192.168.0.* へのアクセスを許可しています。


    setenv ENS_ACCESS '+192.168.0.1|255.255.255.0;+127.0.0.1|255.255.255.255; \
    -192.168.0.17;255.255.255.255'
  2. mailsrv として configutil ユーティリティーを実行して、ENS サーバーが動作しているホストの名前を指定します。


    cd msg-svr-base
    ./configutil -o local.store.notifyplugin.ensHost -v "ipaddress"

    ここで、ipaddress は、ENS ホストマシンのドット区切り 10 進数の IP アドレスを指定します。

    例:


    cd msg-svr-base
    ./configutil -o local.store.notifyplugin.ensHost -v "127.0.0.1"
  3. 通知に使用するイベントキーを指定します。

    ENS イベントキー (ensEventKey) がデフォルト値に設定されていると、IMAP IDLE は動作しません。

    ensEventKey 値を %M で終わるように設定してください。文字列 %M は、イベントが発生したメールボックスの名前に置き換えられる置換コードです。

    次のように configutil コマンドを実行します。


    ./configutil -o local.store.notifyplugin.ensEventKey -v "eventkey"

    ここで、eventkey は ENS で使用される一意の識別子です。そのデフォルト値は enp://127.0.0.1/store です。イベントキーのホスト名の部分は、ENS が実行されているホストの判定には使用されず、単に識別子の一部でしかありません。

    例:


    ./configutil -o local.store.notifyplugin.ensEventKey -v "enp://127.0.0.1/store/%M"
  4. Messaging Server 用の ENS パブリッシャーを有効にする libibiff 通知プラグインファイルを読み込みます。

    次のように configutil コマンドを実行します。


    ./configutil -o local.store.notifyplugin -v "msg-svr-base/lib/libibiff"
  5. 受信箱だけでなく、すべてのユーザーメールボックスから通知が送信されるようにします。

    デフォルトでは、受信箱内で発生したイベントによってのみ通知が生成されます。ただし、IMAP IDLE RFC (2177) では、どのメールボックスでイベントが発生した場合でも常に、IDLE はクライアントに通知する必要があると規定されています。

    この RFC に準拠するために、IMAP IDLE 機能を使用するには、すべてのメールボックスの通知を有効にする必要があります。そうでない場合、IMAP サーバーは IDLE 機能を通知しません。

    すべてのメールボックスの通知を設定するには、configutil コマンドの noneinbox を 1 の値に設定します。


    ./configutil -o local.store.notifyplugin.noneinbox.enable -v 1

    ここで、-v 1 は、すべてのメールボックスからの通知を有効にします。

  6. root として Messaging Server をいったん停止してから再起動します。


    cd msg-svr-base/sbin
    
    ./stop-msg
    
    ./start-msg
  7. IMAP サービスに IDLE 機能が含まれたことを確認します。telnet を使用して IMAP のホストとポートに接続します。


    telnet IMAP_hostname port
    

    例:


    telnet myhost imap
    trying 192.18.01.44 ... 
    connected to myhost.siroe.com
    
    * OK [CAPABILITY IMAP4 IMAP4rev1 ACL QUOTA LITERAL+ NAMESPACE UIDPLUS
    CHILDREN BINARY UNSELECT SORT LANGUAGE STARTTLS IDLE XSENDER X-NETSCAPE
    XSERVERINFO X-SUN-SORT X-SUN-IMAP X-ANNOTATEMORE AUTH=PLAIN]
    myhost.siroe.com IMAP4 service (Sun Java(tm) System 
    Messaging Server 6.3-0.05 (built Feb 7 2006))