Jabber管理員手冊中文版
目錄介紹背景核心功能規(guī)劃Jabber 應(yīng)用系統(tǒng)需求操作系統(tǒng)硬件軟件帶寬DNS端口和防火墻服務(wù)器安裝基本配置配置主機名文件系統(tǒng)設(shè)置管理功能授予管理權(quán)限察看在線用戶發(fā)送廣播信息企業(yè)內(nèi)部互聯(lián)網(wǎng)設(shè)置禁用“服務(wù)
目錄
介紹
背景
核心功能
規(guī)劃Jabber 應(yīng)用
系統(tǒng)需求
操作系統(tǒng)
硬件
軟件
帶寬
DNS
端口和防火墻
服務(wù)器安裝
基本配置
配置主機名
文件系統(tǒng)設(shè)置
管理功能
授予管理權(quán)限
察看在線用戶
發(fā)送廣播信息
企業(yè)內(nèi)部互聯(lián)網(wǎng)設(shè)置
禁用“服務(wù)器-服務(wù)器”通訊
禁用注冊新用戶功能
更新服務(wù)器
NAT 設(shè)置
安全
使用SSL 安全連接
安全認證
獲得幫助
報告漏洞和提供補丁
介紹
這篇文章介紹如何安裝,配置和管理jabberd.
Jabberd 服務(wù)器是最早的基于Jabber 協(xié)議的開放源代碼服務(wù)器,是在一個公司內(nèi)部或公用IM 系統(tǒng)中最流行的Jabber 服務(wù)器。然而,還有很多其他的Jabber 服務(wù)器,包括一些開放源代碼項目(參看http://www.jabberstudio.org/)和商業(yè)提供者,如i3connect, Jabber, Inc., Jabcast, and Tipic。作為Jabber 協(xié)議的管理者,Jabber 軟件基金會(JSF)不會區(qū)分不同軟件的實現(xiàn)方式。JSF 注重 的是Jabber 的發(fā)展,和Jabber 技術(shù)的傳播。
強烈推薦Jabberd 相關(guān)支持人員,服務(wù)器管理員訂閱JADMIN 郵件列表。關(guān)于Jabber 的更多信息,請參考Jabber Software Foundation網(wǎng)站。
背景
,Jabber 項目作為自由和開放源代碼項目,是由Jeremie Miller在1998年開始開發(fā)的,并作為其它傳統(tǒng)專有IM 系統(tǒng),像AIM ,ICQ ,MSN 和YAHOO 的替代品 ,1999年在Slashdot 上發(fā)布了第一個公告。Jabber 項目的核心是jabberd 服務(wù)器,這個模塊化服務(wù)器是用C 寫成,并使用GNU pth線程庫。 經(jīng)過一年的開發(fā),Jabberd 1.0在2000年5月發(fā)布。2000年10月發(fā)布了1.2版,之后2001年1月發(fā)布1.4版,2001年4月發(fā)布1.4.1版,2002年2月發(fā)布1.4.2版。Jabberd 開發(fā)小組正在積極修補1.5開發(fā)版,并將最終作為2.0版在2003年的某個時候發(fā)布。Jabberd 服務(wù)器完全兼容于Jabber Software Foundation協(xié)議。
核心功能
總體上,Jabber 服務(wù)器運行下面這些服務(wù):
允許一個來自兼容的客戶端或者服務(wù)器端組件的TCP 連接
管理從客戶端和組件進入和發(fā)出的XML 流
分發(fā)核心Jabber 數(shù)據(jù)類型(
為連接的客戶維護會話信息(通常是IM 用戶)
如果需要,打開和其他服務(wù)器的合法連接,路由信息
為組件儲存信息,尤其是IM 用戶,包括每一個用戶的聯(lián)系人和一些客戶屬性
附加屬性--像群聊,用戶目錄,和與其他IM 系統(tǒng)(AIM, ICQ, MSN, and Yahoo)交互-- 不是當前核心功能的一部分,因此沒有寫進這個HOWTO 。 請察看“Jabber Component HOWTO”進一步獲得關(guān)于如何添加這些屬性到你的Jabber 服務(wù)器的信息。
規(guī)劃Jabber 應(yīng)用
在安裝任何軟件以前,尤其是一個重要的網(wǎng)絡(luò)架構(gòu)組件,像Jabber 服務(wù)器,確定你的需求和規(guī)劃你的應(yīng)用是很重要的。 現(xiàn)在Jabber 服務(wù)器可以被廣泛應(yīng)用于下列環(huán)境中,包括:
小的開發(fā)團隊
小型到中型公司的企業(yè)內(nèi)部網(wǎng)
大學(xué)和學(xué)院
基于web 的團體
Internet 提供商
大公司的企業(yè)內(nèi)部網(wǎng)
如何使用你的Jabber 服務(wù)器,將毫無疑問的影響你的決定,包括硬件,操作系統(tǒng),帶寬,網(wǎng)絡(luò)
,配置,防火墻,安全,數(shù)據(jù)庫連接,等等。 你要在開始的時候做出一個主要的決定,要在什么操作系統(tǒng)下運行Jabber 。Jabberd 被設(shè)計用來在Linux 和其他多種不同風(fēng)格的Unix (包括AIX, Solaris, HP-UX, BSD, 和 Mac OS X)上運行。雖然jabberd 已經(jīng)被移植到到了Windows 上,但是這個移植版本運行的并不好,不提倡使用。 (這篇文章沒有收錄Windows 的移植版本;要察看詳細信息,請參考Jabberd Windows HOWTO.)
另外,考慮一下你要提供的服務(wù)的帶寬也是很重要的。需要提供單一的點對點的系統(tǒng),還是群聊系統(tǒng)?想讓你的用戶和外界傳統(tǒng)的IM 系統(tǒng)通訊嗎?像AIM ,ICQ ,MSN ,YAHOO 。這些服務(wù)不是Jabberd 缺省的一部分,你必須提供組件。 雖然這增加了用戶的使用功能,但也使你的規(guī)劃更復(fù)雜,管理更困難。 (詳細信息,請參考Jabber Component HOWTO.)
最后,想一想如何把Jabber 集成到已經(jīng)存在的網(wǎng)絡(luò)中。例如,你想每一個用戶的賬號使用他們的電子郵件地址或者網(wǎng)絡(luò)登錄名,或者你想用已經(jīng)存在的用戶數(shù)據(jù)庫(例如,你們公司的LDAP 數(shù)據(jù)庫) ,而不是缺省的文件系統(tǒng)存貯方法。滿足你的 這些需求,可能會帶來更大的復(fù)雜性(詳細信息,參考即將出爐的Jabberd Database Integration HOWTO.)
系統(tǒng)需求
這一部分HOWTO 定義系統(tǒng)需求。
操作系統(tǒng)
雖然Jabberd 主要是GNU/Linux下開發(fā)的,但是他已經(jīng)在不同的操作系統(tǒng)下測試過了。 1.4.2版可以運行在以下系統(tǒng)中:
AIX
FreeBSD
HP-UX
IRIX
Linux
Mac OS X
NetBSD
OpenBSD
Solaris 2.6, 7, 8
上面列出的系統(tǒng)不像Linux 使用得那么廣泛,所以安裝的時候可能會遇到一些麻煩。特殊的需求和說明,在這篇文章中會標出。通常,非GUN Unix系統(tǒng)需要GNU make,而不是你自己系統(tǒng)里的make 。當你在非GNU 系統(tǒng)上運行Jabberd 時,GNU make將會解決你的大部分問題,.
,注意: 這篇文章沒有講關(guān)于Windows 版的jabberd 1.4.2。請參考Jabberd Windows Guide察看詳細信息。
硬件
硬件需求決定于你所預(yù)期的用戶數(shù)。 以作者的經(jīng)驗,大多數(shù)jabberd 都是用在像導(dǎo)航項目,內(nèi)部網(wǎng)站,開發(fā)平臺,等等這些上面,大約100到1000人。 由于同時在線的人數(shù)不會超過50(例如,jabber.org 的服務(wù)器通常只有2的用戶在線) ,我們可以適當?shù)脑u估出大概會有500人同時在線。 對于這種情況,硬件需求是最小的:也許一個奔騰級的工作站加512M 內(nèi)存就夠了。
如果客戶端數(shù)量巨大,那需要做一些調(diào)整。做過一個試驗,jabberd 服務(wù)器可以達到10,000個用戶同時在線,它是被設(shè)計用來從概念上證明,一臺非工業(yè)級的服務(wù)器也可以提供非常大數(shù)量的服務(wù)。 例如,根據(jù)你所使用的操作系統(tǒng),你可能需要修改OS 級別的設(shè)置來限制同一個IP 的同時連接數(shù)量,或者操作系統(tǒng)的file descriptor. (對于Linux ,缺省是限制到1024 file descriptors,這些可以通過proc 設(shè)置) 。 由于大量用戶的情況在通常的規(guī)劃之外,我不再討論他們,但是我也希望在下一個修訂版中添加更多關(guān)于可縮放服務(wù)器的信息。
軟件
Jabberd 需要下列軟件:
GNU pth v1.4.0。請注意,GNU pth 1.4.1與jabberd 1.4.2是不不兼容的,所以如果 你的系統(tǒng)里已經(jīng)安裝了pth 1.4.1,請先刪除它,然后安裝pth 1.4.0!如果你的系統(tǒng)里沒有安裝GNU pth,jabberd 安裝程序會自動安裝它 。
GNU make。GNU make是GNU/Linux操作系統(tǒng)標準的一部分,但是在非GNU 系統(tǒng)中,像FreeBSD 和Solaris 中必須單獨安裝。不像GNU pth,你必須自己安裝GNU make(jabberd不會為你安裝它) 。
OpenSSL 。這是可選的。如果你想讓你的客戶使用SSL 連接,你必須在安裝jabberd 1.4.2以前安裝它。
帶寬
通常情況下,一個Jabber 客戶端連接需要大概15字節(jié)/秒。這意味著1000個用戶將會消耗15kbs 的帶寬,10000個用戶將會消耗150kbs 的帶寬, 依次類推。注意,這是指同時在線的用戶數(shù),不是注冊的用戶數(shù)(當前用戶數(shù)取決于你自己的規(guī)劃,但是一般對于ISP 只有少于5的用戶同時在線,而在企業(yè)中只有少于50的用戶同時在線。請 以此為參考。
DNS
像下面描述的那樣,也許你想用全稱域名(FQDN)來運行jabberd 服務(wù)器。這不是在每種情況下都是必需的,但是如果你想和其他jabber 服務(wù)器通訊,或者 你想讓局域網(wǎng)以外的用戶訪問服務(wù)器,那服務(wù)器的主機名(hostname)必須是一個全稱域名(fully-qualified domain name)。這同樣適用于你想用jabberd 服務(wù)器提供 相關(guān)服務(wù)的子域(例如,一個Jabber 用戶的目錄或會議服務(wù)) 。因此你必須要求系統(tǒng)管理員在DNS 域名表中添加你的主機名和相關(guān)的子域。
端口和防火墻
,IANA 規(guī)定了Jabber 使用的兩個端口:一個用于“客戶-服務(wù)器”通訊(端口5222) ,另一個用于“服務(wù)器-服務(wù)器”通訊(端口5269) 。 如果想讓jabber 客戶端能夠和服務(wù)器通訊,必須保證TCP 5222端口是開著的。 如果想讓Jabber 服務(wù)器能夠向其他jabber 服務(wù)器發(fā)送消息,必須保證TCP 5269端口是開著的。另外,如果需要為其他IM 系統(tǒng)安裝網(wǎng)關(guān),需要打開指定的與其他系統(tǒng)通訊的端口。請參考README 或者其他文檔來確定所要安裝的網(wǎng)關(guān)軟件需要打開的端口(例如,MSN 的網(wǎng)關(guān)端口1863是) 。
一些Jabber 服務(wù)器在公司內(nèi)部網(wǎng)或者防火墻內(nèi)使用,如果不想和組織外部的Jabber 服務(wù)器通訊,你當然不想打開這些端口。 在其他情況下(例如,公司有遠程雇員) ,可以打開標準jabber 客戶端端口5222(或者5223端口來使用SSL 連接) ,這樣防火墻之外的用戶也可以和服務(wù)器通訊了。另外,如果想讓用戶和外部服務(wù)器用戶通訊,需要打開標準jabber 服務(wù)器端口5269來實現(xiàn)“服務(wù)器-服務(wù)器”的通訊。一種更復(fù)雜的配置是一個服務(wù)器在防火墻內(nèi)部供內(nèi)部用戶使用,一個服務(wù)器在DMZ 區(qū)供外部用戶使用, 通過5269端口在兩個服務(wù)器之間建立“服務(wù)器-服務(wù)器”的信任通道(通過在防火墻的“控制列表”中只打開這兩個服務(wù)器之間的5269端口通訊).
如果在Jabber 服務(wù)器和任何用戶之間有防火墻,請保證防火墻和jabber 服務(wù)器之間的超時設(shè)置是恰當?shù)?,這是很重要的,尤其在用戶使用TCP 5222端口連接到服務(wù)器的時候。因為當用戶打開一個會話的時候,要保證TCP 端口是一直開著的,為了優(yōu)化HTTP 設(shè)置的防火墻超時設(shè)置可能過早的斷開Jabber 用戶的連接。
服務(wù)器安裝
1.4.2版可以從http://jabberd.jabberstudio.org/downloads/下載。這個路徑包括其他平臺的安裝包(Solaris包,RPM 包,deb 包等等) 。注意,這 些包只包括核心jabberd 服務(wù)器 -- 附加組件在其他地方 (參考Jabber Component Admin Guide)。
因為一些管理員在安裝這些包的時候遇到一些問題,所以我們推薦使用源代碼包安裝。你只需要下載這個文件http://jabberd.jabberstudio.org/downloads/jabber-1.4.2.tar.gz。然后按照下面的 步驟安裝:
把文件保存到/tmp/ (或者任何你選擇的目錄) 。
創(chuàng)建一個目錄,作為你想安裝jabber 的路徑/path/to/jabber/(通常使用/usr/local/jabber/)。注意:你可能需要作為root 用戶 登錄才能創(chuàng)建這個目錄
輸入 mv /tmp/jabber-1.4.2.tar.gz /path/to/jabber/
輸入 cd /path/to/jabber/
輸入 gzip -d jabber-1.4.2.tar.gz
輸入 tar -xvf jabber-1.4.2.tar (這會解壓到j(luò)abber-1.4.2/目錄,包括各種文件和子目錄)
輸入 cd jabber-1.4.2/
,輸入 ./configure
安全提示
如果想讓客戶使用SSL 連接,需要重新編譯:./configure --enable-ssl (注意,如果不是從源代碼安裝的,那就不能在SSL 模式下運行) 。
輸入 make
操作系統(tǒng)提示
如果正在運行Solaris 或其他非GNU 系統(tǒng),請保證使用GNU make編譯,而不是原有的make 。必須輸入gmake ,而不是make 。
Jabberd 1.4.2應(yīng)該已經(jīng)安裝到你的機器上了。如果安裝過程中遇到什么困難,請發(fā)送消息到 JADMIN mailing list,描述你的問題。包括操作系統(tǒng),相關(guān)軟件版本等完整的信息。
測試#1
好,該測試jabber 是不是安裝到你的機器上,并能正常運行了。我們不是測試所有的功能,只是看看安裝是否成功。為了測試,按照下面的步驟做:
輸入 cd /path/to/jabber/ (你安裝jabber 的路徑)
輸入 ls -l jabberd/jabberd 察看jabber 守護進程的權(quán)限。輸出類似于:
-rwxr-xr-x 1 user group 675892 Feb 25 2002 jabberd/jabberd
輸入 ./jabberd/jabberd 來啟動jabber 守護進程。這將用缺省的主機名“l(fā)ocalhost”運行jabber 服務(wù)。你應(yīng)該看到 下面一行輸出:
20020923T02:50:26: [notice] (-internal): initializing server
注意
如果在啟動服務(wù)的時候,看到錯誤信息"Configuration parsing using jabber.xml failed",有兩種原因?qū)е逻@個錯誤。第一個原因是指定的 配置文件不存在;解決的辦法是輸入 ./jabberd/jabberd -c /path/to/jabber.xml 來指定配置文件的全路徑。 另一個原因是雖然這個文件存在,但是包含錯誤的XML 代碼;解決辦法是修復(fù)XML 文件(例如,粘貼整個jabber.xml 代碼到xml.com 網(wǎng)站的XML 語法檢查器) 。
輸入 telnet localhost 5222 連接到服務(wù)器,可以看到下面的信息:
Trying 127.0.0.1...
Connected to your-machine-name.
Escape character is '^]'.
現(xiàn)在打開XML 流,粘貼下面的XML 代碼到telnet 窗口:
,to='localhost' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>; 會立刻收到回復(fù): ; 祝賀你!你的jabber 服務(wù)器已經(jīng)能正常工作了。 關(guān)閉XML 流,粘貼下面的XML 代碼到telnet 窗口:
殺死進程,或者只是簡單的在控制臺窗口輸入^C來停止服務(wù)。
基本配置
現(xiàn)在Jabberd 已經(jīng)正確安裝并能在你的機器上運行了?,F(xiàn)在,我們將通過下面兩步來檢驗服務(wù)器的即時消息功能:
配置服務(wù)器的主機名(hostname)。
為XML 存貯設(shè)置存貯目錄(spool)。
這兩步在下面詳細討論。一旦你完成了這兩步,我們將通過另一個測試程序驗證你所作的是否正確。
配置主機名(hostname )
你可以通過編輯jabber.xml 文件改變你的配置,這個文件在/path/to/jabber/目錄下。jabber.xml 文件包含詳細的描述,幫助你明白每一個選項的作用。然而我們現(xiàn)在所要做的只是改變主機名。打開jabber.xml 文件, 做如下編輯:
現(xiàn)在需要決定用什么樣的主機名??梢杂邢旅孢@些選擇:
繼續(xù)使用“l(fā)ocalhost”不變。如果只是為了開發(fā)目的,這沒有什么問題。但是不能從除了這臺機器以外,其他任何機器上連接到這臺服務(wù)器。
改為這臺機器的IP 地址。這在局域網(wǎng)里能很好的運行。但這也是不提倡的,尤其是需要連接到其他jabber 服務(wù)器,或者運行附加組件。
改為全稱域名(FQDN)。這是更可取的做法,因為這樣jabber 能更好的運行 -- 尤其是運行附加組
,件或者和其他jabber 服務(wù)器連接。(“服務(wù)器-服務(wù)器”的通訊使用一種叫做“回叫”(dialback)的功能,來保證不被欺騙?!盎亟小?dialback)協(xié)議依賴DNS , 所以如果主機名不使用FQDN ,將不能和其他Jabber 服務(wù)器通訊) 。盡可能使用FQDN ,例如,jabber.mycompany.com.
要配置Jabber 服務(wù)器的主機名,只需要簡單的把'localhost' 改為'jabber.mycompany.com' 或者任何想用的名字。然后保存jabber.xml 文件。
文件系統(tǒng)設(shè)置
像上面提到那樣,Jabber 的一個核心功能是存儲用戶相關(guān)的的信息。這包括用戶的認證信息(用戶名和密碼) 和聯(lián)系列表(在jabber 中叫roster ,名冊的意思) ;有時候這些信息也包括用戶的vCard 和不同的客戶屬性。缺省這些信息存 放在/path/to/jabber/spool/的一個子目錄中,目錄名相對應(yīng)上面設(shè)置的主機名。所以,如果配置jabber.xml ,用主機名jabber.mycompany.com 運行服務(wù),那你必須創(chuàng)建一個/path/to/jabber/spool/jabber.mycompany.com/目錄。另外,這個目錄對于運行jabberd 進程的用戶必須是可寫的。一旦完成了這些設(shè)置,Jabberd 會在這個目錄為每一個注冊用戶保存一個與用戶同名的XML 文件(類似?username.xml?)。
好了,現(xiàn)在開始測試這些基本配置。
測試#2
因為已經(jīng)配置了主機名(建議使用FQDN) ,而且配置了XML 存儲,現(xiàn)在可以做一些在測試#1中不能做的測試:(1) 從另一個機器連接上來;(2)注冊一個賬號;(3)給另一個用戶發(fā)送消息。
為了測試,仍然telnet 到客戶端,這樣你就明白XML 是怎么向服務(wù)器發(fā)送消息的。
在/path/to/jabber/目錄中,輸入 ./jabberd/jabberd -D來啟動Jabber 守護進程調(diào)試模式。你將會看到很多調(diào)試信息在屏幕上滾過。
注意
現(xiàn)在已經(jīng)配置了主機名使用FQDN ,可能會收到一條錯誤信息"jabberd is unable to listen on ports 5222 and 5269"。為了糾正這個錯誤,需要配置服務(wù)器綁定一個指定的IP 地址。首先,在jabber.xml 文件
在這臺機器上打開一個終端,輸入telnet 主機名 5222,這里' 主機名' 是指在jabber.xml 文件中的主機名(建議使用FQDN) 。你將再一次看到:
Trying 127.0.0.1...
Connected to your-machine-name.
Escape character is '^]'.
通過粘貼下面的XML 代碼段到telnet 窗口,來打開一個XML 數(shù)據(jù)流:
to='yourhostname' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>; 應(yīng)該馬上從服務(wù)器收到回復(fù): ; 發(fā)送下面的XML 代碼來看看需要為注冊用戶提供什么信息: ; 應(yīng)該收到下面的回復(fù),告訴你要注冊一個用戶需要提供名字,email 地址,帳號,和密碼。 Choose a username and password to register with this server. ; ; ; 接下來發(fā)送注冊信息到服務(wù)器: ; ; 如果一切順利,將會收到下面的XML 代碼表示注冊成功: 如果spool 存儲目錄設(shè)置得不正確,將會收到下面的XML 代碼: 同樣的,如果賬戶已經(jīng)存在,會收到下面的XML 代碼: 現(xiàn)在已經(jīng)注冊了一個賬號,可以登錄了。首先,問一下服務(wù)器登錄需要什么信息: ; ; 服務(wù)器會回答需要哪些認證信息: ; ; 可以選擇"password" (明文密碼) 或"digest" (加密密碼) ;為了方便,我們選擇明文密碼。還必須為這個連接指定"resource" (資源)。發(fā)送下面的XML 代碼: ; ; 服務(wù)器會發(fā)送信息,確認認證成功: 最后,發(fā)送'presence' 信息,讓服務(wù)器知道你已經(jīng)在線并準備接收消息: