如何使用Ejabberd消息归档模块

这篇文章阐述了如何使用Ejabberd提供的第三方消息归档模块

前置阅读

15.03在加载外部模块时有个BUG:
https://github.com/processone/ejabberd/commit/8b23727cc6db571b9d1dcc6119e39a602fe37279

所以, 请使用最新的15.04版本的Ejabberd

继续下面的步骤之前, 请先阅读如何安装模块

安装模块

1
ejabberdctl modules_update_specs
ejabberdctl modules_available
ejabberdctl module_install mod_mam

重新编译

1
make

修改配置文件

配置文件有两个地方需要修改

  • 增加mod_mam模块配置
1
mod_mam:
  access_max_user_messages: access_max_user_messages
  default_page_size: 25
  max_page_size: 100
  request_activates_archiving: true
  iqdisc: parallel

配置说明,请参考模块的README文件

  • 修改mod_roster: {}
1
mod_roster:
  versioning: true

最后, 重启Ejabberd服务器

服务功能查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
## IQ-get 请求
<iq type='get'
id='id-1431259882548'
to='x.hezhiqiang.info'
from='root@x.hezhiqiang.info'
xml:lang='zh'
xmlns='jabber:client'>

<query xmlns='http://jabber.org/protocol/disco#info'/>
</iq>

# IQ-result 响应
<iq from='x.hezhiqiang.info'
to='root@x.hezhiqiang.info/24790037601431259873977465'
id='id-1431259882548'
type='result'>

<query xmlns='http://jabber.org/protocol/disco#info'>
<identity category='pubsub' type='pep'/>
<identity category='server' type='im' name='ejabberd'/>
<x xmlns='jabber:x:data' type='result'>
<field var='FORM_TYPE' type='hidden'>
<value>http://jabber.org/network/serverinfo</value>
</field>
</x>
...
<feature var='urn:xmpp:mam:0'/>
...
</query>
</iq>

你会看到, 多了一个<feature var='urn:xmpp:mam:0'/>

注意: 目前MAM模块暂时支持Mnesia数据库作为后端存储

参考资料

  1. http://www.lebsanft.org/?p=537
  2. https://github.com/processone/ejabberd-contrib/tree/master/mod_mam
  3. http://xmpp.org/extensions/xep-0279.html