eJabberd не удаётся стартовать, что можно ещё проверить??

Блин, я чокнусь с этим ЕДжаббердом.
Уже несколько часов конфигурирую и хоть бы хны.

Пытаюсь поднять eJabberd и зарегить акк (на своём же компе) с Пси.

PSI коннектится к localhost, но не хочет к mainhost.
Проблема крайне схожа с: http://www.gentoo.ru/node/7096
только не понятно в чём именно заключалось у него решение. Я всё тоже самое проделал и в моём случае ничего хорошего не произошло.

mainhost ~ # /etc/init.d/ejabberd start
 * Starting eJabberd ...                 [ !! ]

mainhost ~ # ejabberdctl jabberd@mainhost status
RPC failed on the node jabberd@mainhost: nodedown

mainhost ~ # hostname -s
mainhost

mainhost ~ # ping mainhost
PING mainhost (192.168.1.2) 56(84) bytes of data.
64 bytes from mainhost (192.168.1.2): icmp_seq=1 ttl=64 time=0.034 ms
64 bytes from mainhost (192.168.1.2): icmp_seq=2 ttl=64 time=0.025 ms
64 bytes from mainhost (192.168.1.2): icmp_seq=3 ttl=64 time=0.027 ms

--- mainhost ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.025/0.028/0.034/0.007 ms

mainhost ~ # cat /etc/jabber/ejabberd.cfg | grep hosts
{hosts, ["mainhost"]}.
                            {hosts, ["icq.mainhost", "sms.mainhost"],

mainhost ~ # ejabberdctl ejabberd@mainhost status
Node ejabberd@mainhost is started. Status: started
ejabberd is not running

mainhost ~ #

Если в /usr/bin/ejabberd, /etc/bin/ejabberdctl меняю -sname на -name получаю:

Цитата:
mainhost ~ # /etc/init.d/ejabberd reload
* Reloading eJabberd ...
{error_logger,{{2007,11,8},{22,46,13}},"Can't set long node name!\nPlease check your configuration\n",[]}
....

Crash dump was written to: erl_crash.dump
Kernel pid terminated (application_controller) ({application_start_failure,kernel,{shutdown,{kernel,start,[normal,[]]}}}) [ !! ]
mainhost ~ #

Это какое длинное имя?? mainhost чтоль?? И намного оно длиннее localhost'а с которым вроде как работает?

Спул чистил.

В чём проблема-то не могу никак понять..??

На всякий

На всякий случай вот мой конфиг:

mainhost ~ # cat /etc/jabber/ejabberd.cfg | grep -v ^[\ ]*%

{acl, local, {user_regexp, ""}}.

{access, pubsub_createnode, [{allow, all}]}.

{access, configure, [{allow, admin}]}.

{access, register, [{allow, all}]}.

{welcome_message,
{"Welcome!",
"Welcome to Jabber Service. "
"For information about Jabber visit http://jabber.org"}}.

{access, announce, [{allow, admin}]}.

{access, c2s, [{deny, blocked},
{allow, all}]}.

{shaper, normal, {maxrate, 1000}}.

{shaper, fast, {maxrate, 50000}}.

{access, c2s_shaper, [{none, admin},
{normal, all}]}.

{access, s2s_shaper, [{fast, all}]}.

{access, muc_admin, [{allow, admin}]}.

{access, muc, [{allow, all}]}.

{access, local, [{allow, local}]}.

{auth_method, internal}.

{hosts, ["mainhost"]}.

{max_user_sessions, 10}.

{language, "en"}.

{listen,
[{5222, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper},
{max_stanza_size, 65536},
starttls, {certfile, "./ssl.pem"}]},
{5223, ejabberd_c2s, [{access, c2s},
{max_stanza_size, 65536},
tls, {certfile, "./ssl.pem"}]},
{5269, ejabberd_s2s_in, [{shaper, s2s_shaper},
{max_stanza_size, 131072}
]},
{5280, ejabberd_http, [http_poll, web_admin]},
{8888, ejabberd_service, [{access, all},
{hosts, ["icq.mainhost", "sms.mainhost"],
[{password, "secret"}]}]}
]}.

{s2s_use_starttls, true}.
{s2s_certfile, "./ssl.pem"}.

{outgoing_s2s_port, 5269}.

