一小沫一博客

【行多久,方为执着;思多久,方为远见】

ejabberd 源码安装及简明配置

ejabberd 简明配置 (2012-03-08 18:48:52)
http://blog.sina.com.cn/s/blog_6d2cab390100zop7.html
标签: ejabberd
关于ejabberd可参考 http://www.ejabberd.im/
1.安装ejabberd
http://www.process-one.net/en/ejabberd/downloads 下载ejabberd,选择 Source Code。下载后解压安装。

tar zxvf jabberd-2.1.10.tar.gz
cd ejabberd-2.1.10/
./configure --prefix=$HOME/apps/ejabberd-2.1.10
make
make install

以上命令把ejabberd安装到 –prefix 参数指定的目录。
如果出现错误:
…{undef,[{asn1ct,compile_asn1,…
是因为erlang的包没装全,如果是Ubuntu系统,可执行
sudo aptitude install erlang-nox
2.配置ejabberd
切换到安装目录 $HOME/apps/ejabberd-2.1.10。

编辑 etc/ejabberd/ejabberd.cfg:
设置服务的域 {hosts, ["example.com"]}
注解掉对端口5269(ejabberd_s2s_in)的监听;
设置管理员帐号 {acl, admin, {user, "winpub", "example.com"}}
注解掉模块启用mod_register
启动服务
sbin/ejabberdctl start
查看服务状态
sbin/ejabberdctl status
添加用户
sbin/ejabberdctl register winpub example.com mypasswd

打开浏览器,输入 http://localhost:5280/admin 可以管理ejabberd服务。
3.安装额外管理包
命令行工具ejabberdctl默认的管理功能很少,需安装额外管理模块以支持更多的功能。
根据 http://www.ejabberd.im/ejabberd-modules 的描述获取ejabberd模块,编译mod_admin_extra,
svn co https://svn.process-one.net/ejabberd-modules
cd ejabberd-modules/mod_admin_extra/trunk
./build.sh
生成的模块为 ebin/mod_admin_extra.beam,拷贝到ejabberd的模块目录
cp ebin/mod_admin_extra.beam $HOME/apps/ejabberd-2.1.10/lib/ejabberd/ebin
在ejabberd的服务配置文件 ejabberd.cfg 启用该模块:
{modules, [

{mod_admin_extra, []},

]}.
不带任何参数运行ejabberdctl 会发现有更多可用的命令了。
4.启用ldap认证
注释掉 {auth_method, internal}.
根据ldap的配置去掉如下行的注释
{auth_method, ldap}.
{ldap_servers, [“localhost”]}.
{ldap_rootdn, “dc=example,dc=com”}.
{ldap_password, “**“}.
{ldap_base, “dc=example,dc=com”}.
{ldap_uids, [{“mail”, “%u@example.com”}]}.
5.启用TLS加密
生成证书
openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
openssl rsa -in privkey.pem -out privkey.pem
cat privkey.pem >> server.pem
rm privkey.pem
修改ejabberd.cfg,启用证书:
{listen,[{5222, ejabberd_c2s, [{certfile, “/path/to/server.pem”}, starttls,…
参考 http://www.ejabberd.im/tuto-install-ejabberd
6. 让自己出现在共享的花名册里
修改源码mod_shared_roster.erl,在函数 get_user_roster(Items, US) 里,
找到行
fun(User, Acc2) ->
if User == US -> Acc2;
true -> dict:append(User,
改成
fun(User, Acc2) ->
%if User == US -> Acc2;
if false -> Acc2;
true -> dict:append(User,
编译模块
erlc -pa . mod_shared_roster.erl
把生成的mod_shared_roster.beam覆盖原始模块文件。
7. 禁止用户修改花名册
有人提供了 mod_filterroster.erl,参考 http://www.ejabberd.im/node/1589
不过有时候erlang进程会crash掉,原因是没找到匹配的方法调用,在文件尾部把最后一个end的标点改成分号,新加一个方法
end;
check_rosterchange(_) ->
false.
可以避免这个问题。

阅读更多
个人分类: ejabberd
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

ejabberd 源码安装及简明配置

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