Это простой рецепт для настройки 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 статус пользователей
Дополнительное чтение:
- http://prosody.im/doc/cyrus_sasl
- http://blog.marc-seeger.de/2009/12/30/setting-up-prosody-to-authenticate-against-ldap/
- https://wiki.koumbit.net/ProsodyConfiguration
Автор: AcidumIrae