{modules,
[
{mod_register, [{access, register}]},
{mod_roster, []},
{mod_privacy, []},
{mod_adhoc, []},
{mod_configure, []}, % Depends on mod_adhoc
{mod_configure2, []},
{mod_disco, []},
{mod_stats, []},
{mod_vcard, []},
{mod_offline, []},
{mod_announce, [{access, announce}]}, % Depends on mod_adhoc
{mod_echo, [{host, "echo.mainhost"}]},
{mod_private, []},
{mod_irc, []},
{mod_muc, [{access, muc},
{access_create, muc},
{access_admin, muc_admin}]},
{mod_pubsub, [{access_createnode, pubsub_createnode}]},
{mod_time, []},
{mod_last, []},
{mod_version, []}
]}.

Для начала

Для начала конфиг берется стандартный . там поправляется несколько строк - админ,
потом host меняем на hosts и добавляем после "localhost" "Имя_хоста_жаббера" естественно в DNS он должен отображаться...
и все сразу запустится...

А что ещё в моём

А что ещё в моём конфиге не хватает??

Про hosts - ну так и изначально там так и написано hosts, или ты про что-то другое..

>>добавляем после "localhost"
а заменить этот локалхост нельзя на хост джаббера?

DNS отдельный я не поднимал, прописал в /etc/hosts:
192.168.1.2 mainhost

(т.е. это мой же комп). Пинги проходят. Даже пинги с другого компа до mainhost моего проходят (я там также подправил /etc/hosts), а ПСИ пишет, что host unknown..

пути к

пути к сертификатам правильные?

{listen,
[{5222, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper},
{max_stanza_size, 65536},
starttls, {certfile, "./ssl.pem"}]},
{5223, ejabberd_c2s, [{access, c2s},
{max_stanza_size, 65536},
tls, {certfile, "./ssl.pem"}]},

вот тут настроены две сторонних службы - как они обе могут слушать на одном поте?

{8888, ejabberd_service, [{access, all},
{hosts, ["icq.mainhost", "sms.mainhost"],
[{password, "secret"}]}]}

типа того

{listen,
 [{5222, ejabberd_c2s,     [{access, c2s},
                            {shaper, c2s_shaper},
                            {max_stanza_size, 65536},
                            starttls,
                            zlib,
                             {certfile, "/etc/jabber/ssl.pem"}]},
  {5223, ejabberd_c2s,     [{access, c2s},
                            {max_stanza_size, 65536},
                            tls, {certfile, "/etc/jabber/ssl.pem"}]},
  {5269, ejabberd_s2s_in,  [{shaper, s2s_shaper},
                            {max_stanza_size, 131072}
                           ]},

  {5280, ejabberd_http,    [http_poll, http_bind]},
  {5281, ejabberd_http,    [web_admin,
                            ssl, {certfile, "/etc/jabber/ssl.pem"}
                            ]},
  {5347, ejabberd_service, [{host, "icq.evadim.ru",
                                [{password, "secret"}]}]},
  {5348, ejabberd_service, [{host, "jmc.evadim.ru",
                                [{password, "secret"}]}]},
  {5349, ejabberd_service, [{host, "rss.evadim.ru",
                                [{password, "secret"}]}]}
 ]}.

>> вот тут

>> вот тут настроены две сторонних службы - как они обе могут слушать на одном поте?
прописал полные пути (но они и лежали в текущей директории)

>> вот тут настроены две сторонних службы - как они обе могут слушать на одном поте?
это дефолтовый конфиг. Подправлено там только подстрока "local" на "main".
Я эту команду (порт) закомментил от греха по дальше :)

Но всё равно ведь не запускается, всё тоже самое...

Руки как бы, в

Руки, как бы, в зеркале смотрю - прямые. Сквид, самба - все путем.
С ежом,одна-ко, не срослось. Что интересно, перенес с одной тачки рабочего ежа (собственной настройки) на другую - жаббера в конторе резко не стало.
Трехдневное пинание конфигов и раскуривание манов не помогло (жаббера вернул на место минут через 5, ибо уволят).
Так и не понял в каком месте при копировании кроссплатформенного приложения с кормпа на комп напоролся на грабли. Поставил opеnfire. Открыт, гпл, бесплатен, есть в портах. Продают платный плагин если кому надо. Интерпрайс называется. Ставил и под вендой, и под линуксой - работает (имхо).

Самое простое

Самое простое после установки ejabber отредактировать его конфиг так
Заменить все localhost на имя хоста где стоит ejabber например jabber.local.ru
Разкоментировать строчку acl где указываеться имя админа..

Дабавить в dns зону jabber.local.ru
перезапустить dnd и ejabber... всё должно работать..

Блин :) оно

Блин :) оно точно хочет моей смерти!! :)

Наконец-то запустилось (после раскомментирования строчки acl с админом), но зарегиться из PSI (0.11-dev) не получается несмотря на:

