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 功能依赖于事件通知服务 (Event Notification Service, ENS) 来传播通知。要使用 IMAP IDLE,您必须配置以下 ENS 组件:

有关为 Messaging Server 配置 ENS 的信息,请参见Sun Java System Communications Services Event Notification Service Guide

有关配置 IBiff 通知插件的信息,请参见B.1 在 Messaging Server 中装入 ENS Publisher

Procedure配置 IMAP IDLE

  1. enpd 服务器配置为仅接受来自运行消息存储的主机的连接。

    要限制到消息存储主机的连接,请设置 ENS_ACCESS 环境变量。该环境变量设置允许访问 enpd 的权限列表。语法如下:


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

    其中

    allowdeny

    可以为 + (指定允许)或 — (指定拒绝)

    ipaddress

    指定点分十进制 IP 地址

    mask

    指定点分十进制 IP 地址掩码

    示例:

    以下示例仅允许访问本地主机:


    setenv ENS_ACCESS '+127.0.0.1|255.255.255.255'

    以下示例允许访问本地主机和所有 IP 地址 192.168.0.* ,但 192.168.0.17 除外:


    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. 运行 configutil 实用程序,以指定运行 ENS 服务器的主机的名称。


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

    其中,ipaddress 指定了 ENS 主机的点分十进制 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. 加载 libibiff 通知插件文件,它将启用 Messaging Server 的 ENS Publisher。

    运行以下 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. 停止 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))