ejabberd 简明配置 (2012-03-08 18:48:52)

ejabberd 简明配置

  (2012-03-08 18:48:52)
标签: 

ejabberd

 

it

 

关于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.

可以避免这个问题。






启用https  /  wss(启用https后,websocket 自动 支持 wss  )

把普通http访问的配置拷贝一份,改一下端口,加上 tls,certfile 配置即可;certfile是上面的方法生成的pem证书文件

 -
    ip: "192.168.127.128"
    port: 9281
    module: ejabberd_http
    request_handlers:
      "/websocket": ejabberd_http_ws
    ##  "/pub/archive": mod_http_fileserver
    web_admin: true
    http_bind: true
    register: true
    captcha: true
    tls: true
    certfile: "/lib/ejabberd-0.0/server.pem"


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值