Ejabberd

Настройка Ejabberd

Настройка XMPP сервера Ejabberd.

Файл конфигурации 

Debian/Mandriva /etc/ejabberd/ejabberd.cfg

Freebsd /usr/local/etc/ejabberd/ejabberd.cfg

Полезное

Не забываем давать права на запись в папку, где хранятся логи (или она может быть не создана).

ejabberd start - Запуск ejabberd в режиме сервера

ejabberd stop - Остановка ejabberd

ejabberd restart - Рестарт ejabberd

ejabberd status - Получить статус сервера ejabberd

ejabberd live - Стартовать ejabberd в интерактивном режиме (будет видно весь процесс загрузки сервера, удобно для отслеживания ошибок)

Веб интерфейс доступен по адресу - http://localhost:5280/admin/ 

Более подробно о настройке Ejabberd:

http://www.process-one.net/en/ejabberd/guide_en 

В пункте 3.2 руководства описывается работа Ejabberd с базами данных.

Настройка

  1. %% доменное имя или IP адрес вашего сервера, localhost указывается в том случае, если планируется доступ к службе с локальной машины
  2. {hosts, ["localhost", "domen.ru"]}.
  3.  
  4. %% в логи пишется все - 4, в логи пишутся только ошибки - 2
  5. {loglevel, 4}.
  6.  
  7. %% указываем пользователя (или нескольких пользователей) которые будут иметь права администратора и смогут заходить в веб-панель администрирования jabber сервера - регистрация этих пользователей происходит обычным способом через клиент 
  8. {acl, admin, {user, "user"}}.
  9.  
  10. %% Здесь указано на каких портах будет работать сервер в режимах c2s, s2s, http
  11. {listen, [
  12.    {5222, ejabberd_c2s, [
  13.    {certfile, "/opt/ejabberd-2.1.0/conf/server.pem"}, starttls,
  14.    {access, c2s},
  15.    {shaper, c2s_shaper},
  16.    {max_stanza_size, 65536}
  17. ]},
  18.  
  19. {5223, ejabberd_c2s, [
  20.    {certfile, "/opt/ejabberd-2.1.0/conf/server.pem"}, tls,
  21.    {access, c2s},
  22.    {shaper, c2s_shaper},
  23.    {max_stanza_size, 65536}
  24. ]},
  25.  
  26. %% s2s - server to server сообщение от одного сервера при необходимости шифруется и передается на другой сервер, а на другом сервере происходит соединение c2s
  27. {5269, ejabberd_s2s_in, [
  28.    {shaper, s2s_shaper},
  29.    {max_stanza_size, 131072}
  30. ]},
  31.  
  32. {5280, ejabberd_http, [
  33.    captcha,
  34.    http_bind,
  35.    http_poll,
  36.    web_admin
  37. ]}
  38.  
  39. ]}.
  40.  
  41. %% Использовать объединение серверов. Нужен сертификат
  42. {s2s_use_starttls, true}.
  43.  
  44. %% Сертификат для S2S
  45. {s2s_certfile,/opt/ejabberd-2.1.0/conf/server.pem”}.
  46.  
  47. %% Разрешить или запретить общение с серверами.
  48. %% {{s2s_host, “goodhost.org”}, allow}.<br /><br />
  49. %% {{s2s_host, “badhost.org”}, deny}.<br /><br />
  50.  
  51. %% тут подключаем mod_log_chat логи будут записаны в html формате в папку web сервера /var/www/html/jabberlog, и будут доступны через http (при условии корректной настройки веб-сервера)
  52. {mod_log_chat, [{path, "/var/www/html/jabberlog"}, {format, html}]},<br /><br />
  53.  
  54. %% Также следует учесть, что аккаунт администратора регистрируется через обычный jabber клиент. Для возможности регистрации пользователей на сервере следует определить права в соответствующей строке конфига как:
  55. {access, register, [{allow, all}]}.

Создание сертификата
  1. cd /usr/local/etc/ejabberd/
  2.  
  3. openssl req -new -x509 -nodes -newkey rsa:1024 -days 3650 \
  4. -keyout privkey.pem -out server.pem -subj \
  5.  "/C=XX/ST=XX/L=XX/O=XX/OU=XX/CN=hostname.ru/emailAddress=mail@hostname.ru"
  6.  
  7. cat privkey.pem >> server.pem 
  8. rm privkey.pem 
  9. mv server.pem ssl.pem

DNS - SRV записи

Запись SRV RR может выглядеть так: _sip._udp SRV 0 0 5060 domain.tld.

В этом примере _sip._udp это IETF тип сервиса и протокол. SRV это тип DNS RR,

приоритет сервера установлен в 0

значение weight 0, 

5060,- порт, на котором работает SIP,

domain.tld,- адрес сервера (SIP-прокси).

SRV для Jabber:

_jabber._tcp SRV 5 0 5269 domain.tld.

_xmpp-server._tcp SRV 5 0 5269 domain.tld.

_xmpp-client._tcp SRV 5 0 5222 domain.tld.

Записи _jabber (и _xmpp-server) используются для интерконнекта с другими jabber-доменами,

_xmpp-client указывает на хост, на котором должен регистрироваться (авторизовываться) клиент.

Если протокол не указан, подразумевается ._tcp.

Если DNS расположено у хостера то скорее всего надо сделать следующее:
  1. Выбрать тип записи из списка - это будет SRV запись
  2. В графе доменного имени указать _jabber._tcp.domain.tld.
  3. В графе параметры указать приоритет сервера, значение weight, порт, домен: 0 0 5222 domain.tld
  4. И также сделать для записей  _xmpp-server._tcp и _xmpp-client._tcp
  5. Однако от хостера к хостеру эта процедура может варьироваться, так что уточняйте.