dcsimg

使用Jabber构建自己的IM服务器

卡拉·施罗德| 打印此页
//www.chuangxintongxin.com/netos/article.php/3460831/Build-Your-Own-IM-Server-with-Jabber.htm

即时消息传递是一种出色的业务通信工具。例如,在Enterprise Networking Planet的工作人员和作家都穿着睡衣在家中工作,遍布全球。 ENP的一位心碎的编辑Perry White住在法国南部的一栋别墅中。我从目前停泊在拉拉通加(Raratonga)的一艘帆船上寄出专栏。当然,我们可以交换电子邮件,但是有时候实时交流会更好。 *

Jabberd 2,开源IM服务器

您可以限制带宽,限制并发用户数,托管多个虚拟域以及向所有用户发送鼓舞人心的广播消息。综上所述,这是一个非常不错的软件包。

如果您进入Instant Messaging Planet,您将看到列出的数十个IM服务器,其中包含各种功能和价格标签。您将找到有关该行业以及IM的使用方式的各种重要信息。有些产品甚至传输流视频和声音。 Jabberd 2并不关心此类功能。它所做的就是在两个人之间传输实时文本消息。它可以在许多Unix变体和Windows上运行(尽管Windows支持仍处于试验阶段),并且可以在任何平台上为客户端提供服务。它是根据 GPL,而且是免费的。

不要将Jabberd 2与Jabber混淆。 Jabber是一组流XML协议和技术。它是构建各种IM服务器和客户端的代码库。

Jabberd 2的设置和维护相当容易,但是Jabberd 2的二进制发行版并不常见,因此本文将在Linux服务器上进行源安装。首先安装以下程序。如果从软件包安装它们,请确保还获取它们的关联 开发者 要么 开发套餐:

  • OpenSSL 0.9.6b或更高版本
  • Berkeley DB版本4.1.24或更高版本
  • Libidn版本0.3.0或更高版本

您也可以选择将MySQL或PostgreSQL用于数据存储。本文介绍了如何将Berkeley DB用于数据存储,因为它是最简单的方法,并且对于有几个用户的小型私人服务器也可以正常使用。为了获得更多的用户和更好的安全性,您将需要MySQL或PostgreSQL。

设置Jabberd 2服务器

第一个任务是创建一个“ jabber”用户和组:

#groupadd jabber
#useradd -g jabber jabber

Jabberd 2需要其自己的日志文件和文件来存储PID(进程标识符)。如果不创建单独的日志文件,它将把所有内容都转储到syslog中。

#mkdir -p / usr / local / var / jabberd / pid /
#chown -R jabber:jabber / usr / local / var / jabberd / pid /
#mkdir -p / usr / local / var / jabberd / log /
#chown -R jabber:jabber / usr / local / var / jabberd / log

解压,配置和安装

默认安装目录为 / usr /本地。可以用通常的方法改变 ./configure选项;跑 ./configure-帮助 去看他们。然后执行通常的下载,解压缩,配置,制作和制作安装过程。在此示例中,配置选项将Jabberd的配置文件放入 / etc / jabberd,启用Libidn,OpenSSL,Berkeley DB并禁用MySQL支持:

$ tar zxvf jabberd-2.0s6.tar.gz
$ cd jabberd-2.0s6
$ ./configure --sysconfdir = / etc / jabberd --enable-idn --enable-ssl enable-db --disable-mysql
$使
#进行安装

现在,您应该更改所有权和权限 / etc / jabberd /。这些文件包含密码,因此它们只能由root用户写入,并且只能由jabber组的成员读取:

#chown root:jabber / etc / jabberd /
#chmod -R 640 / etc / jabberd /

组态

服务器主机名必须同时设置 / etc / jabberd /c2s.xml/ etc / jabberd /sm.xml。 (您确实可以使用名称解析,对吗?)您可以只使用局域网专用的主机名,而不必担心。要进行远程访问,必须使用完全限定的域名。一个普通的旧的静态可路由IP也将起作用。在 c2s.xml寻找

<!-本地网络配置->
...
<id>imserver.yakyak.com</id>

sm.xml,在下面找到ID行 <!-会话管理器配置->.

接下来,创建 / usr / local / var / jabberd / db 目录以保存您的Berkeley DB数据存储,并将其固定给jabber用户和组。然后在中编辑两个条目 c2s.xml。第一个是

<!-认证/注册数据库配置->
<authreg>
<!-使用的后端模块->
<module>db</module>

第二步,验证数据库存储的文件路径是否正确:

<!-Berkeley DB模块配置->
<db>
<!-用于在以下位置存储数据库文件的目录>
<path>/ usr / local / var / jabberd / db</path>

测试服务器

而现在,关键时刻。启动它并与您选择的支持Jabber的IM客户端连接:

jabber @ windbag:〜#/ usr / local / bin / jabberd

您的帐户名称是 [email protected];或者,希望您使用更明智的名称。支持哪些客户?从字面上看,数百种适用于Linux,Windows,MacOS和其他平台。看到 Jabber ::软件::客户以获得清单。

默认情况下,公共注册处于启用状态,因此任何知道您的服务器地址的人都可以注册一个帐户。对于局域网使用或某些选定的远程用户,您可以在以下位置设置简单的网络访问控件: c2s.xml。例如,这将访问限制为仅访问单个本地子网以及单个远程IP:

<order>deny,allow</order>
<允许ip ='127.0.0.0'mask ='255.0.0.0'/>
<允许ip ='192.168.1.0'mask ='255.255.255.0'/>
<允许ip = '63 .236.18.26'/>

管理用户

没有用于在Berkeley DB数据存储中添加或删除用户的工具。如果要禁用公共注册,控制用户访问并能够添加和删除用户,请使用MySQL或PostgreSQL。没有用于删除或添加用户的Jabberd 2工具,您将使用标准的MySQL / Postgre工具。见 Jabberd 2安装和管理指南有关使用这些功能的说明。

开始和停止

确保仅以jabber用户身份运行Jabberd 2,而不能以root用户身份运行。以root用户身份运行任何服务都会带来很大的安全风险。并且它将伯克利数据库初始化为root,因此jabber用户将无法对其进行写入。这意味着没有任何效果。

停止jabberd意味着停止以下五个过程: 路由器,解析器,sm,c2ss2s。手动停止和启动变得乏味;在看 附录A.8 有关下载和自定义RC启动文件的说明。附录A.9描述了如何使用 守护程序代替RC文件。 Daemontools是使其保持运行并从中断中恢复的更好选择。

因为这是一个简单的私有Linux文本消息服务器,所以您将避免Windows即时消息中大多数常见的麻烦。但是,明智的管理员始终保持谨慎-仔细注意文件权限和用户访问权限,并注意查看日志中是否有恶意活动的迹象。

在配置防火墙时,请不要忘记以下IM端口:

  • 端口5222,非SSL客户端
  • 端口5223,SSL客户端
  • 端口5269,服务器到服务器

更多功能

Jabberd 2支持通过OpenSSL进行加密传输。请参阅第5.2章。 《管理指南》中的“为SSL连接配置Jabberd 2”以获取说明。您可以将服务器配置为接受明文和SSL连接,或者您需要SSL。

您可以限制带宽,限制并发用户数,托管多个虚拟域以及向所有用户发送鼓舞人心的广播消息。综上所述,这是一个非常不错的软件包。

资源资源


* 第一句话是对的。

本文最初于2005年1月19日发布