Jabber в качестве корпоративного стандарта обмена сообщениями

В статье подробна описана установка и настройка серевера Jabberd2

[Маркелов Андрей (amarkelov@yandex.ru)]

Jabber в качестве корпоративного стандарта обмена сообщениями

Введение

Когда возникла необходимость в корпоративной системе быстрого обмена сообщениями (IM), в первую очередь было обращено внимание в сторону открытого стандарта Jabber, использующего "модный" сейчас XML. Подробнее о Jabber-е можно почитать на сайте www.jabber.org, я же опишу непосредственно процесс инсталляции.

В качестве платформы для инсталляции я взял уже имеющийся у меня и исправно работающий на благо организации Red Hat Linux 7.3. В качестве сервера - последний доступный на момент написания статьи релиз Jaberd2. Адрес проекта в интернет - jabberd.jabberstudio.org. Последним оказался "релиз кандидат 2" (файл jabberd-2.0rc2.tar.gz).

В документе "Quick Configuration Guide" разработчики указали минимальные требования для запуска сервера: Berkeley DB version 4.1.24 (или выше), в качестве БД для хранения информации о пользователях, и пакет OpenSSL, минимальной версии 0.9.6b. Однако, в ходе установки, выяснилось что Jaberd2 отказывается устанавливаться при работающем OpenSSL версии меньшей чем 0.9.6d. В состав моего Red Hat 7.3 входили пакеты версий ниже указанных, поэтому вначале пришлось выполнить требования разработчиков по апгрейту существующих пакетов. Если на Вашей машине уже установлены требуемые версии, то следующие два раздела можно пропустить. Кроме того, в качестве БД можно использовать не только Berkeley DB, но и MySQL или PostgreSQL. Berkeley DB выбрана мною, как требующая к себе наименьшее внимание.

Ставим OpenSSL

По адресу проекта www.openssl.org забираем последнюю версию пакета (openssl-0.9.7c.tar.gz). Далее - разархивируем, либо при помощи mc, либо командой tar -zxvf <имя файла>. Потом заходим в получившийся каталог и отдаем последовательно команды:

./config --prefix=/usr shared
make
make test
make install

Последнюю команду необходимо выполнять в качестве суперпользователя. При возникновении ошибок на каком либо этапе придется обратиться к документации на сайте проекта OpenSSL.

Кроме того, если вы обновляете OpenSSL, учтите, что возможно, какие-то работающие в настоящий момент у вас сервисы завязаны на предыдущую версию, и они после обновления могут перестать работать корректно. За подробностями - опять же на www.openssl.org.

Ставим Berkeley DB

Качаем последнюю версию с сайта www.sleepycat.com. Мне достался файл db-4.2.52.tar.gz. Аналогично предыдущему фалу разархивируем его, и заходим в подкаталог build_unix. Далее:

../dist/configure
make
make install

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

Ставим Jabberd2

Наконец-то добрались до установки непосредственно jabberd2. Я инсталлировал в соответствии с "Quick Configuration Guide", но кое-где приходилось в процессе установки вносить коррективы.

Создаем пользователя (и группу), из под которого будем запускать сервер:

su
groupadd jabber
useradd -g jabber jabber

Создаем директории для базы данных, логов и PID-файлов:

mkdir -p /usr/local/var/jabberd/db
mkdir -p /usr/local/var/jabberd/log
mkdir -p /usr/local/var/jabberd/pid

Меняем пользователя созданных каталогов:

chown -R jabber:jabber /usr/local/var/jabberd

Качаем и разархивируем исходники Jabberd2, с сайта, указанного в начале статьи. Заходим в созданный после разархивирования каталог, и даем команду:

./configure --enable-authreg=db --enable-storage=
db -with-berkeley-db=/usr/local/BerkeleyDB.4.2

Последний ключ пришлось поставить, потому что, jabberd2 пока "не обучен" искать каталоги BerkeleyDB версии 4.2 самостоятельно. Далее выполняем команды:

make
make install

В случае успешной отработки, мы получаем в /usr/local/bin бинарники, а в /usr/local/etc/jabberd конфигурационные файлы сервера Jabberd2.

Заходим пользователем jabber и пробуем запустить сервер скриптом jabberd:

su jabber
/usr/local/bin/jabberd

Если скрипт "вылетает" с ошибкой, попробуйте запустить его с ключем "-D". Кроме того в модули сервера пишут сообщения о ходе загрузки в /var/log/messages.

