Jabber сервер на FreeBSD


Непонятно чего захотелось поставить жаббер-сервер, правда как-то и не пришлось этим чудом попользоваться. Ну мало ли, может когда вдруг придется, будет, где памятку глянуть, чтоб долго не вспоминать.

На день установки на машинке стояла FreeBSD 6.2-RELEASE и на этот день актуальными были такие жабер-сервера:

/usr/ports/net-im/ejabberd/ - Мощный жаббер-сервер, на борту вроде имеет все, от поиска пользователей до различных гейтов (icq, irc, ...). Ставить не стал из-за его громоздкости и подтягиванием из установки кучи портов.

/usr/ports/net-im/jabber/ - первая версия жаббера. По статистике наиболее используем. Для него написано куча надстроек, которые можно успешно увидеть в портах.

/usr/ports/net-im/jabberd/ - вторая версия (jabberd-2.0.11_2). Отличная стабильная версия, минус только один - очень мало надстроек, приходится прикручивать их от первого жабера. Мой выбор пал на эту версию.

Для ведения базы пользователь использовался MySQL-4.1. В данной статье установку базы данных расписывать не стану.

Итак, cd /usr/ports/net-im/jabberd && make install clean.
Далее смотрим /usr/local/share/jabberd/db-setup.mysql.
Содержимое этого файлика это команды mysql, которые создают для жаббера базу и необходимые для его работы таблицы.
Можно их забивать вручную, а можна сделать так: mysql -h localhost -u root -p < db-setup.mysql и ввести запрашиваемый пароль.

Далее, идем /usr/local/etc/jabberd/ и правим конфигурационные файлы.
Чтобы не приводить здесь файлы конфигов, постараюсь объяснить, что где и как править.
1.В c2s.xml в секции <local> ... <id>jaba.dp.ua</id> <ip>192.168.1.1</ip> ... </local>,
где jaba.dp.ua резолвится в 192.168.1.1 (это нужно задать в своем ДНСе).
2.В sm.xml в секции <sm> ... <id>jaba.dp.ua</id> ... </sm>. Я это прописал, но это нужно для организации соединения с другими жаббер-серверами.
3. Все остальные адреса оставлены 127.0.0.1, хотя если нужен только лишь корпоративный сервер, то многое можно вообще отключить (например, sm и router).
4. Проверяем одинаковость паролей между службами.
5. Проверяем логин и пароль на mysql.
6. Не забываем добавить в /etc/rc.conf соответствующую запись для запуска jabberd.

Проверяем работу:
# jabberd -D
Смотрим "кто упал". Каждый модуль можно проверить отдельно. Например, sm:
# /usr/local/etc/bin/sm -c /usr/local/etc/jabberd/sm.xml -D
и смотрим на ошибку.

Если все нормально, то запускаем /usr/local/etc/rc.d/jabberd start, берем любимый клиент для джаббера (мне понравился pandion, ну и psi тоже неплохой) и пробуем подключится.
В случае неудачи изучаем sockstat -4 | grep jabberd.

ICQ-гейт.
Для того, чтобы из жаббер клиента общаться еще и с пользователями icq нужен icq-гейт. Везде в интернете рекомендуют использовать /usr/ports/net-im/jit, но у меня не получилось побороть это чудо. Шлюз нормально соединялся, я видел асечников, они меня видели, я получал от них сообщения, а вот они от меня нет. :(
Пришлось ставить /usr/ports/net-im/jabber-pyicq/. Это чревато тем, что для его работы тянется и устанавливается еще и питон. Но зато запустился с пол-оборота и работал как часы. :) Кстати, в портах кроме pyicq еще были pyaim и pymsn.

Что нужно подкрутить в конфигах жаббера. В файлике router.xml в секции aliases нужно прописать строчку вида:
<alias name='icq.jaba.dp.ua' target='icqlinker'/>.
icq.jaba.dp.ua также добавлен в named и резолвится в 192.168.1.1.
Нужно перестартовать jabberd.
Правим jabber-pyicq.xml
<jid>icqlinker</jid>
<mainServerJID>icq.jaba.dp.ua</mainServerJID>
<encoding>cp1251</encoding>
Не забываем о пароле между службами.
Все остальное оставляем, как есть или правим на свой вкус и запускаем pyicq предварительно подредактировав /etc/rc.conf.

Конференции.
Конференции - это возможность создавать комнаты для общения нескольких пользователей, т.е. чаты.
Был использован /usr/ports/net-im/mu-conference/. Все настройки по подключению сходны с настройкой icq-гейта.
В файлике router.xml в секции aliases нужно прописать строчку вида:
<alias name='conference.jaba.dp.ua' target='muclinker'/>.
conference.jaba.dp.ua также добавлен в named и резолвится в 192.168.1.1.
Нужно перестартовать jabberd.
Правим muc.xml.
<name>muclinker</name>
<host>conference.jaba.dp.ua</host>
Опять же таки не забываем о пароле и очень внимательно относимся к правам и путям для логов, спула и пидфайла!!!
Стартуем. Наслаждаемся. :)

p.s. Для поиска пользователей использовал jabber-users-agent.


http://igig.dp.ua/FreeBSD/jabber.html

Обновлено: 12.03.2015