Установка jabber-сервера (jabberd 1.4.3) на Debian 3.1 "Sarge"

Вместо вступления хотелось бы рассказать, что такое jabber.

Что такое Jabber?
Jabber — это открытый протокол, использующий XML, для быстрого обмена сообщениями и информацией о присутствии между любыми двумя абонентами в Интернет. Первым применением технологии Jabber стало появление асинхронной и расширяемой платформы для обмена мгновенными сообщениями и сети обмена мгновенными сообщениями (от англ. IM — Instant Messaging), cходная по возможностям c коммерческими системами IM, такими, как AIM, ICQ, MSN и Yahoo. Однако, Jabber имеет ряд преимуществ по сравнению с коммерческими системами IM:

  • Открытость — протокол Jabber является свободным (от лицензирования), открытым, общедоступным и, кроме того, лёгок для понимания; существует множество реализаций серверов и клиентов, а также библиотек с открытым исходным кодом.

  • Расширяемость — с помощью пространств имён в XML можно расширить протокол Jabber для выполнения требуемых задач и для обеспечения поддержки взаимодействия между различными системами. Общие расширения разрабатываются под контролем Jabber Software Foundation.

  • Децентрализованность — кто угодно может запустить свой собственный сервер Jabber, это позволит организациям и частным лицам заниматься любыми экспериментами с IM.

  • Безопасность — любой сервер Jabber может быть изолирован от общедоступной сети Jabber, многие из вариантов реализации сервера используют SSL при обмене между клиентом и сервером, и немало клиентов поддерживают шифрование с помощью PGP/GPG внутри протокола.

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

  • Универсальным чат-клиентом для различных систем IM — несмотря на множество клиентов Jabber под различные платформы, они не предоставляют таких возможностей по взаимодействию с различными системами IM, как Trillian или GAIM; взаимодействие между Jabber и другими системами осуществляют шлюзы, расположенные на стороне сервера.

  • 100% решением проблем взаимодействия с различными системами — некоторые сервера Jabber предоставляют возможность взаимодействия с другими системами IM через шлюзы, которые транслируют протокол Jabber в протокол этих систем; однако, Jabber не был ориентирован на обеспечение взаимодействия с другими системами IM, потому что только от самих систем IM зависит осуществление взаимодействия (к чему они не стремятся и даже наоборот прим. переводчика).

  • Единозависимая система IM, разрабатываемая одной компанией — cообщество в Jabber не монолитно; напротив, существует большой набор общедоступных и закрытых серверов Jabber, проектов с открытым кодом, компаний по разработке ПО, использующих протокол Jabber.

информация взята с Jabber.ru

Настройка jabber-сервера

Если после всего выше сказанного вы решили все же поставить jabber-сервер, читаем дальше. На самом деле установка на Debian займет совсем немного времени. В первую очередь нам необходимо поставить сам jabber:

apt-get install jabber

Следующим этапом - прописать JABBER_HOSTNAME в /etc/jabber/jabber.cfg, имя пишется без кавычек и прочих символов, например JABBER_HOSTNAME=myjabberserver.mydomen, и рестартуем наш сервер -

/etc/init.d/jabber restart

После этого мы получим работоспособный сервер, но не думаю, что мы захотим на этом остановится, т.к. сервер позволяет взаимодействовать с ICQ, AIM/ICQ,yahoo,msn. также он поддерживает SSL, но ничего из вышеперечисленного на данном этапе у нас не настроено

Для того что бы включить поддержку SSL в нашем сервере сперва необходимо создать ключ -

openssl req -new -x509 -newkey rsa:1024 -days 365 -keyout /tmp/jabber.pem -out /etc/jabber/jabber.pem
Если все выполнено правильно вы увидите следующий диалог:
Generating a 1024 bit RSA private key
.................++++++
..........++++++
writing new private key to '/tmp/jabber.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [UA]:UA
State or Province Name (full name) [Some-State]:Kherson
Locality Name (eg, city) []:Novaya Kakhovka
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ISP Kahovka.Net
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:Vladislav Nikitin
Email Address []:

 

Данные, естественно, заносим свои.

openssl rsa -in /tmp/jabber.pem -out /tmp/jabber.pem
Enter pass phrase for /tmp/jabber.pem:
writing RSA key
cat /tmp/jabber.pem >> /etc/jabber/jabber.pem

 

 

После того как создали ключ вносим незначительные изменения в jabber.xml, следует заметить формат в котором написан конфигурационный файл - XML, не хочу здесь обсуждать все плюсы и минусы данного формата, поэтому просто примем это к сведению.

 

В разделе <pthcsock> ищем строку содержащую

<ssl port='5223'>127.0.0.1</ssl>,
в том случае, если она закомментирована, выносим ее за комментарии и исправляем адрес 127.0.0.1 на адрес вашего сервера, пусть к примеру это будет - это 192.168.1.1, т.е. строка принимает вид
<ssl port='5223'>192.168.1.1</ssl>.

Никто не запрещает вам изменить и порт для ssl-соединения, но в таком случае придется в настройках клиентов самим прописывать порт подключения.

После этого в разделе <io> находим и выносим за комментарии строки

<ssl> <key ip='192.168.1.1'>/path/to/cert_and_key.pem</key> <key ip='192.168.1.100'>/path/to/other/cert_and_key.pem</key> </ssl>

и исправляем ее на

<ssl> <key ip='192.168.1.1'>/etc/jabber/jabber.pem</key> </ssl>

После того как сервер будет перезапущен, он будет работать с поддержкой SSL-соединения.