Цитата:
mainhost jabber # /etc/init.d/ejabberd start
* Starting eJabberd ... [ !! ]

mainhost jabber # ejabberdctl ejabberd@mainhost status
Node ejabberd@mainhost is started. Status: started
ejabberd is running

mainhost jabber #

(чё оно мне при запуске знаки восклицательные выдаёт? он тоже радуется запуску? в логе /var/log/jabber/sasl.log чисто, говорит, что запустилось.)

но ПСИ вот что мне выдаёт:
There was an error communication with the jabber server.
Details: Disconnected.

Ну а теперь чего оно дисконнектит? Регистрацию по конфигу я разрешил как видите выше..

попробуй юзера

попробуй юзера другово - ну или из web-морды или консоли зарегить - только не того что уже обьявлено админом.

так а не

так а не доходит до реги-то.. :)
оно останавливается на окне где я ввожу "mainhost" сервер и далее он не идёт выдаёт ту ошибку disconnect'a..

А ты проверял

А ты проверял порты еджабер открыл?

а как это

а как это проверить?
я посмотрел по `netstat -l` там прослушиваются порты 5223, 8888, 5280, но не прослушивается 5222..

Ну вот поэтому

Ну вот поэтому у тебя и не реги поскольку порт 5222 закрыт
Попробуй
В PSI поставь галку на ssl и конект делай к порту 5223 и регся.

Опробовал -

Опробовал - опять нифига. Ошибка та же самая.

mainhost ~ # netstat -l | grep 52
tcp 0 0 *:5280 *:* LISTEN
tcp 0 0 *:5223 *:* LISTEN
unix 2 [ ACC ] STREAM LISTENING 12952 /tmp/ksocket-denis/klauncherLAIaec.slave-socket
mainhost ~ #

что-то и не все порты прослушиваются, которые настроены в конфиге.

Файл /etc/jabber/ssl.pem существует с правами 600, так должно быть?

>>Файл

>>Файл /etc/jabber/ssl.pem существует с правами 600, так должно быть?
нужно чтобы его мог открыть на чтение пользователь jabber, а ты в конфиге пути полные указал?

О! Заработало!

О! Заработало! :)
ssl.pem не был доступен для чтения пользователем jabber. На нём были права 600 от рута. Пути к ssl.pem у меня полные.

Он по-прежнему стартует с восклицательными знаками, видимо что-то всё-таки ему не нравится..
/var/log/jabber/ejabberd.log - пустой (хотя выводились всякие предупреждения о модулях irc, muc - я вообще закомментил загрузку этих модулей в конфиге джаббера, хоть что-то пусть заработает вначале).
/var/log/jabber/sasl.log - сообщения типа "=PROGRESS REPORT====" последнее из которых:
=PROGRESS REPORT==== 14-Nov-2007::04:11:57 ===
application: ejabberd
started_at: ejabberd@mainhost

Ещё кстати, независимо от использования/неиспользования SSL при регистрации/входе в акк, я получаю предупреждение:
The mainhost certificate failed the authenticity test.
Reason: Certificate is self-signed.

А как исправляется это предупреждение на стороне сервера?

(просто я получаю такое сообщение и на некоторых не своих джаббер серверах).

это из-за того

это из-за того что сертификат "самоподписаный" - тоесть сертификат заверен тем-же кто им пользуется, ты его сам себе выдал. убирается это галочкой "игнорировать предупреждения ssl" или можно заказать сертификат у правильного поставщика за немаленькие деньги. Можно конечно не самоподписанный сделать - но тогда он скажет что "сертификат заверен неизвесным центром сертификации"....

А кто нибудь

А кто нибудь пробовал прикрутить к АД ?

такие вещи есть

такие вещи есть на офф. сайте,
сейчас идёт интеграция с LDAP большей части сервисов gentoo.ru, а AD это и есть LDAP - только с насмерть заданной схемой. Пока неочень дела обстоят с shared roster + LDAP - чтобы оно было нужен отдельный модуль mod_shared_roster_ldap, но в SVN есго уже интегрировал насколько я помню. В версии 2.0 много чего будетнового и интересного, только неясно когда она будет - пару недель назад сказали что скоро... но в roadmap почто сделано 2/3.

Кто-нибудь

Кто-нибудь может выложить работающий конфиг сюда?
Ещё одна попытка настройки с нуля.. в общем - заколебало оно меня :)

нечего там

нечего там выклыдывать - там ошибиться негде

Ну уж я-то найду

Ну уж я-то найду где ошибиться :)

