Как установить Jabber-сервер
By Suramya Tomar <http://www.suramya.com>
Перевод на русский: Захар Акулов <hozzzar at kirov dot lug dot ru>
1.0 Введение
Если вам не пришлось провести последние несколько лет вашей жизни
в пещере, то вы наверняка слышали о сервисах мгновенных сообщений
(Instant Messaging, IM - прим. пер.) и о том, как они изменили
мир общения в Интернете. Согласно http://www.webopedia.com, сервис
мгновенных сообщений - это служба, предупреждающая пользователей
о появлении их друзей или коллег в сети и позволяющая им общаться
в реальном времени через частные каналы. Два наиболее популярных
сервиса - это [23] AOL Instant Messenger (AIM) и [24] MSN Messenger.
К сожалению, большинство наиболее доступных серверов используют
проприетарные протоколы, допускающие общение только с пользователями
той же самой системы. Эти системы несовместимы между собой и не
доступны для разных клиентов.
Jabber - это открытая реализация IM-сервера, способного это изменить.
Он использует потоковые протоколы XML, которые свободны, открыты
и публичны. Эти протоколы были формализованы организацией Internet
Engineering Task Force (IETF) как испытанные для мгновенных сообщений
и утверждены технологии под названием XMPP. Первые технологии Jabber
были разработаны Джереми Миллером (Jeremie Miller) в 1998 году
и теперь используются по всему миру на тысячах серверов для того,
чтобы миллионы пользователей могли общаться друг с другом.
По сравнению с коммерческими IM-серверами Jabber-сервер имеет огромное
преимущество в том, что, поскольку он открыт, любой может запустить
Jabber-сервер для обслуживания, например, работы компании или компании
приятелей. В этой статье я описал шаги, которые я сделал, чтобы
установить Jabber-сервер и как мне удалось преодолеть те трудности,
с которыми я столкнулся. Надеюсь, это поможет вам установить свой
собственный сервер.
2.0 Предварительная настройка
Перед компиляцией сервера нам для повышения безопасности понадобится
внести некоторые изменения в систему, на которой мы установим сервер.
Первое, что нам придется сделать - это создать нового пользователя
для того, чтобы процесс сервера Jabberd не был запущен от рута.
Это настоятельно рекомендуется, поскольку процесс сервера, запущенный
от рута есть крайне плохая идея.
Наверное, вам интересно, что может произойти? Ну, представьте себе
ситуацию: в коде Jabber-сервера найдена ошибка, вызывающая
переполнение буфера. И до выпуска исправлений к коду некто,
ненавидящий вас за то, что вы заняли его место в пятизвездочном
кафетерии узнает, что ваш сервер уязвим и решает атаковать его.
А поскольку ваш сервер запущен от рута, то вы находитесь во власти
хакера, так как он имеет полный контроль над сервером и может делать
с ним все, что ему заблагорассудится. С другой стороны, если бы ваш
сервер работал от другого пользователя, хакеру пришлось бы приложить
массу усилий для того, чтобы получить права рута и он непременно
бы оставил в вашей системе какие-то следы, которые помогли бы вам
его поймать. Что, я вас убедил? Нет? Ну, тогда это - ваши проблемы...
(В оригинале буквально - <<это ваши похороны...>> - прим. пер.)
Для того, чтобы добавить пользователя для сервера, наберите от рута:
adduser jabber
Затем выберите пароль для новой учетной записи:
passwd jabber
После изменения пароля нам понадобится создать каталог, где процесс
jabberd будет хранить логи и pid'ы. Сделаем это, набрав следующие
команды:
Jabber - это проект Open Source и поэтому существуют различные
реализации Jabber-сервера. Список некоторых из них доступен на [25]
http://www.jabber.org/software/servers.shtml. Я решил использовать
реализацию сервера Jabberd 2.x, так как у меня уже был исходный
код сервера на моем компьютере. Кроме того, из-за недавнего взлома
серверы Jabber Studio не работали и, пока выяснялось, что произошло,
загрузки файлов была недоступны.
К счастью, когда вы это прочтете, их машины уже должны быть в порядке
и вы сможете получить последнюю версию Jabberd с их сайта.
2.2 Установка Jabber
Первое, что мы должны сделать после получения исходного кода,
это распаковать его:
tar -zxf jabberd-2.0s2.tar.gz
Затем сменим рабочий каталог:
cd jabberd-2.0s2
Большое количество опций Jabbber-сервера можно настроить
в предварительной конфигурации. Для того, чтобы посмотреть
на доступные опции, наберите:
./configure --help
Я решил использовать установки по умолчанию, и я просто набрал:
./configure
Как только скрипт закончит работу без ошибок, мы можем продолжить
и скомпилировать программу с помощью make. Затем войдем в систему
как рут (Существует прекрасная программа sudo, пожалуйста, используйте
ее! - прим. пер.) и установим ее с помощью
make install
По умолчанию jabberd использует для хранения своих данных MySQL,
поэтому нам придется установить новую базу данных, к которой jabberd
имел бы доступ. В исходниках jabberd в подкаталоге "tools" есть
скрипт, который весьма облегчит вам эту работу. Просто наберите:
mysql -u root -p < tools/db-setup.mysql
Наберите пароль администратора MySQL, когда вам это будет предложено.
(Еще раз напоминаю про sudo! - прим. пер.) Этот скрипт создаст новую
базу данных в том виде, который необходим для работы jabber-сервера.
По завершении работы скрипта нам будет нужно создать пользователя
jabberd2 в MySQL для того, чтобы jabberd мог работать с базой данных.
Это можно сделать следующей командой:
mysql -u root -p
Теперь, когда вам будет предложено, наберите пароль суперпользователя,
(sudo! sudo! sudo! - прим. пер.) и вы увидите приглашение командной
строки MySQL. Наберите следующую команду:
GRANT select,insert,delete,update ON jabberd2.* to jabberd2
at localhost IDENTIFIED by 'examplepassword';
заменив "examplepassword" на пароль по вашему выбору. Запустив
эту команду, наберите exit для выхода из программы. Установка сервера
закончена. Теперь нам нужно настроить сервер для использования.
2.3 Настройка jabberd-сервера
Чтобы настроить сервер, нам придется перейти в католог jabberd:
cd /usr/local/etc/jabberd/
Затем мы должны подредактировать (от рута) файл sm.xml:
* Откройте sm.xml в вашем любимом текстовом редакторе
* Измените значение ID сети с localhost на jabber.yoursite.com,
предварительно убедившись в том, что в настройках сети корректно
указаны параметры подключения к DNS-серверу.
* Найдите раздел 'User Options' и раскомментируйте
тег <auto-create/>. Это позволит незарегистрированным
пользователям самостоятельно регистрироваться в системе.
* Если вы хотите, чтобы уже существующий список пользователей
был доступен всем новым пользователям, раскомментируйте в конце
файла:
<roster>/usr/local/etc/jabberd/templates/roster.xml</roster>.
Скоро мы подойдем к содержанию файла roster.xml.
Закончив редактирование, сохраните sm.xml и покиньте редактор. Теперь
нам нужно поправить файл c2s.xml, поэтому:
* Откройте c2s.xml в вашем любимом текстовом редакторе
* Найдите раздел 'Local network configuration' и измените <id>
с localhost на jabber.yoursite.com
* Сохраните изменения и выйдите из редактора
Настройка сервера завершена. Мы получили базовый jabber-сервер,
позволяющий пользователям регистрироваться в системе и разговаривать
между собой. Однако если мы хотим иметь возможность создавать
чат-румы, нам придется установить дополнительную программу
mu-conference. Это не займет у нас много времени.
2.4 Создание списка пользователей по умолчанию
jabberd дает нам возможность создавать <<шаблонные>> списки
пользователей, так что каждый новый пользователь получает список
по умолчанию. Это может быть очень полезно в случаях, когда
администратор хочет знать наверняка то, что каждый пользователь
получит список всех <<нужных>> людей и ему не придется тратить массу
времени для редактирования этого списка вручную.
Файл шаблона хранится в подкаталоге "templates" и называется
roster.xml. Файл имеет следующий вид:
Чтобы добавить необходимых пользователей, нужно раскомментировать
тег <item name> и добавить новую строку для каждого пользователя.
Например, если вы хотите добавить в список по умолчанию меня и если
бы мой JID (Jabber ID) был [26] suramya@jabber.suramya.com, то вход
для пользователя с моим именем выглядел бы так:
Поле групп указывает клиенту, в какой группе предполагается хранить
каждую учетную запись. В этом случае учетная запись пользователя
Suramya хранится в группе "Support". Все записи должны быть заключены
между тегами <query> </query>, так что полный файл с единственным
пользователем выглядел бы так:
Перед установкой mu-сервера необходимо установить Jabber Component
Runtime(JCR), который можно получить здесь:
http://jabber.terrapin.com/JCR/jcr-0.1.2.tar.gz. Выполните
следующие шаги:
Надеюсь, я избавил вас от кучи неприятных сюрпризов, рассказав,
как легко и быстро установить jabberd-сервер. Если этот документ помог
вам или у вас есть какие-либо комментарии или вопросы, пожалуйста,
не стесняйтесь обращаться ко мне. Однако я должен вас предупредить,
что я слегка ленив, поэтому могу ответить на ваше письмо не сразу.
4.0 Document Information/History
Created by: Suramya Tomar
Last updated: 14th February 2005