Ключевые слова:jabber, icq, (найти похожие документы)
From: Маркелов Андрей <amarkelov@yandex.ru>
Newsgroups: email
Date: Mon, 24 Dec 2003 14:31:37 +0000 (UTC)
Subject: Jabber в качестве корпоративного стандарта обмена сообщениями
Оригинал: http://www.markelov.net/jabber1.html
Jabber в качестве корпоративного стандарта обмена сообщениями
Введение
Когда возникла необходимость в корпоративной системе быстрого обмена
сообщениями (IM), в первую очередь было обращено внимание в сторону
открытого стандарта Jabber, использующего "модный" сейчас XML.
Подробнее о Jabber-е можно почитать на сайте http://www.jabber.org, я же
опишу непосредственно процесс инсталляции.
В качестве платформы для инсталляции я взял уже имеющийся у меня и
исправно работающий на благо организации Red Hat Linux 7.3. В качестве
сервера - последний доступный на момент написания статьи релиз
Jaberd2. Адрес проекта в интернет - http://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
По адресу проекта http://www.openssl.org забираем последнюю версию пакета
(openssl-0.9.7c.tar.gz). Далее - разархивируем, либо при помощи mc,
либо командой tar -zxvf . Потом заходим в получившийся каталог и
отдаем последовательно команды:
./config --prefix=/usr shared
make
make test
make install
Последнюю команду необходимо выполнять в качестве суперпользователя.
При возникновении ошибок на каком либо этапе придется обратиться к
документации на сайте проекта OpenSSL.
Кроме того, если вы обновляете OpenSSL, учтите, что возможно, какие-то
работающие в настоящий момент у вас сервисы завязаны на предыдущую
версию, и они после обновления могут перестать работать корректно. За
подробностями - опять же на http://www.openssl.org
Ставим Berkeley DB
Качаем последнюю версию с сайта http://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=Miranda
SM : 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 - отвечает за взаимодействие с клиентами
На http://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
(http://www.miranda-im.org), я естественно продолжил им пользоваться и
после начала работы с Jabber. Вообще, список большого числа клиентов
(я насчитал 17 штук) можно найти по адресу
http://www.jabber.org/user/clientlist.php.
Из Jabber + CenterICQ 4.9.8 (http://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
Народ при компиляции jabberd-2.0s10 вот так вот ругается!
Checking for mysql_init in -lmysqlclient... no
configure: error: MySQL clientlibraris not found
./configure --enable-mysql --enable-ssl --enable-idn --with-extra-include-path=/usr/local/include #<--здесь указать дирректорию для заголовочных файлов# --with-extra-library-path=/usr/local/lib #<--здесь для библиотечных файлов клиента#
Я вообще компилил исходник и у меня заголовки лежали в /usr/local/mysql/local/mysql а библиотеки клиента /usr/local/mysql/lib/mysql
Качаем и разархивируем исходники Jabberd2, с сайта, указанного в
начале статьи. Заходим в созданный после разархивирования каталог, и
даем команду:
./configure --enable-authreg=db --enable-storage=
db -with-berkeley-db=/usr/local/BerkeleyDB.4.2
после этой команды выдает:
configure: error: Expat not found
Люди добрые, в линуксахя нуб, но все же прошу Вас объяснить понятным языком че надо делать?