Для поддержки конференций или так называемого многопользовательского чата (MultiUser Chat (MUC)), нам понадобится модуль jabber-muc:

apt-get install jabber-muc

 

Настройка его также предельно проста - сперва в /etc/default/jabber-muc исправляем ENABLED='0' на ENABLED='1', после чего в /etc/jabber/jabber.xml добавляем следующие строки - в раздел <service>

 

<service id="muclinker"> <host>conference.localhost</host> <accept> <ip>127.0.0.1</ip> <port>31518</port> <secret>secret</secret> </accept> </service>

в раздел <browse>

<item category="conference" type="public" jid="conference.localhost" name="Public Conferencing" version="0.5.2"> <ns>jabber:iq:register</ns> <ns>gc-1.0</ns> <ns>http://jabber.org/protocol/muc</ns> </item>

после чего ваш сервер сможет поддерживать конференции, однако следует учесть то, что в этом случае создание многопользовательского чата возможно только для пользователей вашего сервера, что бы позволить созавать конференции с другими jabber-серверами необходимо исправить localhost на имя вашего сервера.

Пора посмотреть как обстоит дело с поддержкой icq-шлюза - на данном этапе она у нас отсутсвует, однако

apt-get install jabber-jit

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

в /etc/default/jabber-jit исправляем ENABLED='0' на ENABLED='1'
в раздел <service> /etc/jabber/jabber.xml добавляем следующие строки -

<service id="icq"> <host>icq.localhost</host> <host>sms.icq.localhost</host> <accept> <ip>127.0.0.1</ip> <port>5555</port> <secret>someSecret</secret> <timeout>30</timeout> </accept> </service>

в раздел <browse> -

<service type="icq" jid="icq.localhost" name="ICQ Link"> <ns>jabber:iq:gateway</ns> <ns>jabber:iq:register</ns> <ns>jabber:iq:search</ns> </service>

Также в jabber-jit.xml необходимо указать кодировку
<!-- Charset -->
<charset>windows-1251</charset>

Следует заметить, что при изменениях в настройках jabber.xml имени машины (host), номеров портов(port), или пароля (secret) следует изменить их и в jabber-jit.xml, jabber-muc.xml.., Другими словами параметры в jabber.xml и jabber-jit.xml, jabber-muc.xml..должны полностью совпадать.

Закончен очередной этап, о настройках клиентов будет сказано чуть позже.

Поддержка AIM/ICQ,yahoo,msn осуществляется аналогично - устанавливаются пакеты jabber-aim,jabber-msn и jabber-yahoo, строки для добавления в jabber.xml находятся в файлах /usr/share/doc/jabber-aim(msn,yahoo)/README.Debian.

Единственное на чем бы хотелось заострить внимание - это jabber-jud. JUD - Jabber User Directory, или попросту адресная книга.

apt-get install jabber-jud

в /etc/default/jabber-jud исправляем ENABLED='0' на ENABLED='1', не правда ли знакомые действия? )

В разделе <service>

<service id="jud"> <host>jud.localhost</host> <accept> <ip>127.0.0.1</ip> <port>5559</port> <secret>someSecret</secret> <timeout>30</timeout> </accept> </service>

В разделе <browse>

<service type="jud" jid="jud.localhost" name="Jabber User Directory"> <ns>jabber:iq:search</ns> <ns>jabber:iq:register</ns> </service>

Ситуация с localhost аналогичная с модулем jabber-muc.

/etc/init.d/jabber restart

и мы должны получить работоспособный сервер, если что-то пошло не по плану смотрим /var/log/jabber/ или запустить в консоли jabberd -D

Следует отметить, что jabber использует три порта - это 5222, 5223 и 5269. Первые два используются для работы с клиентами 5222 - обычное соединение, 5223 с помощью SSL, 5269 служит для связи с другими серверами. Все это необходимо учитывать при настройке iptables

Пример настройки jabber-клиента

Теперь мы подошли к настройке jabber-клиента, ознакомиться со списком можно на странице www.jabber.org

Я выбрал jabbin - это jabber-клиент с поддержкой голосового общения, построен он на базе Psi, т.ч. у кого нет необходимости передачи голоса и кто хочет русский интерфейс я бы рекомендовал Psi, про его настройку и будет идти речь. К слову jabbin настраивается аналогично. Не маловажен и тот факт что существуют сборки под Microsoft Windows, Apple Mac OS X и GNU/Linux

Для создания новой учетной записи выбираем меню "Общее" и в нем "Настройка учетных записей (рис. 1) в появившемся окне выбираем "Добавить"

рис. 1

В новом окне (рис.2) пишем название нашего профиля и не забываем поставить отметку "Создать новую учетную запись на сервере"

рис.2

В следующем окне (рис.3) указываем jabber ID, в виде <имя_пользователя>@<DNS адрес_вашего_сервера>, два раза вводим пароль и при необходимости ставим отметку "Исользовать шифрование SSL (для связи с сервером)

рис.3

Теперь перейдем к подключению нашего icq-аккаунта. Переходим в меню "Общее" и выбираем пункт "Обнаружение сервисов" в появимшеся окне (рис.4), далее после того как открылось новое окно "Обнаружение сервисов" (рис.5) выбираем двойным щелчком сервис JIT. У вас должно появится окно изображенное на рис.6

рис.4

рис.5

рис.6

в котором указываем наш номер ICQ и пароль, если все сделано правильно увидим окно с нашими jabber и ICQ контактами

На этом можно считать настройку законченной.

2006г. Никитин Владислав