IMAP(Inte.net Mesage Aclearcase/" target="_blank" >ccess Protocol)是INTENET上標準的訪問消息(mail/news等),IMAP服務器上存儲消息,并提供客戶訪問能力。有關安裝的問題的一些回答請到以下網址查找:
.
有關該軟件的一些反饋的文檔請發送到. 另外,郵件列表討論cyrus IMAP服務器與其他IMAP服務軟件的一些情況。更多的信息請到in the mailing-list document.
升級情況(略)
首先要說明信息
必須下列的程序或軟件包:
1.makedepend 在本安裝包的makedepend子目錄下,在安裝IMAPD之前先安裝。如果失敗的話,配置腳本將會用一個假的shell腳本代替makedepend,在用“make all”之前,需用“make clean”清除.
2.Tcl 版本必須是.7.5以上。怎樣獲得Tcl請參看comp.lang.tcl FAQ。
3.如果需要Kerberos支持,那么在在安裝Kerberos時必須包含DES庫文件,包括Solaris在內的一些商業版本可能沒有DES支持,不能用。下面介紹的美國或加拿大的一些網站上可能可以獲得。你也可以從這個網站獲得有關的信息。
4.建議你的網站安裝snedmail8.7.1以上的版本(筆者用的postfix)。有關sendmail的包可以從以下的網站獲得from
5.如果你希望你的IMAP能提供網絡新聞組服務,必須從INN的服務器上接收。
編譯IMAP服務器
如果你解開了壓縮包(看README文件以獲得更多的信息),“cd”到“cyrus-imapd-1.5.19”目錄(如果你版本是1.5.19.)配置文件和許多子目錄都在此目錄下,用“./configure”就能配置該軟件。
配置的程序在配置過程中將試圖正確地賦予系統變量適當的值,并將結果存在每個目錄的生成的Makefile中,最后,它將生成“config.status”文件,使你可以用它再次創建當前的配置?!癱onfig.cache”文件保存結果使得能把配置加速?!?config.log”保存編譯器的輸出結果。
運行“configure”需要一些時間,在運行過程中,它將顯示一些檢查的結果信息。
你可以在不同的目錄下編譯這些源碼,這樣做允許你能同時編譯適合各種情況的IMAP服務器。不過,make的版本必須支持“VPATH”變量(比如GNU的“make”),”cd”到你所需的目錄下,并執行“configure”。它將自動檢測源碼所在目錄。。。。。。
“make install”默認地把文件安裝在“/usr/local/bin”“/usr/local/man”……下,你也可以通過用“-prefix=PATH”指定安裝路徑。
你也可以單獨列出安裝中的明確或不依賴結構的文件,如果在配置中帶上“—exec-prefix=PATH”的選項,安裝包將會用這個路徑安裝程序和支持庫。文檔和數據文件將會仍然用比較規則的路徑。
默認情況下,服務進程將被安裝在“/usr/cyrus/bin”.你也可以在配置中特別用“—with-cyrus-prefix-PATH”去指定。
以下將簡要列出“configure”選項的說明:
--cache-file=FILE 指定測試輸出文件(默認為config.cache),也可以用“/dev/null/表示關閉”
--help 顯示幫助信息,會顯示有關的選項
--quiet --silent -q
不輸出任何信息
--srcdir=DIR 指定源碼目錄,一般配置程序自動能搜尋。
--version 顯示版本
--with-cyrus-user=USER
指定用戶
--with-cyrus-group=USER
指定組用戶
--with-startdir=PATH
指定pwcheck和ptclient的目錄,默認在/var下。
--with-login=METHOD
指定登陸認證的模塊,一般有如下模塊:
unix /etc/passwd文件
unix_pwcheck unix shadow文件通過pwcheck守侯進程
krb Kerkeros 4
krb_pwcheck krb 和 pwcheck
如果你用shadow來認證,配置時帶上—with-login=unix_pwcheck的懸想。而且不要以root的身份運行它。
--with-pwcheck=METHOD
指定用pwcheck進行密碼檢驗,只有在登陸名稱以“-pwcheck”結尾時這割選項才有用。
--with-auth=METHOD
指定認證模塊,有unix\krb\krv_pts
--with-notify=METHOD
--without-notify
指定郵件確認的方法。確定方法有如下幾種:zephyr/no,默認是zephyr
--with-krb=PATH
--without-krb
指定kerberos的庫文件和頭文件。默認在”/usr/local”下。
--with-inn=PATH
指定INN NEWSLIB庫的目錄。默認會搜索一些目錄。只有在你需提供新聞組服務的時候用這個選項。另外,Kerkeros 4需要DES庫的支持,
--with-tcl=PATH
--without-tcl
指定tcl庫和頭文件的路徑,默認將在“/usr/local”下,在編譯“cyradm”時必須TCL。如果沒有請帶上選項“—disable-cyradm”。
--with-zephyr=PATH
--with-zephyr
指定zephyr庫和頭文件。默認在“/usr/local/”下,
--with—lock=METHOD
指定鎖定方法,一般有兩種:flock(),fcntl().默認是flock();
--disable-cyradm
不編譯cyradm管理客戶端。
--disable-privacy
關閉網絡安全驗證選項
--enable-amssync
打開AMS支持
--enbale-cmulocal
打開CMU的內置支持
可能有些系統需要一些不常用的配置選項,你可以通過“./configure”來初始化一些變量的環境。如果你用的是B_shell,可以用如下的命令;
CC=c89 CFLAGS=-02 LIBS=-lposix ./configure
在有“env”的系統里可以用如下命令:
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
在編譯時,你可能需要修改以下這些環境變量:
CC C編譯器,默認是cc/gcc,
CFLAGS C編譯器的調試和優化選項
CPPFLAGS C預編譯的頭文件搜索項和其他混合選項,默認是空的
DEFS 配置選項,如“-Dfoo -Dbar”
LIBS 鏈接的庫,如“-lfoo –lbar”
如果你需要一些不常用的包編譯,建議你先仔細熟悉configure的配置,或mail to
在你順利完成配置后,運行下面命令:
make depend
make all CFLAGS=-0
如果你想設CFLAGS LDFLAGS 或者:
make all CFLAGS=-02 LDFLAGS=-s
配置imap服務器
以下將介紹shell腳本的運行和配置文件的修改。
1. 為Cyrus建個用戶和組,比如:“Cyrus”用戶,“mail”組。這是configure默認的選項。
2. 以root身份運行
make install
3.Cyrus的IMAP服務器用BSD4.3的SYSLOG記錄系登錄消息。如果你的系統中沒裝syslog
請到cyrus-imapd-1.5.14/syslog/目錄下拷貝:
mv syslogd /etc/syslogd
mv syslog.conf /etc/syslog.conf
如果你沒copy syslog,請確認支持“local6.debug”:文件應該被包括:
local6.debug /var/adm/imapd.log
創建 imapd.log文件:
touch /var/adm/impad.log
4.創建”/etc/imap.conf”文件,這里給個例子
configdirectory: /var/imap
partition-default: /var/spool/imap
srvtab: /var/imap/svrtab
要想詳細了解配置文件的信息,請用“man imapd.conf”。
注意:平時的用戶不能是管理員,管理員有權授予普通用戶接收MAIL的權限。
5.創建配置目錄(目錄名為你在imapd.conf已指定的),配置目跟“/usr/lib/news”目錄很相似,它存儲IMAP的全部信息。
本文已“/var/imap”為例,記住該目錄的所有者是用戶cyrus和mail組,禁止其他用戶訪問。操作命令如下:
cd /var
mkdir imap
chown cyrus imap
chgrp mail imap
chmod 750 imap
6.在該配置目錄下,創建空文件“mailbox”和一些子目錄。
cd imap
true >> mailbox
mkdir user quota proc log msg
chown cyrus *
chgrp mail *
7.創建“/etc/imapd.conf”里指定的partition目錄,本文以“/var/spool/imap”為例,主要是用來存儲郵箱信息的.不象新聞組,Cyrus允許你可以有多個partition。但不能用“new”作為名稱,它是網絡新聞組專用的。
cd /var/imap
mkdir imap
chown cyrus imap
chgrp mail imap
chmod 750 imap
8.LINUX.系統上的設置:設置user,quota,partition.,mqueue:
cd /var/imap
chattr +S . user quota
chattr +S /var/spool/imap
chattr +S /var/spool/mqueue
9.如果IMAP被配置成使用pwcheck進程,講用pwcheck進程驗證,而非shadow。創建“/var/pwcheck”目錄,并為cyrus只讀,并且把進程/usr/cyrus/bin/pwcheck設成系統啟動時就運行的。
mkdir /var/pwcheck
chown cyrus /var/pwcheck
chmod 700 /var/pwcheck
10.如果IMAP被編譯成支持Kerberos v4認證,為服務創建一個Kerberos v4身份,在“srvtab”文件里增加服務的關鍵字。此文件為cyrus用戶只讀。IMAP服務器的身份標識格式為 ”host為主機的節點名,“REALM”是機器的Kerberos域。
下面給出一例子(主機節點名為foobar,域名為ANDREW。CMU。EDU):
ksrutil –f /var/imap/srvtab add
文件srvtab如下:
Name: imap
Instance: foobar
Realm:ANDREW.CMU.EDU
Version number:
New principal:imap.foobar@ANDEW.CMU.EDU;version 0
Is this correct?(y,n)[y]
Password:
Vrifying ,please re-enter Password:
Key successfully added.
Would you like to add another key?(y,n)[y]n
如果你要裝Kerberized POP,在srvtab中也要為之創建一個關鍵字。
改該文件的屬主:
chown cyrus /var/imap/srvtab
11.在/etc/services下打開相關服務。
pop3 110/tcp
imap 143/tcp
imsp 406/tcp
kpop 1109/tcp
12.在/et/inetd.conf文件中增加
imap stream tcp nowait cyrus /usr/cyrus/bin/imapd imapd
如果你想運行pop3協議,加入;
pop3 stream tcp nowait cyrus /usr/cyrus/bin/pop3d pop3d
如果你想運行KPOP,課加入:
kpop stream tcp nowait cyrus /usr/cyrus/bin/pop3d pop3d
13.如果你想支持finger服務,請把“/etc/services”和“/etc/inetd.conf”下的有關選項打開,
注意,必須有finger的客戶端支持,然后分別做如下操作:
在“/etc/services”下增添:
fud 4201/udp
在“/etc/inetd.conf”下增添:
fud dgram udp wait cyrus /usr/cyrus/bin/fud fud
14.重啟inted.在很多系統可以用如下命令“kill –HUP pid”
15.你的sendmail(如果你用sendmail)版本必須是8.7以上的。
16.配置sendmail使它能發送當地的郵件到IMAP的服務器。詳細可看sendmail壓縮包中的cf/README和cf/cf/cyrusproto.mc.
17.編輯/etc/group并增加“daemon”用戶到“mail”組,即允許sendmail運行“deliver”程序來投遞郵件給IMAP服務器。
18.Cyrus IMAP默認重復投遞,可用“deliver”加“-e”來實現,從而使投向同一個郵箱的郵件不會有相同的ID.你也可以用cron來調用“/usr/cyrus/bin/deliver –E 3”每天定時地清除投遞的數據庫。也可以用“mkdir /var/imap/deliverdb”來創建“deliverdb”目錄儲存數據庫文件。
如果你想讓你的IMAP服務器能提供netnets newsgroup服務,接著以下步驟:
1.為“news”分區創建一個目錄,此目錄不同于news的spool目錄,比如“/var/spool/imap-news”,則操作如下:
cd /var/spool
mkdir imap-news
chown cyrus imap-news
chgrp mail imap-news
chmod 750 imap-news
2.設置partition-news,newsspool的值。
partition-news:/var/spool/imap-news
newsspool:var/spool/news
3. 用戶cyrus必須對out.going目錄有寫的權限。
4. 在newsfeeds文件增加以下一行:
collectnews!:*:Tf,WO:collectnews
5. 在crontab中增加兩項調用;
“/usr/cyrus/bin/feedcyrus”(每隔10分鐘)
“/usr/cyrus/bin/syncnews/var/news/active>/dev/null 2>&1”(每晚)
測試IMAP服務器
必須重啟你的機器以及執行以下的步驟,也可以參看瑞、.
1. 如果你的IMAP服務是支持Kerberos v4認證的,以cyrus用戶的身份運行“krbck”。該程序能診斷你的配置錯誤。
2. telnet到服務器的IMAP端口:
如:telnet foobar imap
如果服務正在運行,你將看到如下信息:
Trying 128.2.232.95...
Connected to foobar.andrew.cmu.edu.
Escape character is ^].
* OK foobar.andrew.cmu.edu Cyrus IMAP4 v1.5.14 server ready
如果看不到OK的信息,就可能出了問題了??梢杂谩發ogout”命令終止連接。
3.用“imtest”命令測試登錄的認證;
/usr/local/bin/imtest –p foobar imap
如果服務正在運行,你將看到如下信息;
* OK foobar.andrew.cmu.edu Cyrus IMAP4 v1.5.14 server ready
Password:
. LOGIN smith X
. OK User logged in
如果看不到OK的信息,就可能出了問題了,而且在syslog里會有相關的報錯記錄??梢杂谩發ogout”命令終止連接。
4.如果你的IMAP服務器編譯時支持Kerberos v4 認證,用imtest命令測試,轉向cyrus的目錄,做如下操作:
/usr/local/bin/imtest -k foobar imap
* OK foobar.andrew.cmu.edu Cyrus IMAP4 v1.5.14 server ready
. AUTHENTICATE KERBEROS_V4
+ Ln8h6Q==
BAcBQU5EUkVXLkNNVS5FRFUAOCA+0y5YnrqIVikng46sam7RSObZXCVSA9xCx
BZSGgOy9ehHRj8NQjLjxDpib0D9uT0fo7QaXhLM6zCp9dQ1pX4FfNO2V39vBp
Q19QIK4S1410prvM2c45qeizecI7zAvA=
2cRhIC+aH70WHqYaW18YnQ==
. OK User logged in (no protection)
__No integrity protection__
郵箱管理
用“cyradm”可以創建、刪除、限制和控制郵箱(詳細可看幫助)??捎谩癱yradm ”命令啟動,提示符將變成“>”。你可以用“help”命令,將會出現如下信息:
createmailbox, cm create a mailbox
deleteaclmailbox, dam delete an ACL on a mailbox
deletemailbox, dm delete a mailbox
help get help on commands
listaclmailbox, lam list the ACL on a mailbox
listmailbox, lm list mailboxes
listquota, lq list quota on root
listquotaroot, lqr, lqm list quota roots on mailbox
quit exit program
renamemailbox, renm rename a mailbox
setaclmailbox, sam set an ACL on a mailbox
setquota, sq set quota limits
注意:如果你的系統中,Kerberos v4 沒有在運行,那你必須為用戶設置密碼。
根據郵箱的命名慣例,要求任何用戶的第一級郵箱(收件箱)必須時“user.”格式的??梢杂萌缦旅顒摻ㄒ粋€新郵箱:
createmailbox user.
比如為userid為"smith"的用戶創建郵箱,可用如下命令:
createmailbox user.smith
用如下命令可限制空間:
setquota user.smith 10000。
在用戶的第一級郵箱建立(收件箱)后,用戶能自己建立下一級的郵箱,比如“smith”用戶為自己分別建立工作和休閑的郵箱:
user.smith.work
user.smith.play
在cyradm的幫助頁(1)里有有關訪問權限的詳細內容。必須注意的是,管理員在刪除一個郵箱之前必須授權她自己可以刪除訪問。你可用如下命令:
setaclmailbox d
deletemailbox
在你的IMAP服務配置好之后,還要再配置一個MAIL接口,比如Pine.當然這就不是本章的話題了