На этом этапе уже можно попробовать зарегистрироваться и зайти на сервер клиентом (о клиентах далее), и посмотреть лог. Выглядеть это должно примерно так:


...
C2S : Fri Dec 19 14:33:47 2003 [notice] [0.0.0.0, port=5222] listening for
connections
SM  : Fri Dec 19 14:33:47 2003 [notice] connection to router established
SM  : Fri Dec 19 14:33:47 2003 [notice] ready for sessions
C2S : Fri Dec 19 14:33:47 2003 [notice] ready for connections
C2S : Fri Dec 19 14:34:28 2003 [notice] [5] [192.168.0.13, port=3460] connect
C2S : Fri Dec 19 14:34:28 2003 [notice] [5] created user: user=test;
realm=host.ru
SM  : Fri Dec 19 14:34:28 2003 [notice] created user: jid=test@host.ru
C2S : Fri Dec 19 14:34:28 2003 [notice] [5] registration succeeded, requesting
user creation: jid=test@host.ru
C2S : Fri Dec 19 14:34:28 2003 [notice] [5] [192.168.0.13, port=3460] disconnect
C2S : Fri Dec 19 14:34:38 2003 [notice] [5] [192.168.0.13, port=3461] connect
C2S : Fri Dec 19 14:34:38 2003 [notice] [5] auth succeeded: username=test,
resource=MirandaSM  : Fri Dec 19 14:34:39 2003 [notice] session started:
jid=test@host.ru/Miranda
...

В качестве имени хоста при регистрации укажите свой IP адрес, а портом по умолчанию, на котором "слушает" сервер - 5222.

Настройка Jabberd2

Все конфигурационные файлы - это файлы в формате xml. Их можно редактировать любым текстовым редактором, например vi, или редактором, встроенным в mc. В папке /usr/local/etc/jabberd расположены по одному конфигурационному файлу на каждый модуль сервера:

router - осуществляет связи между всеми модулями.

s2s (Server to Server) - отвечает за связь с другими, внешними серверами jabber-а

resolver - разрешает имена для модуля s2s.

sm - отвечает за доставку сообщений и другие функции

c2s - отвечает за взаимодействие с клиентами

На www.jabberdoc.org/jabberd_guide вы можете ознакомится со схемой, на которой наглядно представлен процесс взаимодействия различных компонентов сервера.

Что необходимо в конфигах исправить.

Во-первых, нужно указать что мы работаем не с MySQL, как установлено по умолчанию, а с Berkeley DB. Правим sm.xml. В секции <storage> ищем строку <driver>mysql</driver>, и меняем mysql на db.

В файле с2s.xml ищем секцию <authreg>, строка <module>mysql</module>. Меняем на db.

Далее - проходим по конфигурационным файлам c2s и sm, и где необходимо, меняем прописанные по умолчанию localhost на имя вашего домена. В первом - после заголовка "Local network configuration", во втором - Session manager configuration. Выглядеть в файле это должно таким образом: <id>host.ru</id>.

Определим пользователя администратора (он может видеть всех он-лайн пользователей, посылать "сообщение дня" и т.д.). В sm.xml ищем admin@lsomedomain.com и меняем на vasya-pupkin@host.ru.

В принципе, для внутреннего, закрытого извне сервера вышеописанной настройки достаточно.

Если Вы хотите чтоб система была внутрикорпоративной, не оставляйте на межсетевом экране открытыми порты, по которым работает Jabberd. Кроме того, в c2s.xml Вы можете указать с каких IP-адресов можно принимать запросы, а от каких нельзя. По умолчанию разрешены все.

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

Клиенты Jabber

Пользуясь для обмена сообщениями по протоколу ICQ клиентом Miranda (www.miranda-im.org), я естественно продолжил им пользоваться и после начала работы с Jabber. Вообще, список большого числа клиентов (я насчитал 17 штук) можно найти по адресу www.jabber.org/user/clientlist.php.

Из Jabber + CenterICQ 4.9.8 (konst.org.ua/ru/centericq) получается связка, которую можно использовать в командных файлах. Данной командой можно из скрипта или bat-файла отослать сообщение нужному пользователю:

echo test | centericq.exe -s msg -p jabber -t andrew@host.ru

Подобным образом можно заменить команды net send и send, соответственно Windows и Novell.

А. Маркелов.
20.12.2003

Оригинал статьи расположен по адресу: http://www.markelov.net/jabber1.html.

[ опубликовано 29/12/2003 ]

Маркелов Андрей (amarkelov@yandex.ru) - Jabber в качестве корпоративного стандарта обмена сообщениями   Версия для печати