Минимальный, практически дефолтовый конфиг:

mainhost ~ # cat /etc/jabber/ejabberd.cfg | grep -v ^[\ ]*%
{acl, admin, {user, "admin"}}.
{acl, local, {user_regexp, ""}}.
{access, pubsub_createnode, [{allow, all}]}.
{access, configure, [{allow, admin}]}.
{access, register, [{allow, all}]}.
{welcome_message,
 {"Welcome!",
  "Welcome to Jabber Service.  "
  "For information about Jabber visit http://jabber.org"}}.
{access, announce, [{allow, admin}]}.
{access, c2s, [{deny, blocked},
               {allow, all}]}.
{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, local, [{allow, local}]}.
{auth_method, internal}.
{hosts, ["mainhost"]}.
{max_user_sessions, 10}.
{language, "en"}.
{listen,
 [
  {5222, ejabberd_c2s,     [{access, c2s}, {shaper, c2s_shaper}, {max_stanza_size, 65536}, starttls, {certfile, "/etc/jabber/ssl.pem"}]},
  {5223, ejabberd_c2s,     [{access, c2s}, {max_stanza_size, 65536}, tls, {certfile, "/etc/jabber/ssl.pem"}]},
  {5269, ejabberd_s2s_in,  [{shaper, s2s_shaper},
                            {max_stanza_size, 131072}
                           ]},
  {5280, ejabberd_http,    [http_poll, web_admin]}
 ]}.
{s2s_use_starttls, true}.
{s2s_certfile, "/etc/jabber/ssl.pem"}.
{outgoing_s2s_port, 5269}.
{modules,
 [
  {mod_register,   [{access, register}]},
  {mod_roster,     []},
  {mod_privacy,    []},
  {mod_adhoc,      []},
  {mod_configure,  []}, % Depends on mod_adhoc
  {mod_configure2, []},
  {mod_disco,      []},
  {mod_stats,      []},
  {mod_vcard,      []},
  {mod_offline,    []},
  {mod_announce,   [{access, announce}]}, % Depends on mod_adhoc
  {mod_echo,       [{host, "echo.mainhost"}]},
  {mod_private,    []},
  {mod_time,       []},
  {mod_last,       []},
  {mod_version,    []}
 ]}.

В итоге сервис пытается стартовать, но ejabberd так и запускается:

mainhost ~ # /etc/init.d/ejabberd start
 * Starting eJabberd ...                                                                                                   [ !! ]

mainhost ~ # /etc/init.d/ejabberd start
 * WARNING:  ejabberd has already been started.

mainhost ~ # ejabberdctl ejabberd@localhost status
RPC failed on the node ejabberd@localhost: nodedown

Порт 5222 не прослушивается:

mainhost ~ # netstat -l | grep 52
tcp        0      0 *:5280                  *:*                     LISTEN
tcp        0      0 *:5223                  *:*                     LISTEN
unix  2      [ ACC ]     STREAM     LISTENING     15173  /tmp/.ICE-unix/5255
unix  2      [ ACC ]     STREAM     LISTENING     15064  /tmp/.ICE-unix/dcop5242-1201785282

Хотя с хостом видимо всё нормально:

mainhost ~ # hostname -s
mainhost
mainhost ~ # ping mainhost
PING mainhost (192.168.1.2) 56(84) bytes of data.
64 bytes from mainhost (192.168.1.2): icmp_seq=1 ttl=64 time=0.035 ms
64 bytes from mainhost (192.168.1.2): icmp_seq=2 ttl=64 time=0.022 ms
64 bytes from mainhost (192.168.1.2): icmp_seq=3 ttl=64 time=0.034 ms
--- mainhost ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.022/0.030/0.035/0.007 ms
mainhost ~ #

(джаббер и попытки пдоключения к нему проводятся на одной машине).

И тем не менее, что-то здесь не работает..

в нынешним

в нынешним инитскриптом он говорит что ёж не стартует - но реально он работает, нужно по процессам смотреть
проверь права на сертификат - ёж его читать может?
посмотри логи,
попробуй в /etc/conf.d/ejabberd вместо ejabberd@'hostname -s' написать ejabberd@localhost
P.S.на этом форме теги в квадратных скобках а не в стрелках...

Права стоят

В /etc/init.d/ejabberd поменял на localhost (точнее и на mainhost пробовал) не сработало. Всё тоже самое.

По процессам действительно он работает:

