Pull to refresh

Установка легковесного Jabber сервера Prosody с LDAP аутентификацией через SASL

Reading time 2 min
Views 11K
Это простой рецепт для настройки IM сервера для общения внутри компании. В нашей компании для общения внутри сети используется Jabber и некоторое время назад мы стали замечать что jabberd14 нещадно протекает и грузит сервер. Поиски легковесной замены привели к северу Prosody написаному на языке Lua. По заверению разработчиков это современный гибкий сервер для общения, ориентированый на простоту настройки и нетребовательный к ресурсам. Работа последние пару месяцев это в принципе подтверждает.

Сервер на котором крутится Jabber у нас с Ubuntu 10.04 LTS, и установка, как и для любого основанного на Debian дистрибутива, довольно проста — добавить репозиторий в /etc/apt/sources.list:

deb packages.prosody.im/debian lucid main

добавить ключ:

wget prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add -

и установить:

apt-get update && apt-get install prosody-0.9 liblua5.1-cyrussasl0 libsasl2-modules-ldap sasl2-bin

Как вы выше заметили, параллельно мы устаовили SASL, который используем для аутентификации в LDAP компании (настройка самого LDAP не рассматривается — считаем что он уже есть).

Настроим параметры демона saslauthd для работы с механизмом LDAP — добавим в /etc/default/saslauthd следующее:

START=yes
MECHANISMS="ldap"


Созданим настройку для XMPP сервиса /etc/sasl/xmpp.conf, будем проверять через механизмы PLAIN и LOGIN:

pwcheck_method: saslauthd
mech_list: plain login


В конфигурационном файле /etc/saslauthd.conf укажем адрес LDAP сервера и базовый DN, по которому будем искать пользователей:

ldap_servers: ldap://127.0.0.1
ldap_search_base: ou=users,dc=example,dc=com


Теперь можно перезапустить демона аутентификации saslauthd:

/etc/init.d/saslauthd restart

Настройка Prosody довольно проста — файлы конфигурации пердставляют собой Lua скрипты. Добавим в /etc/prosody/prosody.cfg.lua:

-- Enable the cyrus backend
c2s_require_encryption = true
anonymous_login = false
allow_unencrypted_plain_auth = false
authentication = "cyrus"
cyrus_service_name = "xmpp" -- Optional, defaults to "xmpp"
cyrus_application_name = "xmpp"


Перезапускаем Prosody:

/etc/init.d/prosody restart

Теперь пользователи могут пользоваться Jabber сервером и поедание ресурсов jabberd14 в прошлом. Мы не разбирались почему именно jabberd14 поедает ресуры, возможно был виноват один из установленых плагинов, но Prosody выполняет все необходимые нам функции потребляя минимум ресурсов.

Дополнительные плагины, которые мы используем с Prosody:
  • roster_command — для управления ростерами через prosodyctl (у нас крон подписывает всех на всех)
  • muc_log — запись разговоров в конференциях
  • muc_log_http — встроеный web-интерфейс для просмотра разговров в конференциях записаных mod_muc_log
  • webpresence — публикует Jabber статус пользователей

Дополнительное чтение:
Tags:
Hubs:
+12
Comments 9
Comments Comments 9

Articles