Jabber管理员手册中文版

一直以来,网上即时传呼通讯工具都大受网友欢迎,AOL的Instant Messenger、ICQ、Yahoo!的Messenger、MSN的Messenger等都各有自己的用户网络,但由于AOL的商业考虑,令不同公司产品的用户不能互相通讯,甚至有公司投诉AOL妨碍竞争,虽然AOL表示公司希望不同服务间能彼此互操(Interoperate),并交由International Engineering Task Force协助制订业界标准,名为Instant Messenger and Presence Protocol(IMPP),但却迟迟未有定案,面对这个市场需要,一班开放程式人士组成Jabber.org,运用两年多时间发展开放程式的即时通讯系统,并推出伺服器软件。有关的软件更将整合在Mozilla.org的倾谈软件客端ChatZilla,相信会带来市场一定的冲击。
  现时任何个人或机构也可以使用Jabber.org的开放程式软件架设即时通讯伺服器,由于使用分布运算形式,其运作原理和电邮伺服器相若,只要在人名后加上xxx@msn、xxx@yahoo、xxx@aol,它就把讯息传到有关的系统,突破以往的通讯界限,真正把即时通讯的市场全面开放。
  Jabber是聊天界的一支生力军,可以和美国在线实时讯息工具、ICQ以及YAHOO通实现性能、操作兼容。在聊天工具的世界里,你也可以自己说了算。当然这不像给某个软件换皮肤那么简单,而是在程序技术允许范围内,你可以根据自己的要求和特点,大大修改程序,从而添加个性化的功能。Jabber的程序设计采用了XML语言,完全公开源代码,对于熟悉网络编辑语言的发烧友来说,用这个软件绝对乐趣无穷。


--------------------------------------------------------------------------------
Fun-FreeBSD 回复于:2003-05-30 17:40:11
[quote:92a28640b9]JABBERD管理指南
中文翻译:Fun-FreeBSD
版权所有 & 2000,2001,2002 Jabber软件基金会(Jabber Software Foundation)