# ps aux | grep jab
jabber    5436  0.0  0.0  12552   384 ?        S    19:44   0:00 /usr/lib64/erlang/erts-5.5.5/bin/epmd -daemon
jabber    5949  3.6  0.9  29508 10068 pts/1    Sl   19:52   0:00 /usr/lib64/erlang/erts-5.5.5/bin/
beam -- -root /usr/lib64/erlang -progname erl -- -home /var/run/jabber -pa /usr/lib64/erlang/lib/
ejabberd-1.1.4/ebin -sname ejabberd -s ejabberd -ejabberd config "/etc/jabber/ejabberd.cfg" 
log_path "/var/log/jabber/ejabberd.log" -kernel inetrc "/etc/jabber/inetrc" -sasl sasl_error_logger 
{file,"/var/log/jabber/sasl.log"} -mnesia dir "/var/spool/jabber" -noshell -noshell -noinput

(тут две строки, последнюю перенёс на несколько строк, чтобы форум не перекашивало)

Права стоят по-моему корректные:

# ls -la /etc/jabber/ | grep ssl
-rw-r--r--  1 root   root   1042 Фев  7 21:39 ssl.cnf
-rw-r--r--  1 root   root   2178 Ноя  9 04:28 ssl.pem

Лог пуст:

# cat /var/log/jabber/ejabberd.log
#

А ещё есть какие-то логи?

там их 2 - ejabberd.log

там их 2 - ejabberd.log и sasl.log
менять хост можно только предварительно снеся базу
если есть в процессах - нужно понять почему он неработает, тут или в конфиге чинтаксис нетои или ещё что-то мелкое. посмотри когда он запушен на вывод
ejabberdctl ejabberd@localhost status

В sasl.log

В sasl.log действительно выводится сообщение об ошибке.
Ха, действительно в синтаксисе дело.

=CRASH REPORT==== 9-Feb-2008::01:17:05 ===
  crasher:
    pid: <0.36.0>
    registered_name: []
    error_info: {bad_return,{{ejabberd_app,start,[normal,[]]},
                              {'EXIT',["132",
                                       58,
                                       32,
                                       ["syntax error before: ",["']'"]]]}}}
    initial_call: {application_master,
...

Переправил в конфиге вот это место:

  {5280, ejabberd_http,    [http_poll, web_admin]},
  {8888, ejabberd_service, [{access, all},{}]}
 ]}.

Вот это "]}" добавил в конец строки описания порта "8888" :) прям никита-онлайн :).

И действительно:

# ejabberdctl ejabberd@localhost status
Node ejabberd@localhost is started. Status: started
ejabberd is running

Но. А нельзя ли добить его и выяснить почему же всё-таки он запускается с каким-то предупреждением ("!!"), что оно значит, почему он выставляет его, как-нибудь это можно понять?

# /etc/init.d/ejabberd start
 * Starting eJabberd ...  [ !! ]

Потому как что-то возможно не сработало, узнать бы сразу, чтобы в дальнейшем проблем никаких не возникло.

это глюк в

это глюк в init-скрипте - если ты ещё раз сделаеш старт он скажет ok.
видимо нужно рихтовать скрипт

Не, пишет тоже

Не, пишет тоже самое:

localhost ~ # /etc/init.d/ejabberd start
 * Starting eJabberd ...  [ !! ]

localhost ~ # /etc/init.d/ejabberd start
 * WARNING:  ejabberd has already been started.

localhost ~ # /etc/init.d/ejabberd stop
 * Stopping eJabberd ...  [ ok ]

localhost ~ # /etc/init.d/ejabberd start
 * Starting eJabberd ...  [ !! ]

localhost ~ #

Ну вообще функционирует вроде как без проблем.. наверное всё хорошо.

да забей ты на

да забей ты на него :)

качать OpenFire: http://www.igniterealtime.org/projects/openfire/index.jsp

ты как-то

ты как-то невовремя вылез,к томуже Jive/Wild Fire/Open Fire несколько странно относиться к стандартам и сообществу, и гораздо менее открыт на деле. хотя тоже достаточно хороший серв - но он небудет никогда поддерживать то что специфично для erlang - загрузка/выгрузка модулей и изменение конфигурации на лету.

помочь хотел

помочь хотел гикам что ежа мучают 4й месяц уже :)

:)

а что его мучать? ошибиться там особо негде...
да и помощ несколько странная...

кстати, а у тебя

кстати, а у тебя ёж запускается тоже с восклицательными знаками или с "ok"?

с

с восклицательными, я вспомнил почему - если хочеш от них избавиться нужно стартовать erlang с ключом -name вместо -sname , но тогда к этой ноде можно подцепиться снаружи

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".