EjabberdJit
Настройка ejabberd + jit
Установка сервера
Ставим (apt-get install) ejabberd. Находим конфиг /etc/ejabberd/ejabberd.cfg
указываем там (тут приведён пример):
{acl, admin, {user, "combr" }}.
этот пользователь будет записан в администраторы сервера, thesis writers
{host, "vesna.ru"}.
на этом хосте будет работать jabber-сервер. Ejabberd с версии 0.9 поддерживает виртуальный хостинг, так что хостов может быть много. если нужно поддерживать несколько хостов, используйте опцию hosts.
{language, "ru"}.
язык, на котором будут выдаваться сообщения сервера.
Должны быть открыты порты
[{5222, ejabberd_c2s, [{access, c2s},
….. это соединение клиент-сервер, достаточно для организации нешифрованных соединений клиентов и отдельно стоящего сервера.
{5269, ejabberd_s2s_in,
- …. соединение сервер-сервер, для общения с клиентами других серверов.
{5280, ejabberd_http,
…. веб-администрирование этого сервера.
попробуйте запустить сервер service ejabberd start, посмотрите в лог /var/log/ejabberd/sasl.log если там последняя запись — это
CRASH REPORT
ищите причину (чуть ниже может быть подсказка) Если там последнее — это
PROGRESS REPORT
То вы успешно его запустили.
Установка пароля администратора
Теперь надо задать пароль администратора:
Usage: ejabberdctl node command command: register user server password register a user т.е. ejabberdctl register combr vesna.ru combr
через пробел команда пользователь хост пароль
теперь можете зайти браузером по адресу host:5280/admin, ввести полный jid администратора (например, combr@vesna.ru) и пароль, и администрировать себе ;)
Проблемы
далее нередактированное письмо от Вадим Илларионов <master@usib.irkps.ru>
Я или кто-нибудь вернитесь к его редактированию позже ;)
= =
Сам ежабер поднялся без хлопот, хватило вдумчивого раскуривания доков. Суть проблемы (точней, три сути) состояла в следующем.
1. Не удавалось приконнектиться к веб-морде администрирования. Оно, вроде, и не очень надо (всё можно сделать из старой доброй командной строки), однако ж…
Решение ………….. Далее довольно пространно, зато на эту ремарку после только и буду, что ссылаться (если не забуду в процессе). В моей ситуации, когда машинка-маршрутизатор во внутренней сети зовётся router, а во внешней — хм… никак не зовётся, и привязать сервис надо к конкретному имени… В общем, геморроя хватило. Прежде на рутере имелся ещё и реальный айпишник, к которому было привязано реальное имя — скажем, usib.irkps.ru (тем более, что так оно и обстояло). Не так давно я для вящей безопасности да ради облегчения и без того непосильного админского труда ;) сныкался за аппаратным WAN-маршрутизатором. Благо, последний умеет прокидывать обращения извне на заданный адрес внутри и даже более того: при обращении изнутри на внешний адрес, возвращать обратившегося «куда надо» (блин, мозги вывихнешь). Так вот, почти всё дальнейшее повествование будет связано с именем usib.irkps.ru, если обратное не оговорено особо. Важно! В конфиге ejabber вместо директивы 'host' пользоваться директивой 'hosts', где в качестве параметров указать оба имени: и внутреннее, и внешнее; например:
{hosts, ["router", "usib.irkps.ru"]}
Почему именно так, оставлю до более светлых времён и умов. После первого запуска сервиса регистрируем в нём себя, любимого (кому ж ещё доверить роль админа!), причём с указанием домена. В моём случае:
ejabberdctl register owner@usib.irkps.ru usib.irkps.ru <passwd>
Теперь в конфиг сервиса добавим (раскомментарим и поправим имеющуюся) строчку:
{acl, admin, {user, "owner", "usib.irkps.ru"}}
и перезапустим его. Всё, можно заходить на http://usib.irkps.ru:5280/admin с логином owner@usib.irkps.ru и паролем <passwd>. (Гы. А вы подберите. =))
2. При регистрации через JIT вываливалась «Ошибка отправки регистрационных данных. Причина: XDB troubles»
Решение ………….. Дело в следующем. Как я уже писал, jabber-jit не умеет жить без xdb_file.so, который принадлежит jabber-1.4. Но жабер-то остановлен! И в противовес ему рулит парадом Е-жабер. Значит, надо подсунуть эту библиотечку jit’y, чтоб выкручивался сам. (Майнтейнеры, ау!) Более того, в доке к е-жаберу есть рецепт, как это сделать. Просто переточим его под Альт, и добавим в /etc/jabber/jabber-jit.xml подправленную «подкоренную» секцию из примера («корневее» только <jabber>):
<!-- Some Jabber server implementations do not provide XDB services (for example jabberd 2.0 and ejabberd). xdb_file_so is loaded in to handle all XDB requests. --> <xdb id="xdb"> <host/> <load> <!-- Майнтейнеры, ау 2 раза!! --> <xdb_file>/usr/lib/jabber/xdb_file/xdb_file.so</xdb_file> </load> <xdb_file xmlns="jabber:config:xdb_file"> <!-- ...3 раза!!! Каталог /var/lib/jabber не принадлежит jabber-jit! --> <spool><jabberd:cmdline flag='s'>/var/lib/jabber</jabberd:cmdline></spool> </xdb_file> </xdb>
- Лирическое отступление.
Почему подправлена секция <xdb_file>, можно увидеть тривиальным пролистыванием файловой системы. А вот о секции <spool> — в сути №…
- Кранты лирическому отступлению.
…3. Попытка импорта экаунтов из jabber-1.4 (хоть поюзерно, хоть каталогом) обламывалась хоть и многословно, но всегда со словечком «eacces» (да-да, не опечатка).
Решение ………….. Всё просто. ejabberdctl import-something запускается от юзера ejabberd, тогда как права на /var/lib/jabber/<hostname>/* принадлежат юзеру.группе jabber.jabber с маской 700 на каталоги (начиная с /var/lib/jabber) и 600 на файлы. То есть, довольно НА МОМЕНТ ИМПОРТА отдать права ПРОЧИМ на чтение-исполнение, и — вуаля! По запросу:
ejabberdctl import-file /var/lib/jabber/<hostname>/<user>.xml
или вообще:
ejabberdctl import-dir /var/lib/jabber/<hostname>
из объектива вылетает кролик! Важно не забыть ПОТОМ вернуть допуски к файлам-каталогам в прежнее состояние, потому что… …Вот и добрались до спула. Как я уже подмечал, JIT живёт без жабера, но как юзал спул жабера под жабером, так и будет юзать спул _жабера_ под Е-жабером (майнтейнеры, фиг ли). И если локальные клиенты имели регистрацию в аське, самым безболезненным вариантом станет не новая их регистрация в пресловутом, но достойном сервисе, а прозрачный своею незаметностию для означенных юзверей переход на новый, хоть и чуть более прогрессивный… Ой, наплёл-наплёл! Простите пиво, а? Надеюсь, теперь понятно, почему важные на мой затуманенный взгляд моменты касательно жабер-спула были выделены КАПСЛОКОМ.
Если вы меня поняли, вашим юзерам не придётся перерегистрироваться в аське. Если нет — придётся не только ЭТО, но и после новой регистрации, для того, чтоб респонденты выглядели зеленовато при коннекте, не останется ничего иного, как по новой просить у каждого респондента авторизации (эту проблему я не описывал в запросе, однако ж сам в неё упёрся — после решения первых трёх).
Постскриптум …………………… Ремарка (вспомнил, ура!) на пункт 1. Если ваши юзера помимо жабер-сервиса, которого вполне хватает для внутреннего сообщения, юзают ещё и внешнюю аську (тогда почему бы не позволить им пользовать собственные жабер-экаунты наружу?), не отстраивайте icq-транспорт на имена icq.localhost и sms.localhost. Почему? Каким-то образом jabber-1.4 с этим вариантом живёт себе, и в ус не дует, а Е-жабер отчего-то не уживается. Е-жаберу какого-то чёрта вынь да положь транспорты с расширением в виде FQDN.
Впрочем, не настаиваю на собственной правоте. Если кому удастся их сдружить таким макаром, буду рад всяческим комментариям.
Общий список контактов
Теперь добавим каждому пользователю список контактов всех (или не всех) сотрудников офиса, а так же, для удобства пользования, сформируем группы по отделам или филиалам…. Это уже на свой вкус и цвет … И так: 1) Для владеющих буржуйским языком. Посетите http://www.process-one.net/en/projects/ejabberd/docs/guide_en.html#htoc52 и там почитайте про mod_shared_roster 2) Для таких, как я … Добавляем в конец файла ejabberd.cfg строку
{mod_shared_roster, [{iqdisc, no_queue}]},
например между строк
{mod_last, []}, {mod_version, []}
Только внимательно, так как скобки и запятые имеют принципиальное значение. Перезапускаем сервис… Теперь заходим на http://сервер:5280/admin или как зовут наш сервер) и видим новый пункт меню «Общие контакты» Там добавляем новую группу, в эту группу добавляем полные JUD (обязательно полные!) и пишем, какие группы могут видеть эту группу … По идее, группа видит сама себя, и при включении всего списка в одну группу каждый пользователь будет сразу получать полный ростер … А что нам, сисадминам, еще нужно ? Правильно — побольше свободного времени… Не бегать же по всему офису и добавлять в список контактов каждому каждого :)
P.S. Включение пользователя в несколько групп возможно. При этом получается удобно и красиво …