概述:
UW IMAP是由華盛頓大學開發的一個開放源碼的POP/IMAP服務器,這是一個使用的很廣泛的POP/IMAP服務器,象Mandrake、RedHat等比較流行的Linux發行版本都包含了UW IMAP服務器。但是在使用的過程中,常常會遇到一些這樣或那樣的問題,本文將討論在使用UW IMAP服務器時會碰到的一些問題,並給出相應的解決辦法,從而達到優化UW IMAP服務器性能的目的。
環境:
我們使用的試驗環境是RedHat7.1,需要用到以下軟件包:
imap-2000-9.rpm 可以從RedHat7.1的安裝光盤中找到。
imap.tar.Z 可以從FTP.cac.washington.edu/imap/imap.tar.Z下載。
思路:
首先我們安裝imap-2000-9.rpm包,這個包中包含了imapd和ipop3在PAM中的認證機制,然後我們將重新編譯後的imapd和ipop3代替rpm包中的imapd和ipop3,這樣避免了自己重新寫PAM的認證規則。
注意:
UW IMAP是沒有配置文件的,所以我們只能通過修改源程序以及采用其他一些輔助措施(比如優化xinetd)來達到對其進行性能調整的目的。但是這並不意味著需要您對linux下的c編程比較熟悉。
步驟:
一、獲得imap源代碼包
可以從ftp.cac.washington.edu/imap/imap.tar.Z下載imap的源代碼包,然後用以下命令解開源代碼包:
#tar xvzf imap.tar.Z
將生成imap-2001.BETA.SNAP-0107221451目錄,然後進入該目錄:
# cd imap-2001.BETA.SNAP-0107221451
二、修改源程序
通過修改源程序可以解決以下問題:
1.認證錯誤時,錯誤信息的出現有較長的延遲
為了防止別有用心的人猜測密碼,在認證錯誤後,有一段時間的延遲。為了取消該延遲,可以進入解開的源代碼目錄中的usr/osdep/unix目錄,然後編輯env_unix.c文件,查找sleep關鍵字,將sleep(3)這一行注釋掉。因為系統是通過該函數來達到延遲的目的的。
2.減小登錄超時時間
在用戶登錄過程中,如果一定時間內沒有輸入用戶名和密碼,系統會認為該會話超時,將終止會話,缺省超時時間是3分鐘,如果用戶量大,可以通過減小登錄會話超時時間來提高系統性能。
可以進入解開的源代碼目錄中的src/imapd目錄,然後編輯imapd.c文件,找到包含以下信息的一行:
#define LOGINTIMEOUT 3 MINUTES
將其中的3改成1,也即認為登錄超時時間為1分鐘。
3.取消DNS反向解析
有時候,系統會對客戶機進行反向DNS解析,這將大大降低系統效率,可以進入解開的源代碼目錄,編輯Makefile文件,找到包含EXTRACFLAGS的一行,將其改成:
EXTRACFLAGS=-DDISABLE_REVERSE_DNS_LOOKUP
從而取消對客戶機的反向DNS解析。
4.如果您想更改存放郵件的文件名,以及缺省的存放目錄,可以具體參考解開的源代碼目錄中的docs目錄,參考其中的CONFIG文件的說明。在無特殊要求時,是不需要這樣做的。
三、編譯
直接使用影子口令進行用戶認證時,可以使用make slx命令進行編譯。
如果要支持PAM則采用make lnp進行編譯。
四、替換源文件
編譯成功後,使用新的imapd和ipop3代替已有的imapd和ipop3:
# cp ipopd/ipop3d /usr/sbin/
# cp imapd/imapd /usr/sbin/
五、重載xinetd
# service xinetd reload