Немного пред истории.
Перед тем как наткнуться на замечательный и гибкий сервер ejabberd, я пытался и использовать http://ru.wikipedia.org/wiki/Openfire . Этот сервер предназначен, на мой взгляд, предназначен специально для админов-дебилов. Потому как ничего, кроме красивой админки и пары не работающих плагинов, в нём нет. Плюс ко всему эта вечно жрущая оперативку java и несовместимость или частичная совместимость со всеми клиентами кроме Spark.

Ну-с приступим!
OS Debian
установим пакеты

1
apt-get install erlang-tools erlang-dev ejabberd

по умолчанию в нём нет модуля который взаимодействует с mysql, поэтому нам надо его установить
Скачиваем и ставим

1
2
3
4
root@debian:~/source# svn checkout http://svn.process-one.net/ejabberd-modules/mysql/trunk/ mysql
root@debian:~/source# cd mysql/
root@debian:~/source/mysql# ./build.sh
root@debian:~/source/mysql# cp ./ebin/*.beam  /usr/lib/ejabberd/ebin/

теперь скачиваем патчим собираем и устанавливаем плагин mod_archive

1
2
3
4
5
6
root@debian:~/source# svn checkout http://svn.process-one.net/ejabberd-modules
root@debian:~/source# wget http://zakachkin.ru/patch_mod_archive.diff
root@debian:~/source# cd ejabberd-modules/mod_archive/trunk/src/
root@debian:~/source/ejabberd-modules/mod_archive/trunk/src# patch -p0 < ../../../../patch_mod_archive.diff
root@debian:~/source/ejabberd-modules/mod_archive/trunk/src# cd .. && ./build.sh
root@debian:~/source/ejabberd-modules/mod_archive/trunk# cp ./ebin/*.beam  /usr/lib/ejabberd/ebin/

если не пропатчить то вы не сможете просматривать переписку пользователя в веб.
и так мы всё установили теперь приступим к конфигурации.
http://zakachkin.ru/jabber.sql Здесь лежит дамп базы который уже включает в себя таблички для модуля archive.
теперь открываем файл /etc/ejabberd/ejabberd.cfg

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
{acl, admin, {user, "adminname", "yyyy.ru"}}.
{hosts, ["yyyy.ru"]}.
{loglevel, 4}.

{listen,
 [
  {5222, ejabberd_c2s, [
                        {access, c2s},
                        {shaper, c2s_shaper},
                        {max_stanza_size, 65536},
                        starttls, {certfile, "/etc/ejabberd/ejabberd.pem"}
                       ]},


  {5269, ejabberd_s2s_in, [
                           {shaper, s2s_shaper},
                           {max_stanza_size, 131072}
                          ]},

{5280, ejabberd_http, [
                         {request_handlers,
                         [
                         {["archive"], mod_archive_webview}
                         ]},
                         http_bind,
                         http_poll,
                         web_admin
                        ]}

 ]}.

{max_fsm_queue, 1000}.

{s2s_use_starttls, true}.

{s2s_certfile, "/etc/ejabberd/ejabberd.pem"}.

{auth_method, odbc}.
{odbc_server, {mysql, "localhost", 3306, "jabber", "jabber", "passsql"}}.
{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.
{acl, local, {user_regexp, ""}}.
{access, max_user_sessions, [{10, all}]}.
{access, max_user_offline_messages, [{5000, admin}, {100, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
               {allow, all}]}.
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{deny, all}]}.
{access, pubsub_createnode, [{allow, all}]}.
{language, "ru"}.
{modules,
 [

  {mod_archive_odbc, [{database_type, "mysql"},
                      {default_auto_save, true},
                      {enforce_default_auto_save, true},
                      {default_expire, infinity},
                      {enforce_min_expire, 0},
                      {enforce_max_expire, infinity},
                      {replication_expire, 31536000},
                      {session_duration, 1800},
                      {wipeout_interval, 86400}]},
  %%{mod_archive_webview, []},
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, % requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, % requires mod_adhoc
  {mod_admin_extra, []},
  {mod_disco,    []},
  {mod_irc,      []},
  {mod_last_odbc,     []},
  {mod_muc,      [
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                 ]},
  {mod_offline_odbc,  [{access_max_user_messages, max_user_offline_messages}]},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                 ]},
  {mod_pubsub,   [ % requires mod_caps
                  {access_createnode, pubsub_createnode},
                  {pep_sendlast_offline, false},
                  {last_item_cache, false},
                  {plugins, ["flat", "hometree", "pep"]}  % pep requires mod_caps
                 ]},
  {mod_register, [
                  {welcome_message, {"Welcome!",
                                     "Welcome to a Jabber service powered by Debian. "
                                     "For information about Jabber visit "
                                     "http://www.jabber.org"}},


                  {access, register}
                 ]},
  {mod_roster_odbc,   []},
  {mod_stats,    []},
  {mod_time,     []},
  {mod_vcard_odbc,    [{search, true},
  {matches, infinity},
  {allow_return_all, true}]},
  {mod_version,  []}
 ]}.

Это все что осталось не за комментированным.
Если вдруг что поправите сами в зависимости от своих потребностей.
Регистрируем админа в sql.

1
ejabberdctl register adminname yyyy.ru pass

Ну вот и все.
http://hostname:5280/admin админка
http://hostname:5280/archive архив
Удачи вам!