您可以透過使用 configutil 指令來執行 Messaging Server IMAP 服務的基本配置。本節列出了某些較常用的 IMAP 服務選項。完整清單可在「Sun Java System Messaging Server 6.3 Administration Reference」中的第 3 章「Messaging Server Configuration」中找到。如需更多資訊,另請參閱:
指令行:您可以在指令行設定 IMAP 屬性的值,方法如下
啟用或停用 IMAP 服務:
configutil -o service.imap.enable -v [ yes | no ]
指定連接埠號:
configutil -o service.imap.port -v number
為經由 SSL 的 IMAP 啟用單獨連接埠:
configutil -o service.imap.enablesslport -v [ yes | no ]
為經由 SSL 的 IMAP 指定連接埠號:
configutil -o service.imap.sslport -v number
啟用或停用 IMAP 服務的密碼登入:
configutil -o service.imap.plaintextmincipher -v value
如果 value 大於 0,則會停用純文字密碼,除非已啟動安全層 (SSL 或 TLS)。此參數會強制使用者對他們的用戶端啟用 SSL 或 TLS 以進行登入,從而防止他們的密碼在網路上暴露。預設值為 0。
若要設定每個程序的網路連線數上限 (請參閱5.3.2 每個程序的連線數目以取得其他資訊):
configutil -o service.imap.maxsessions -v number
若要設定連線的最長閒置時間 (請參閱5.3.4 斷開閒置連線以取得其他資訊):
configutil -o service.imap.idletimeout -v number
若要設定每個程序的執行緒數上限 (請參閱5.3.3 每個程序的執行緒數目):
configutil -o service.imap.maxthreads -v number
若要設定程序的最大數目 (請參閱5.3.1 程序數目):
configutil -o service.imap.numprocesses -v number
指定協定的歡迎大標題:
configutil -o service.imap.banner -v banner
在 RFC 2177 中定義的 IMAP 規格 IMAP IDLE 延伸,可讓 IMAP 伺服器在使用者電子信箱中有新郵件抵達及發生其他更新時,通知郵件用戶端。IMAP IDLE 功能有下列優點:
郵件用戶端無須輪詢 IMAP 伺服器是否有內送郵件。
消除用戶端輪詢可降低 IMAP 伺服器上的工作負荷量,並改善伺服器的效能。當使用者收到極少的郵件或未收到郵件時,使用用戶端輪詢會是浪費之舉;用戶端會繼續以配置的間隔 (一般是每 5 或 10 分鐘) 進行輪詢。
郵件用戶端向使用者顯示新郵件的時間,會接近郵件抵達使用者電子信箱的實際時間。郵件狀態的變更也會以近似即時間顯示。
IMAP 伺服器可通知用戶端有新郵件或更新的郵件,而不需要等候下次 IMAP 輪詢郵件。相反地,IMAP 伺服器會在新郵件抵達或郵件變更狀態時立刻收到通知。接著,伺服器會透過 IMAP 協定通知用戶端。
IMAP IDLE 功能依賴於事件通知服務 (ENS) 傳遞通知。若要使用 IMAP IDLE,必須配置下列 ENS 元件:
至少在一個主機上有 enpd 伺服器
所有訊息儲存區主機上皆有 iBiff 通知外掛程式
如需有關為 Messaging Server 配置 ENS 的資訊,請參閱「Sun Java System Communications Services Event Notification Service Guide」。
如需有關配置 iBiff 通知外掛程式的資訊,請參閱B.1 在 Messaging Server 上載入 ENS 發佈程式。
配置 enpd 伺服器僅接受來自執行郵件儲存的主機之連線。
若要限制與郵件儲存主機的連線,請設定 ENS_ACCESS 環境變數。環境變數會設定允許存取 enpd 的權限清單。語法如下:
setenv ENS_ACCESS 'allowdeny ipaddress|mask; allowdeny ipaddress|mask; ...' |
其中
可以是 + (指定允許) 或 — (指定拒絕)
指定帶點的十進位 IP 位址
指定帶點的十進位 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' |
執行 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" |
指定要用於通知的事件金鑰。
如果將 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" |
載入 libibiff 通知外掛程式檔案,以啟用 Messaging Server 的 ENS 發佈程式。
執行以下 configutil 指令:
./configutil -o local.store.notifyplugin -v "msg-svr-base/lib/libibiff" |
讓通知從所有使用者電子信箱傳送,而不只是收件匣。
依預設,通知僅會由收件匣中發生的事件產生。但是,IMAP IDLE RFC (2177) 會指定 IDLE 必須在任何電子信箱發生事件時通知用戶端。
為了符合 RFC,IMAP IDLE 功能需要為所有電子信箱啟用通知。若未啟用,IMAP 伺服器將無法通告 IDLE 功能。
若要為所有電子信箱配置通知,請將 configutil 指令 noneinbox 設定為值 1:
./configutil -o local.store.notifyplugin.noneinbox.enable -v 1 |
其中 -v 1 會從所有電子信箱啟用通知。
停止然後重新啟動 Messaging Server。
cd msg-svr-base/sbin ./stop-msg ./start-msg |
請驗證 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)) |