这些资料只能在遵从开放源代码协议(Open Publication License),v1.0版本或之后的版本下发行(最新版本请察看http://www.opencontent.org/openpub/)。
概要

如何安装,配置和管理jabberd服务器。


--------------------------------------------------------------------------------

目录

介绍
背景
核心功能
规划Jabber应用
系统需求
操作系统
硬件
软件
带宽
DNS
端口和防火墙
服务器安装
基本配置
配置主机名
文件系统设置
管理功能
授予管理权限
察看在线用户
发送广播信息
企业内部互联网设置
禁用“服务器-服务器”通讯
禁用注册新用户功能
更新服务器
NAT设置
安全
使用SSL安全连接
安全认证
获得帮助
报告漏洞和提供补丁
介绍
这篇文章介绍如何安装,配置和管理jabberd.

Jabberd服务器是最早的基于Jabber协议的开放源代码服务器,是在一个公司内部或公用IM系统中最流行的Jabber服务器。然而,还有很多其他的Jabber服务器,包括一些开放源代码项目(参看http://www.jabberstudio.org/)和商业提供者,如i3connect, Jabber, Inc., Jabcast, and Tipic。作为Jabber协议的管理者,Jabber软件基金会(JSF)不会区分不同软件的实现方式。JSF注重 的是Jabber的发展,和Jabber技术的传播。

强烈推荐Jabberd相关支持人员,服务器管理员订阅JADMIN邮件列表。关于Jabber的更多信息,请参考Jabber Software Foundation网站。

背景
Jabber项目作为自由和开放源代码项目,是由Jeremie Miller在1998年开始开发的,并作为其它传统专有IM系统,像AIM,ICQ,MSN和YAHOO的替代品 ,1999年在Slashdot上发布了第一个公告。Jabber项目的核心是jabberd服务器,这个模块化服务器是用C写成,并使用GNU pth线程库。 经过一年的开发,Jabberd 1.0在2000年5月发布。2000年10月发布了1.2版,之后2001年1月发布1.4版,2001年4月发布1.4.1版,2002年2月发布1.4.2版。Jabberd开发小组正在积极修补1.5开发版,并将最终作为2.0版在2003年的某个时候发布。Jabberd服务器完全兼容于Jabber Software Foundation协议。

核心功能
总体上,Jabber服务器运行下面这些服务:

允许一个来自兼容的客户端或者服务器端组件的TCP连接

管理从客户端和组件进入和发出的XML流

分发核心Jabber数据类型(<message/>, <presence/>, and <iq/>)到认证客户和组件

为连接的客户维护会话信息(通常是IM用户)

如果需要,打开和其他服务器的合法连接,路由信息

为组件储存信息,尤其是IM用户,包括每一个用户的联系人和一些客户属性

附加属性--像群聊,用户目录,和与其他IM系统(AIM, ICQ, MSN, and Yahoo)交互-- 不是当前核心功能的一部分,因此没有写进这个HOWTO。 请察看“Jabber Component HOWTO”进一步获得关于如何添加这些属性到你的Jabber服务器的信息。

规划Jabber应用
在安装任何软件以前,尤其是一个重要的网络架构组件,像Jabber服务器,确定你的需求和规划你的应用是很重要的。 现在Jabber服务器可以被广泛应用于下列环境中,包括:

小的开发团队

小型到中型公司的企业内部网

大学和学院

基于web的团体

Internet提供商

大公司的企业内部网

如何使用你的Jabber服务器,将毫无疑问的影响你的决定,包括硬件,操作系统,带宽,网络配置,防火墙,安全,数据库连接,等等。 你要在开始的时候做出一个主要的决定,要在什么操作系统下运行Jabber。Jabberd被设计用来在Linux和其他多种不同风格的Unix (包括AIX, Solaris, HP-UX, BSD, 和 Mac OS X)上运行。虽然jabberd已经被移植到到了Windows上,但是这个移植版本运行的并不好,不提倡使用。 (这篇文章没有收录Windows的移植版本;要察看详细信息,请参考Jabberd Windows HOWTO.)

另外,考虑一下你要提供的服务的带宽也是很重要的。需要提供单一的点对点的系统,还是群聊系统?想让你的用户和外界传统的IM系统通讯吗?像AIM,ICQ,MSN,YAHOO。这些服务不是Jabberd缺省的一部分,你必须提供组件。 虽然这增加了用户的使用功能,但也使你的规划更复杂,管理更困难。 (详细信息,请参考Jabber Component HOWTO.)

最后,想一想如何把Jabber集成到已经存在的网络中。例如,你想每一个用户的账号使用他们的电子邮件地址或者网络登录名,或者你想用已经存在的用户数据库(例如,你们公司的LDAP数据库),而不是缺省的文件系统存贮方法。满足你的 这些需求,可能会带来更大的复杂性(详细信息,参考即将出炉的Jabberd Database Integration HOWTO.)

系统需求
这一部分HOWTO定义系统需求。

操作系统
虽然Jabberd主要是GNU/Linux下开发的,但是他已经在不同的操作系统下测试过了。 1.4.2版可以运行在以下系统中:

AIX

FreeBSD

HP-UX

IRIX

Linux

Mac OS X

NetBSD

OpenBSD

Solaris 2.6, 7, 8

上面列出的系统不像Linux使用得那么广泛,所以安装的时候可能会遇到一些麻烦。特殊的需求和说明,在这篇文章中会标出。通常,非GUN Unix系统需要GNU make,而不是你自己系统里的make。当你在非GNU系统上运行Jabberd时,GNU make将会解决你的大部分问题,.

注意: 这篇文章没有讲关于Windows版的jabberd 1.4.2。请参考Jabberd Windows Guide察看详细信息。

硬件
硬件需求决定于你所预期的用户数。 以作者的经验,大多数jabberd都是用在像导航项目,内部网站,开发平台,等等这些上面,大约100到1000人。 由于同时在线的人数不会超过50%(例如,jabber.org的服务器通常只有2%的用户在线),我们可以适当的评估出大概会有500人同时在线。 对于这种情况,硬件需求是最小的:也许一个奔腾级的工作站加512M内存就够了。

如果客户端数量巨大,那需要做一些调整。做过一个试验,jabberd服务器可以达到10,000个用户同时在线,它是被设计用来从概念上证明,一台非工业级的服务器也可以提供非常大数量的服务。 例如,根据你所使用的操作系统,你可能需要修改OS级别的设置来限制同一个IP的同时连接数量,或者操作系统的file descriptor. (对于Linux,缺省是限制到1024 file descriptors,这些可以通过proc设置)。 由于大量用户的情况在通常的规划之外,我不再讨论他们,但是我也希望在下一个修订版中添加更多关于可缩放服务器的信息。

软件
Jabberd需要下列软件:

GNU pth v1.4.0。请注意,GNU pth 1.4.1与jabberd 1.4.2是不不兼容的,所以如果 你的系统里已经安装了pth 1.4.1,请先删除它,然后安装pth 1.4.0!如果你的系统里没有安装GNU pth,jabberd安装程序会自动安装它 。

GNU make。GNU make是GNU/Linux操作系统标准的一部分,但是在非GNU系统中,像FreeBSD和Solaris中必须单独安装。不像GNU pth,你必须自己安装GNU make(jabberd不会为你安装它)。

OpenSSL。这是可选的。如果你想让你的客户使用SSL连接,你必须在安装jabberd 1.4.2以前安装它。

带宽
通常情况下,一个Jabber客户端连接需要大概15字节/秒。这意味着1000个用户将会消耗15kbs的带宽,10000个用户将会消耗150kbs的带宽, 依次类推。注意,这是指同时在线的用户数,不是注册的用户数(当前用户数取决于你自己的规划,但是一般对于ISP只有少于5%的用户同时在线,而在企业中只有少于50%的用户同时在线。请 以此为参考。

DNS
像下面描述的那样,也许你想用全称域名(FQDN)来运行jabberd服务器。这不是在每种情况下都是必需的,但是如果你想和其他jabber服务器通讯,或者 你想让局域网以外的用户访问服务器,那服务器的主机名(hostname)必须是一个全称域名(fully-qualified domain name)。这同样适用于你想用jabberd服务器提供 相关服务的子域(例如,一个Jabber用户的目录或会议服务)。因此你必须要求系统管理员在DNS域名表中添加你的主机名和相关的子域。

端口和防火墙
IANA规定了Jabber使用的两个端口:一个用于“客户-服务器”通讯(端口5222),另一个用于“服务器-服务器”通讯(端口5269)。 如果想让jabber客户端能够和服务器通讯,必须保证TCP 5222端口是开着的。 如果想让Jabber服务器能够向其他jabber服务器发送消息,必须保证TCP 5269端口是开着的。另外,如果需要为其他IM系统安装网关,需要打开指定的与其他系统通讯的端口。请参考README或者其他文档来确定所要安装的网关软件需要打开的端口(例如,MSN的网关端口1863是)。

一些Jabber服务器在公司内部网或者防火墙内使用,如果不想和组织外部的Jabber服务器通讯,你当然不想打开这些端口。 在其他情况下(例如,公司有远程雇员),可以打开标准jabber客户端端口5222(或者5223端口来使用SSL连接),这样防火墙之外的用户也可以和服务器通讯了。另外,如果想让用户和外部服务器用户通讯,需要打开标准jabber服务器端口5269来实现“服务器-服务器”的通讯。一种更复杂的配置是一个服务器在防火墙内部供内部用户使用,一个服务器在DMZ区供外部用户使用, 通过5269端口在两个服务器之间建立“服务器-服务器”的信任通道(通过在防火墙的“控制列表”中只打开这两个服务器之间的5269端口通讯).

如果在Jabber服务器和任何用户之间有防火墙,请保证防火墙和jabber服务器之间的超时设置是恰当的,这是很重要的,尤其在用户使用TCP 5222端口连接到服务器的时候。因为当用户打开一个会话的时候,要保证TCP端口是一直开着的,为了优化HTTP设置的防火墙超时设置可能过早的断开Jabber用户的连接。

服务器安装
1.4.2版可以从http://jabberd.jabberstudio.org/downloads/下载。这个路径包括其他平台的安装包(Solaris包,RPM包,deb包等等)。注意,这 些包只包括核心jabberd服务器 -- 附加组件在其他地方 (参考Jabber Component Admin Guide)。

因为一些管理员在安装这些包的时候遇到一些问题,所以我们推荐使用源代码包安装。你只需要下载这个文件http://jabberd.jabberstudio.org/downloads/jabber-1.4.2.tar.gz。然后按照下面的 步骤安装:

把文件保存到/tmp/ (或者任何你选择的目录)。

创建一个目录,作为你想安装jabber的路径/path/to/jabber/(通常使用/usr/local/jabber/)。注意:你可能需要作为root用户 登录才能创建这个目录

输入 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 (这会解压到jabber-1.4.2/目录,包括各种文件和子目录)

输入 cd jabber-1.4.2/

输入 ./configure

安全提示
如果想让客户使用SSL连接,需要重新编译:./configure --enable-ssl (注意,如果不是从源代码安装的,那就不能在SSL模式下运行)。

输入 make

操作系统提示
如果正在运行Solaris或其他非GNU系统,请保证使用GNU make编译,而不是原有的make。必须输入gmake,而不是make。

Jabberd 1.4.2应该已经安装到你的机器上了。如果安装过程中遇到什么困难,请发送消息到 JADMIN mailing list,描述你的问题。包括操作系统,相关软件版本等完整的信息。

测试#1
好,该测试jabber是不是安装到你的机器上,并能正常运行了。我们不是测试所有的功能,只是看看安装是否成功。为了测试,按照下面的步骤做:

输入 cd /path/to/jabber/ (你安装jabber的路径)

输入 ls -l jabberd/jabberd 察看jabber守护进程的权限。输出类似于:

-rwxr-xr-x   1 user group   675892 Feb 25 2002 jabberd/jabberd
     
输入 ./jabberd/jabberd 来启动jabber守护进程。这将用缺省的主机名“localhost”运行jabber服务。你应该看到 下面一行输出:

20020923T02:50:26: [notice] (-internal): initializing server
     
注意
如果在启动服务的时候,看到错误信息"Configuration parsing using jabber.xml failed",有两种原因导致这个错误。第一个原因是指定的 配置文件不存在;解决的办法是输入 ./jabberd/jabberd -c /path/to/jabber.xml 来指定配置文件的全路径。 另一个原因是虽然这个文件存在,但是包含错误的XML代码;解决办法是修复XML文件(例如,粘贴整个jabber.xml代码到xml.com网站的XML语法检查器)。

输入 telnet localhost 5222 连接到服务器,可以看到下面的信息:

Trying 127.0.0.1...
Connected to your-machine-name.
Escape character is '^]'.
     
现在打开XML流,粘贴下面的XML代码到telnet窗口:

<stream:stream
to='localhost'
xmlns='jabber:client'
xmlns:stream='http://etherx.jabber.org/streams'>
     
会立刻收到回复:

<?xml version='1.0'?> <stream:stream xmlns:stream='http://etherx.jabber.org/streams' id='some-random-id' xmlns='jabber:client' from='localhost'>

祝贺你!你的jabber服务器已经能正常工作了。

关闭XML流,粘贴下面的XML代码到telnet窗口:</stream:stream>

杀死进程,或者只是简单的在控制台窗口输入^C来停止服务。

基本配置
现在Jabberd已经正确安装并能在你的机器上运行了。现在,我们将通过下面两步来检验服务器的即时消息功能:

配置服务器的主机名(hostname)。

为XML存贮设置存贮目录(spool)。

这两步在下面详细讨论。一旦你完成了这两步,我们将通过另一个测试程序验证你所作的是否正确。

配置主机名(hostname)
你可以通过编辑jabber.xml文件改变你的配置,这个文件在/path/to/jabber/目录下。jabber.xml文件包含详细的描述,帮助你明白每一个选项的作用。然而我们现在所要做的只是改变主机名。打开jabber.xml文件, 做如下编辑:

<host><jabberd:cmdline flag="h">localhost</jabberd:cmdline>

现在需要决定用什么样的主机名。可以有下面这些选择:

继续使用“localhost”不变。如果只是为了开发目的,这没有什么问题。但是不能从除了这台机器以外,其他任何机器上连接到这台服务器。

改为这台机器的IP地址。这在局域网里能很好的运行。但这也是不提倡的,尤其是需要连接到其他jabber服务器,或者运行附加组件。

改为全称域名(FQDN)。这是更可取的做法,因为这样jabber能更好的运行 -- 尤其是运行附加组件或者和其他jabber服务器连接。(“服务器-服务器”的通讯使用一种叫做“回叫”(dialback)的功能,来保证不被欺骗。“回叫”(dialback)协议依赖DNS, 所以如果主机名不使用FQDN,将不能和其他Jabber服务器通讯)。尽可能使用FQDN,例如,jabber.mycompany.com.

要配置Jabber服务器的主机名,只需要简单的把'localhost'改为'jabber.mycompany.com'或者任何想用的名字。然后保存jabber.xml文件。

文件系统设置
像上面提到那样,Jabber的一个核心功能是存储用户相关的的信息。这包括用户的认证信息(用户名和密码)和联系列表(在jabber中叫roster,名册的意思);有时候这些信息也包括用户的vCard和不同的客户属性。缺省这些信息存 放在/path/to/jabber/spool/的一个子目录中,目录名相对应上面设置的主机名。所以,如果配置jabber.xml,用主机名jabber.mycompany.com运行服务,那你必须创建一个/path/to/jabber/spool/jabber.mycompany.com/目录。另外,这个目录对于运行jabberd进程的用户必须是可写的。一旦完成了这些设置,Jabberd会在这个目录为每一个注册用户保存一个与用户同名的XML文件(类似‘username.xml’)。

好了,现在开始测试这些基本配置。

测试#2
因为已经配置了主机名(建议使用FQDN),而且配置了XML存储,现在可以做一些在测试#1中不能做的测试:(1) 从另一个机器连接上来;(2)注册一个账号;(3)给另一个用户发送消息。

为了测试,仍然telnet到客户端,这样你就明白XML是怎么向服务器发送消息的。

在/path/to/jabber/目录中,输入 ./jabberd/jabberd -D来启动Jabber守护进程调试模式。你将会看到很多调试信息在屏幕上滚过。

注意
现在已经配置了主机名使用FQDN,可能会收到一条错误信息"jabberd is unable to listen on ports 5222 and 5269"。为了纠正这个错误,需要配置服务器绑定一个指定的IP地址。首先,在jabber.xml文件<pthcsock/>段,把<ip port="5222"/>改为<ip port="5222">你的IP地址</ip>,然后,在<dialback>段,把<ip port="5269"/>改为<ip port="5269">你的IP地址</ip>。

在这台机器上打开一个终端,输入telnet 主机名 5222,这里'主机名'是指在jabber.xml文件中的主机名(建议使用FQDN)。你将再一次看到:

Trying 127.0.0.1...
Connected to your-machine-name.
Escape character is '^]'.
     
通过粘贴下面的XML代码段到telnet窗口,来打开一个XML数据流:

<stream:stream
to='yourhostname'
xmlns='jabber:client'
xmlns:stream='http://etherx.jabber.org/streams'>
     
应该马上从服务器收到回复:

<?xml version='1.0'?> <stream:stream xmlns:stream='http://etherx.jabber.org/streams' id='some-random-id' xmlns='jabber:client' from='yourhostname'>

发送下面的XML代码来看看需要为注册用户提供什么信息:

<iq id='reg1' type='get'>
<query xmlns='jabber:iq:register'/>
</iq>
     
应该收到下面的回复,告诉你要注册一个用户需要提供名字,email地址,帐号,和密码。

<iq id='reg1' type='result'>
<query xmlns='jabber:iq:register'>
  <instructions>
    Choose a username and password
    to register with this server.
  </instructions>
  <name/>
  <email/>
  <username/>
  <password/>
</query>
</iq>
     
接下来发送注册信息到服务器:

<iq id='reg2' type='set'>
<query xmlns='jabber:iq:register'>
  <username>jabberuser</username>
  <password>secret</password>
  <name>myName</name>
  <email>[email protected]</email>
</query>
</iq>
     
如果一切顺利,将会收到下面的XML代码表示注册成功:

<iq id='reg2' type='result'/>
     
如果spool存储目录设置得不正确,将会收到下面的XML代码:

<error code='500'>Password Storage Failed</error></iq>
     
同样的,如果账户已经存在,会收到下面的XML代码:

<error code='409'>Username Not Available</error></iq>
     
现在已经注册了一个账号,可以登录了。首先,问一下服务器登录需要什么信息:

<iq id='auth1' type='get'>
<query xmlns='jabber:iq:auth'>
  <username>jabberuser</username>
</query>
</iq>
     
服务器会回答需要哪些认证信息:

<iq id='auth1' type='result'>
<query xmlns='jabber:iq:auth'>
  <username>jabberuser</username>
  <password/>
  <digest/>
  <resource/>
</query>
</iq>
     
可以选择"password" (明文密码)或"digest" (加密密码);为了方便,我们选择明文密码。还必须为这个连接指定"resource"(资源)。发送下面的XML代码:

<iq id='auth2' type='set'>
<query xmlns='jabber:iq:auth'>
  <username>jabberuser</username>
  <password>secret</password>
  <resource>telnet</resource>
</query>
</iq>
     
服务器会发送信息,确认认证成功:

<iq id='auth2' type='result'/>
     
最后,发送'presence'信息,让服务器知道你已经在线并准备接收消息:

<presence/>
     
服务器将会马上发给你一个欢迎信息:

<message from='yourhostname' to='jabberuser@yourhostname'>
<subject>Welcome!<subject>
<body>
  Welcome to the Jabber server at localhost -- we
  hope you enjoy this service! For information about
  how to use Jabber, visit the Jabber User's
  Guide at http://docs.jabber.org/
</body>
</message>
     
如果需要,可以通过jabber.xml文件的<welcome/>段修改这个欢迎信息。

接下来,从另一台机器上重复第3步到第8步(确保使用"jabberuser"以外的用户!)。如果主机名和DNS配置正确,将会和你在这台服务器上一样能够正常运行。

测试结束,发送下面的XML代码到telnet窗口:

<message to='jabberuser@yourhostname'>
<body>hi!</body>
</message>
     
将会看到和第一个测试中相同的XML代码,只是多了一个"from"地址来标识这台服务器的Jabber ID。

恭喜!你的Jabber服务器已经运行得很好了!

注意
发送信息的时候,可能碰到错误信息"sending name is invalid",这是一个DNS错误.确认能从网络的其他地方PING通 这台Jabber服务器,并且这台服务器有一个合法的DNS记录。另外,也许可以在/etc/hosts文件里添加这台主机的记录。

现在已经通过了测试,在telnet窗口粘贴</stream:stream>关闭会话,杀死进程,停止服务器,或者直接在启动进程的窗口按^C。

管理功能
授予管理权限
Jabber服务器可以通过设置jabber.xml文件的<admin>部分,授予某些用户一定的管理权限。有三种主要的管理权限:

从特定的管理地址admin@yourjabberhostname读取消息的权限。

察看所有在线用户的权限。

向在线用户发送广播消息(比如,提醒用户服务器重新启动)或者给每一个登录用户发送“每日提示”的权限。

前两个权限可以通过在jabber.xml文件中<admin>段的<read>部分添加用户来实现,第三个权限可以通过在<write>部分实现。这里有个例子,使用skakespeare.com服务器:

    <admin>
    <read>[email protected]</read>
    <read>[email protected]</read>
    <write>[email protected]</write>
    </admin>
 
在这个例子中,Hamlet, Macbeth, and King Lear都可以读取发送给管理地址的消息,察看在线用户,但是只有King Lear能够发送广播消息和每日提示("write"权限包括"read"权限)。

如果你想获得所有的管理功能,把Jabber ID添加到jabber.xml文件的<admin/>段。

察看在线用户
要想察看所有在线用户,作为管理员登录(在jabber.xml文件中定义的管理员),通过telnet或者可以发送XML代码的客户端,发送下面任何一段代码:

<iq type="get" to="yourhostname">
<query xmlns="jabber:iq:admin">
  <who/>
</query>
</iq>

或:

<iq type='get' to='yourhostname/admin'>
<query xmlns='jabber:iq:browse'/>
</iq>
 
发送广播消息
要想给所有在线用户发送广播消息,作为管理员登录(在jabber.xml文件中定义的管理员),然后发送下面的XML代码:

<message to="yourserver.com/announce/online">
<body>This is a broadcast message!</body>
</message>
 
企业内部互联网设置
相对于那些传统的IM系统,在公共网络上传送敏感消息,Jabber是一个绝好的解决方案。很多公司可以通过在防火墙或NAT后面运行Jabber来限制访问。

禁用“服务器-服务器”通讯
可以通过禁用“服务器-服务器”之间的通讯,来关闭Jabber服务和Internet的连接。有很多方法可以达到这个目的:

在防火墙上关闭5269端口,这是Jabber的“服务器-服务器”通讯端口。(也可以关闭“客户-服务器”的端口5222。)

在jabber.xml文件中注释掉下面几行(这些代码段控制着DNS解析和“服务器-服务器”连接):

<service id="dnsrv">
<host/>
<load><dnsrv>dnsrv/dnsrv.so<dnsrv><load>
<dnsrv xmlns="jabber:config:dnsrv">
  <resend service="_jabber._tcp">s2s<resend>
  <resend>s2s<resend>
<dnsrv>
<service>

and:

<service id="s2s">
<load><dialback>dialback/dialback.so<dialback><load>
<dialback xmlns='jabber:config:dialback'>
  <ip port="5269"/>
<dialback>
<service>
     
现在,Jabber服务器不能和其他服务器通讯了。

禁用注册新用户功能
默认情况下,任何人都可以在服务器上注册账号(账号注册被Jabber协议控制着,这和电子邮件的SMTP协议是不同的)。很多Jabber服务器管理员想禁止这个功能。为了做到这一点,在jabber.xml文件中注释掉 下面几行:

<!--
<register notify="yes">
<instructions>
  Choose a username and password
  to register with this server.
<instructions>
<name/>
<email/>
<register>
-->

and:

<!--
<mod_register>./jsm/jsm.so</mod_register>
-->
 
显然,如果禁用了新用户注册功能,你需要其他的账号生成功能,在下面的章节中将会讨论。

更新服务器
Jabberd服务器将会查找软件的更新版本。如果Jabber服务器在防火墙的后面,将会收到下面的错误信息:

<presence
  from='[email protected]/1.4.2'
  to='yourhostname'
  type='error'
  iperror=''>
<error code='502'>Unable to resolve hostname.</error>
</presence>
 
这个错误只是个警告;不意味着Jabberd服务器已经坏掉。只是不能连接到update.jabber.org。如果想禁用这个特性,把更新服务器改成你的主机名,或者注释掉下面这几行:

<!--
<update><jabberd:cmdline flag="h">localhost</jabberd:cmdline></update>
-->
 
NAT 设置
如果想让外部用户访问服务器,而且服务器放在NAT防火墙内,那么需要正确的配置jabberd和NAT,需要做以下几步:

在jabber.xml文件中,添加内部主机名和外部主机名(NAT上的),确保这两个主机名在一行里:

<host>internal-jabber-hostname<host><host>external-nat-hostname<host>
     
设置合适的防火墙规则,以便从外部可以看到jabber服务器,也可以从内部看到jabber服务器的外部地址。

安全
安全在Jabber通讯中是很重要的,Jabber开发队伍对安全也是格外重视的。在Jabber1.5/2.0版本中将会包含比现在1.4.2版本更多强有力的安全和认证机制。现阶段 ,出于安全考虑,可以做的就是使用SSL,使用digest或者zero-knowledge认证(或在LDAP中存储用户认证信息),以及使用支持端到端加密的PGP或者GPG。前两 者将会在这篇文章中讨论。

使用SSL安全连接
Jabberd 1.4.2 允许在客户和服务器之间使用SSL建立安全连接(“服务器-服务器”之间的SSL安全连接现在还不支持,但是会在1.5/2.0中添加这部分功能)。要做到这一点,首先必须安装OpenSSL,然后用./configure --enable-ssl从源文件重新编译。(如果已经运行jabberd一段时间了,你决定使用SSL,可以输入make clean,然后使用 --enable-ssl参数重新编译。)

下一步是生成证书和密钥。可以使用下面的shell脚本:

OPENSSL=/usr/bin/openssl

## This generates the cert and key
## The key will be valid for 3650 days.
## Be sure to enter the FQDN of your Jabber
## server as the "Common Name".
$OPENSSL req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out key.pem
## This will remove the passphrase
$OPENSSL rsa -in privkey.pem -out privkey.pem
## Put it all together
cat privkey.pem >> key.pem
## Cleanup
rm privkey.pem
 
最后,修改jabber.xml文件,添加SSL的配置信息,参照下面进行配置:

<pthcsock>
...
<ip port="5222"/>
<ssl port="5223">your-ip-address</ssl>
...
</pthcsock>

and:

<io>
...
<ssl>
  <key ip="your-ip-address">/path/to/cert_and_key.pem</key>
</ssl>
...
</io>
 
安全认证
1.5/2.0版本的jabberd将会使用SASL支持更多的安全认证机制。在这之前,最安全的事是禁用明文密码。明文密码通常不会从客户端发送,但是最好在服务器上禁用明文密码。可以通过从jabber.xml文件中注释掉下面这一行达到这个目的:

<!--
<mod_auth_plain>./jsm/jsm.so</mod_plain>
-->
 
如果一些用户偶尔需要用明文密码,至少要保证明文密码是最后一个选项,可以通过改变Jabber会话管理器中认证模块的加载顺序做到这一点:

<mod_auth_0k>./jsm/jsm.so</mod_0k>
<mod_auth_digest>./jsm/jsm.so</mod_digest>
<mod_auth_plain>./jsm/jsm.so</mod_plain>
 
注意:为了增强安全性,禁用新用户注册功能。参看企业内部互联网的内容。

获得帮助
有两种方法可以获得安装和配置的帮助:

为了获得实时的帮助,打开你喜欢的Jabber客户端,加入到[email protected]聊天室(聊天室的名字是"jdev",会议服务器地址是"conference.jabber.org"),或其他jabber服务器,参加正在进行的讨论。

像上面提到的那样,订阅JADMIN mailing list邮件列表。

报告漏洞和提供补丁
如果发现了一个jabber服务器的漏洞,请到http://www.jabberstudio.org/projects/jabberd/bugs/报告漏洞。请详细描述所使用的平台和错误信息。

如果发现了一种解决漏洞的方法,请把补丁以及详细描述发送到邮件列表jabberd development mailing list。但是请注意,1.4.2版本已经停止开发了,请多提供1.5/2.0版本的帮助。
[/quote:92a28640b9]

sandymicky 2005-10-15 09:23
有些地方我还不是很确定,希望大家能帮助改进。转载请注明www.jabber.org.cn. E文好的大侠可以直接看原文,就不用笑话我的翻译水平了。原文地址:http://jabberd.jabberstudio.org/2/docs/quickstart.html


Jabberd2 快速安装指南

1.安装Openssl
2.安装Berkeley DB
3.安装Libidn
4.创建Jabber用户和组
5.创建数据和LOG目录
6.安装jabber2
7.配置服务器
8.测试服务器

jabber2可以使用mysql,postgresql或者berkeley db来存储数据。其中MYSQL是被jabber2推荐的数据库;不过,本手册建议使用berkeley DB是因为它对于jabber2数据存储只需要进行最少的配置。看《Jabber2 Installation and Adminsration Guide》可以得到更多安装和配置Jabber2的细节。

A.1.1安装Openssl
Jabber2安装需要预装Openssl(0.9.6b版本或更高),如果OpenSSL版本0.9.6b并没有在您的系统上安装,请查看OpenSSL网站或《Install OpenSSL for Jabbers2》.

A.1.2 安装Berkeley DB
Jabber2安装需要预装Berkeley DB(4.1.24版本或更高),如果它没有在您的系统上安装,请查看Berkeley DB网站或《Install Berkeley DB for Jabbers2》.
最好仔细考虑一下如何为Jabber2产品服务器选择一种数据库,因为毕竟从一种数据库转换到另一种是很费劲的事。

A.1.3 安装Libidn
Jabber2安装需要预装Libidn(4.1.24版本或更高),如果它没有在您的系统上安装,请查看GNU Libidn网站或《Install Libidn for Jabbers2》.

A.1.4 创建Jabber用户和组
你需要创建一个指定的Jabber用户和组来运行服务器
su
groupadd jabber
useradd -g jabber jabber
记住上面的仅仅是个例子,具体地增加一个用户和组的命令和参数对于您的系统来说是可变的,您在对上述命令有疑问的时候可以参看您的手册。

A.1.5为数据和日志以及PID创建目录
您必须为数据,日志和PID创建目录,而且您的Jabber用户需要有这些目录的读写权限。

A.1.5.1 创建数据目录
创建一个目录来存储Jabberd数据库文件(作为超级用户)
mkdir -p /usr/local/var/jabberd/db

A.1.5.2创建日志目录
创建一个目录来保存Jabberd日志文件(作为超级用户)
mkdir -p /usr/local/var/jabberd/log

A.1.5.3创建PID目录
创建个 目录来保存Jabberd的PID文件(作为超级用户)
mkdir -p /usr/local/var/jabberd/pid

A.1.5.4设置数据和日志目录的属主
更改上面创建的目录的属主(作为超级用户),如果您使用上面指定的地址,可以键入如下命令:
chown -R jabber:jabber /usr/usr/local/var/jabberd

A.1.6 安装Jabberd2
本节描述了如何下载,配置,编译和安装Jabber2在您的系统上。
a.1.6.1 下载Jabberd
可以从Jabber2 Release站点下载文件jabber-2.n.tar.gz,这里“n”表示最近的Jabberd2版本。
可以下载上面的参考手册到一个环境目录以方便编译安装文件。在作者写本手册的时候,Jabberd 2 stable 3是最后的版本并被用来作为下面的例子

A.1.6.2 解压缩 Jabberd 安装文件
切换到您下载的文件的目录,用如下命令来解压缩Jabberd2文件
tar -zxvf jabberd-2.083.tar.gz (译者注:z选项不一定用的上,比如在我们公司的机器上 )

A.1.6.3配置Jabberd编译环境
切换到上面创建的目录
cd jabberd-2.083
./configure -enable-db -disable-mysql
上面这个命令用来配置您编译时使用Berkeley DB来进行数据存储。也许您想启动调试选项,要这样做的话,在上面命令加上--enable-debug作为配置选项,若想获得配置选项的帮助信息,键入 ./configure --help

A.1.6.4 编译 Jabberd
运行如下命令来编译jabberd
make

A.1.6.5 安装Jabberd
切换到超级拥护
su
运行开始安装
make install

A.1.5.6缺省文件路径
您的Jabberd2安装已经完成,下列文件路径是缺省安装路径
/usr/local/erc Jabberd 配置文件
/usr/local/bin Jabberd二进制文件(命令文件:jabberd, c2s, resolver, router, s2s, sm)

A.1.7配置服务器
更多的基本Jaberd配置(使用Bereley DB时)需要编辑下列4个配置文件
1.在c2s.xml文件中设置hostname ID
2.在c2s.xml文件中设置authreg module
3.在sm.xml中设置hostname ID
4.在sm.xml中设置storage module
这些配置文件可以在/usr/local/etc/jabberd中找到

A.1.7.1在c2s.xml中设置hostname ID
在c2s.xml中编辑位于local network configuration标签下的id标志位,使id指向一个可解析的网络名您的Jabber服务器。举个例子,使用FQDN来代替somemachine.somedomin.com,您的c2s.xml文件配置将会显示如下:
<local>
<!-- Who we identify ourselves as. This should correspond to the
ID (host) that the session manager thinks it is. You can
specify more than one to support virtual hosts, as long as you
have additional session manager instances on the network to
handle those hosts. The realm attribute specifies the auth/reg
or SASL authentication realm for the host. If the attribute is
not specified, the realm will be selected by the SASL
mechanism, or will be the same as the ID itself. Be aware that
users are assigned to a realm, not a host, so two hosts in the
same realm will have the same users.
If no realm is specified, it will be set to be the same as the
ID. -->
<id>somemachine.somedomain.com</id>

记住此id必须能够被客户端解析后才能连上您的Jabberd服务器,使用一个IP地址作为id也能正常工作,但是我们不建议您这样做。

A.1.7.2设置auchred module在c2s.xml中
c2s.xml文件中再往下有一个Authentication/registration database configuration的标签,authreg data module就在这里指定。编辑module标志位使Berkeley DB作为指定的backend module to use.在Jabberd 配置过程中,Berkely DB均缩写为db。因此,你可以象下面这样编辑 module标志位
<!-- Authentication/registration database configuration -->
<authreg>
<!-- Backend module to use -->
<module>db</module>

A.1.7.3 在sm.xml文件中设置主机名Hostname ID
在sm.xml文件的最上面有个id选项用来设置主机名。用上面A.1.6.1节指定的一样的主机名编辑“id”这个标志位
<sm>
<!-- Our ID on the network. Users will have this as the domain part of
their JID. If you want your server to be accessible from other
Jabber servers, this ID must be resolvable by DNS.s
(default: localhost) -->
<id>somemachine.somedomain.com</id>

A.1.7.4 在sm.xml文件中设置存储模式
在sm.xml文件的下面有一个"Storage database configuration"的标签,这里就是指定数据存储模式的地方。如下编辑这段可以使Berkely DB成为指定的数据存储驱动
<!-- Storage database configuration -->
<storage>
<!-- By default, we use the MySQL driver for all storage -->
<driver>db</driver>

A.1.8测试服务器
如果你已经创建了上面提到的日志和数据目录,你应该就可以启动你的Jabberd2服务器并开始进行连接。

A.1.8.1启动Jabberd 2
可以使用下面的启动脚本来启动你的Jaberd2服务器
su
su jabber
/usr/local/bin/jabberd
如果您的服务器启动失败,您可以在启动Jabberd2时附加调试选项(记住这需要在编译Jabberd2时加上调试选项--详见A.1.5.3)
/usr/local/bin/jabberd -D

A.1.8.2 连接到Jabberd2服务器哦
现在您应该可以连接到您的Jabberd服务器并创建一个帐号了。您的帐号的名字可以是这样的:[email protected]. 如果您不能正常连接,请确定主机名(详见A.1.6.1和A.1.6.3)可以被当前运行的客户端解析。

A.1.9 更多配置
一旦您的服务器运行以后,也许您希望进行更多配置。那么您可以详见第5部分:Common Configuration Tasks,从那里可以了解到更多的配置。
 

你可能感兴趣的:(xml,Stream,服务器,防火墙,ssl,通讯)