[Comm] ejabberd
Вадим Илларионов
=?iso-8859-1?q?master_=CE=C1_usib=2Eirkps=2Eru?=
Пт Июн 24 13:14:00 MSD 2005
В сообщении от Пт 24 Июнь 2005 16:17 Mike Lykov написал(a):
> В сообщении от Пятница 24 Июнь 2005 12:10 Вадим Илларионов написал:
> > Покуда не пробовал. Хотя, видимо, стОит. После выходных постараюсь себя
> > заставить.
>
> Кстати, про ejabberd + jit (да еще без jabber14) мне и самому интересно! %)
Блин, так хотелось похвастаться без дальнейших обязательств - ан нет!
К прискорбию, я уже под пивом (работа кончилась, ура выходным!), так что
напишу сюда. Ежели кому не лениво озаботиться приведением повествования к
соответствующему для публикации тону, не ленитесь - озаботьтесь.
Сам ежабер поднялся без хлопот, хватило вдумчивого раскуривания доков.
Суть проблемы (точней, три сути) состояла в следующем.
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-file /var/lib/jabber/<hostname>
из объектива вылетает кролик!
Важно не забыть ПОТОМ вернуть допуски к файлам-каталогом в прежнее состояние,
потому что...
...Вот и добрались до спула. Как я уже подмечал, JIT живёт без жабера, но как
юзал спул жабера под жабером, так и будет юзать спул _жабера_ под Е-жабером
(майнтейнеры, фиг ли). И если локальные клиенты имели регистрацию в аське,
самым безболезненным вариантом станет не новая их регистрация в пресловутом,
но достойном сервисе, а прозрачный своею незаметностию для означенных юзверей
переход на новый, хоть и чуть более прогрессивный... Ой, наплёл-наплёл!
Простите пиво, а?
Надеюсь, теперь понятно, почему важные на мой затуманенный взгляд моменты
касательно жабер-спула были выделены КАПСЛОКОМ.
Если вы меня поняли, вашим юзерам не придётся перерегистрироваться в аське.
Если нет - придётся не только ЭТО, но и после новой регистрации, для того,
чтоб респонденты выглядели зеленовато при коннекте, не останется ничего
иного, как по новой просить у каждого респондента авторизации (эту проблему я
не описывал в запросе, однако ж сам в неё упёрся - после решения первых
трёх).
Постскриптум
============
Ремарка (вспомнил, ура!) на пункт 1. Если ваши юзера помимо жабер-сервиса,
которого вполне хватает для внутреннего сообщения, юзают ещё и внешнюю аську
(тогда почему бы не позволить им пользовать собственные жабер-экаунты
наружу?), не отстраивайте icq-транспорт на имена icq.localhost и
sms.localhost.
Почему? Да хз. Каким-то образом jabber-1.4 с этим вариантом живёт себе, и в ус
не дует, а Е-жабер отчего-то не уживается. Е-жаберу какого-то чёрта вынь да
положь транспорты с расширением в виде FQDN.
Впрочем, не настаиваю на собственной правоте. Если кому удастся их сдружить
таким макаром, буду рад всяческим комментариям.
________________________
С уважением,
Вадим Илларионов
системный администратор
Усолье-Сибирский почтамт
JID: см. <mailto:>
UIN: 7899517
Телефоны:
Мобильный +7 904 658 41 54
Рабочий +7 395 43 444 00
Подробная информация о списке рассылки community