9.10. 安装Jabberd服务器
Jabber是一个IM(即时通信)服务器,使用开放的XMPP协议,它的信息流是XML格式的,可实现跨平台通信。通过Jabber转换器,Japper还可与MSN,Yahoo等即时通信服务器连接。一举打破现时IM平台互不兼容的格局。Google talk就是使用Jabber/XMPP来实现的。
Jabber服务器软件有很多种,具体可到这个网址查询:http://www.jabber.org/software/servers.shtml。其中jabberd是用C写的一个Jabber服务器,在Debian中有一个jabber软件包可安装jabberd1.4.3服务器。现在最新的jabberd是2.x版本的,包含了jabber的最新功能,但支持的组件较少,jabberd1.4.x版本中没有包含最新的功能,如不支持SASL。但它的支持组件很多,而且很稳定。所以这里我以jabberd1.4.3版的jabberd服务器进行介绍。
用Debian标准的软件安装方法即可完成软件包的下载和安装。
debian:~# apt-get install jabber
安装完软件后,jabberd服务就会自动启动。我们可用telnet程序与服务器连接测试一下服务器是否能正常工作。
debian:~# telnet localhost 5222 #5222是jabberd服务的默认端口号 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'.
在上面的状态下输入以下xml文本内容:
<stream:stream to='localhost' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
按回车,jabber服务器会显示如下信息:
<?xml version='1.0'?><stream:stream xmlns:stream='http://etherx.jabber.org/streams' id='431E92B1' xmlns='jabber:client' from='localhost'>
如果出现如下的信息,则说明jabberd服务器已正常运行。我们可用</stream:stream>语句关闭信息流,退同telnet状态。。
下面我们可以开始配置jabber服务器。jabber的配置文件在/etc/jabber目录下,叫jabber.xml。首先,我们需配置主机名,上面我们是用localhost主机名来测试的。正式使用的话需要有一个唯一的名称来标识该服务器。用vi程序打开该文件,找到这句:
<host><jabberd:cmdline flag="h">localhost</jabberd:cmdline></host>
把localhost改成你的主机名,我的主机名是debian,存盘退出。现在我们就可用主机名来访问jabberd服务了,如:
debian:~# telnet debian 5222 Trying 127.0.0.1... Connected to debian. #主机名已改变 Escape character is '^]'.
现在我们可以添加一个jabber帐号了,我们可以通过gaim之类的jabber客户端软件自动添加,也可手动方法添加。下面介绍用telnet手动添加的方法,这种方法可让我们详细了解jabberd服务的添加用户的处理过程。
debian:~# telnet debian 5222 Trying 127.0.0.1... Connected to debian. Escape character is '^]'. <stream:stream to="debian" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams">
系统显示以下信息:
<?xml version='1.0'?><stream:stream xmlns:stream='http://etherx.jabber.org/streams' id='431E9B0B' xmlns='jabber:client' from='debian'>
使用以下XML查询注册需提供些什么信息:
<iq id='reg1' type='get'> <query xmlns='jabber:iq:register'/> </iq>
查询的结果如下:
<iq id='reg1' type='result'> <query xmlns='jabber:iq:register'><password/><password/> <instructions>Choose a username and password to register with this server.</instructions> <name/> <email/> <username/></query> </iq>
这里显示注册需提供password,username,email和name四项信息。下面我把按要求把注册信息发给服务器:
<iq id="reg2" type="set"> <query xmlns="jabber:iq:register"> <username>test</username> <password>12345</password> <name>test</name> <email>test@debian</email> </query> </iq> #在这里按回车,如果出现以下信息,则说明注册成功。 <iq id='reg2' type='result'/>
每个注册用户的信息保存在/var/lib/jabber/目录下。现在我们可以用刚注册的帐号登录jabber服务器了,在登录之前,我们可用以下XML命令查询服务器登录需要些什么信息:
<iq id="auth1" type="get"> <query xmlns="jabber:iq:auth"> <username>test</username> </query> </iq>
返回的信息如下:
<iq id='auth1' type='result'> <query xmlns='jabber:iq:auth'> <username>test</username> <digest/><password/><resource/></query> </iq>
<digest/>和<password/>分别表示加密格式的密码和纯文本格式的密码,只需选其中一种即可。<resource>是必须填的,表示连接服务的资源,如我们现在采用的telnet。登录的XML命令如下,我们采用的是不加密的密码方式:
<iq id="auth2" type="set"> <query xmlns="jabber:iq:auth"> <username>test</username> <password>12345</password> <resource>telnet</resource> </query> </iq> #这里按回车,如果出现以下信息,则说明登录成功。 <iq id='auth2' type='result'/>
最后,我们要把test用户切换到在线状态。
<presence/> #按回车后会显示以下的欢迎信息 <message from='debian' to='test@debian'> <subject>Welcome!</subject> <body>Welcome to the Jabber server -- we hope you enjoy this service! For information about how to us e Jabber, visit the Jabber User's Guide at http://jabbermanual.jabberstudio.org/</body> <x xmlns='jabber:x:delay' from='test@debian' stamp='20050907T08:01:29'>Offline Storage</x></message>
现在,我们就可发送和接收信息了。发送信息的XML命令格式如下:
<message to="jims@debian"> <body>hello jims</body> </message>
如果jims用户已在gaim中登录,则会显示“hello jims”的信息。如果在gaim中发一条叫“hello test,this m essage form gaim.”给test@debian,则会在telnet里收到如下格式的信息:
<message type='chat' to='test@debian/telnet' from='yangjing@debian/Gaim'><x xmlns='jabber:x:event'><composing /></x><body>hello test,this message form gaim.</body><html xmlns='http://jabber.org/protocol/xhtml-im'><body xmlns='http://www.w3.org/1999/xhtml'>hello test,this message form gaim.</body></html></message>
用以下命令可退出会话:
</stream:stream>
从上面的信息可以看到,在jabber传送的信息流是XML格式的。这为jabber服务的扩展提供了很好的发展空间。