Настройка сервера Jabber

Vitaly Ostanin

<vyt@vzljot.ru> JID: vyt@vzljot.ru

История переиздания
Издание 0.119 Apr 2002
Начальный вариант, для пакета в Sisyphus

Содержание

Конфигурационные файлы
Настройки в файле jabber.cfg
Файл конфигурации jabber.xml
Основные теги файла jabber.xml
Подключение сервисов и транспортов

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

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

Сервер Jabber имеет модульную архитектуру, которая позволяет легко расширять функциональность сервера, подключать дополнительные службы, например, хранилище данных о пользователях. Jabber позволяет подключаться к другим системам обмена сообщениями, для чего нужно установить соответствующие транспорты. Например, для подключения к системе ICQ нужно запустить транспорт ICQv7 или AIM.

Конфигурационные файлы

Конфигурационные файлы сервера Jabber находятся в каталоге /etc/jabber. Основной файл конфигурации называется jabber.xml, в нем находятся детальные настройки сервера. Для первоначальной настройки сервера достаточно настроек, которые находятся в файле конфигурации jabber.cfg. Для гибкой настройки сервера нужно редактировать файл jabber.xml. В этом файле содержатся хорошие комментарии для тегов и данный текст представляет собой, в основном, их перевод. Подробную информацию о протоколе, серверах и клиентах Jabber можно найти на сайте документации.

Настройки в файле jabber.cfg

JABBER_HOSTNAME

Содержит имя хоста или домена, который будет обслуживать Jabber. Если сервер должен быть доступен глобально или планируется связь с другими серверами Jabber, имя хоста должно быть указано в форме FQDN (полностью, с указанием домена). Также это имя (и только оно, не идентификаторы сервисов) должно иметь соответствующую запись в DNS. Можно запустить несколько копий сервера Jabber для обслуживания нескольких хостов, данные каждого хоста хранятся в отдельном каталоге.

JABBER_SPOOL

Каталог, в котором хранятся данные обслуживаемых хостов.

START_ICQV7

Значение yes указывает запуск внешней части ICQv7-транспорта.

ICQV7_CMDLINE

Опции, передаваемые в командной строке запуска внешней части ICQv7-транспорта.

Файл конфигурации jabber.xml

Настройки сервера Jabber хранятся в формате XML, их можно редактировать в любом текстовом редакторе, но удобнее это делать с помощью редакторов языка XML, например, kxmleditor, emacs или vi с подсветкой синтаксиса.

Подсказка

Если после редактирования с помощью kxmleditor сервер Jabber не запускается с сообщением

The host tag contains illegal whitespace.
уберите в файле jabber.xml все разделители между тегом host и jabberd:cmdline, а также все разделители внутри тега spool.

Основные разделы jabber.xml:

service id='sessions'

Этот раздел описывает наиболее важный компонент сервера - Jabber Session Manager (JSM). Содержит следующую информацию:

  • Имя сервера

  • Основную информацию о сервере

  • Почтовые адреса администраторов сервера

  • Расположение сервера, предоставляющего информацию об обновлениях

  • Инструкции для регистрации новых пользователей

  • Приветственное сообщение для новых пользователей

  • Список агентов, у которых можно зарегистрироваться

  • Список модулей, загружаемых в JSM

xdb id='xdb'

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

service id='c2s'

Этот компонент управляет входящими клиентскими соединениями.

Параметры оптимизации:

authtime

Время для авторизации (в секундах). По умолчанию не ограничено.

karma

Система ограничения ввода/вывода, предусмотренная для предотвращения полного использования сервером полосы пропускания канала связи.

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

ip

Этот тег указывает адрес и порт для сервера. Указание адреса необязательно, тогда сервер будет слушать на адресах всех доступных интерфейсов. Можно указывать несколько тегов ip для разных адресов или портов.

ssl

Используется для указания адресов и портов, на которых сервер будет ждать SSL-соединения. Указание адреса обязательно, иначе соединения не произойдет. Можно указывать несколько тегов ssl для разных адресов или портов. Для каждого указанного адреса в разделе io должен быть указан файл с сертификатом SSL. Скрипт для создания такого файла находится в каталоге с документацией к серверу. Также ссылки на него можно найти на сайте документации Jabber.

log id='elogger'

В этом разделе описан компонент протоколирования ошибок, указывается формат записей в протоколе, файл с протоколом, копирование протокола в стандартный поток ошибок.

log id='rlogger'

В этом разделе описан компонент протоколирования статистики и общей информации о подключениях. Также указывается формат записей в протоколе и файл с протоколом.

service id='dnsrv'

Компонент для разрешения имен DNS.

service id='s2s'

Этот компонент отвечает за соединения между серверами. Тег dialback описывает систему проверки серверов Jabber - используется обратное соединение при попытке связи двух серверов. Тег legacy включает поддержку соединений со старыми версиями серверов Jabber. В этом разделе также есть теги ip и karma, описанные ранее для компонента клиентских соединений.

service id='s2s'

Эта часть конфигурации инициализирует систему ввода/вывода верхнего уровня, иначе известную как MIO - (Managed Input/Output - Управляемый ввод/вывод). Здесь можно указать глобальные значения для тега karma, приведены примеры таких значений для разной пропускной способности канала.

Тег rate описывает ограничения на количество соединений с одного адреса. Количество соединений больше указанного за указанный период времени превышает ограничение. Эти настройки применяются по умолчанию ко всем входящим соединениям для всех сервисов, пока не будут переопределены настройками отдельного сервиса.

Также в этом разделе можно указать тег ssl, в котором указать файлы с SSL-сертификатами для каждого адреса, на котором сервер принимает SSL-соединения.

Сервер позволяет управлять доступом по ip-адресам - для этого используются теги allow и deny.

pidfile

Указывает файл, в котором будет храниться pid процесса сервера. Если произошло падения сервера, этот файл нужно удалить вручную перед новым запуском, иначе сервер не запустится.

service id='custom_jid'

Здесь можно указать конфигурацию локальных сервисов или транспортов, доступ к которым обеспечивается агентами. Удобно хранить конфигурацию локальных сервисов в отдельных файлах и подключать ее указанием имени файла в теге jabberd:include. Таких сервисов, естественно, может быть несколько.

Основные теги файла jabber.xml

Основные теги файла jabber.xml

jabber

Корневой тег файла конфигурации Jabber.

vCard
<vCard>
    <FN>Jabber Server</FN>
    <DESC>A Jabber Server!</DESC>
    <URL>http://foo.bar</URL>
</vCard>
	    

Описание сервера в формате vCard.

register
<register notify='yes'>
    <instructions>Choose a username and password to register with this server.</instructions>
    <name/>
    <email/>
</register>
	    

Инструкции для регистрации новых пользователей и поля, обязательные для заполнения. Параметр notify определяет отсылку уведомления о регистрациях администратору. Если уведомления не нужны, параметр notify лучше убрать совсем.

welcome
<welcome>
    <subject>Welcome!</subject>
    <body>Welcome to the Jabber server at localhost -- we hope you enjoy this service!</body>
</welcome>
	    

Приветственное сообщение, которое отсылается каждому новому пользователю при регистрации.

admin
<admin>
    <read>support@localhost</read>
    <write>admin@localhost</write>
    <reply>
        <subject>Auto Reply</subject>
        <body>This is a special administrative address. Your message was received.</body>
    </reply>                                                                                               
</admin>
	    

Адреса администраторов, на которые приходят административные сообщения, например, уведомления о регистрации новых пользователей. Любое сообщение, присланное на адрес сервера - административное. Адреса администраторов обязательно должны быть локальными. Администратор может также посылать уведомления для всех пользователей сервера (или только для тех, кто в online). Пример такого сообщения описан в файлеjabber.xml.

vcard2jud

Указание этого тега включает автоматическое обновление информации в каталоге пользователей (JUD - Jabber Users Directory) при изменении пользователем своей информации в vcard. Обновляется информация только в первом каталоге, следующим после этого тега. Уберите его, если вы не хотите, чтобы в каталоги автоматически добавлялась информация о пользователях.

browse

В этом теге перечисляются агенты для доступа к сервисам или транспортам Jabber.

agent
<agent type='jud' name='Jabber User Directory' jid='users.jabber.org'>
    <ns>jabber:iq:search</ns>
    <ns>jabber:iq:register</ns>
</agent>
	    

Агент, обеспечивающий доступ к сервису или транспорту Jabber. Сервис или транспорт не обязательно должен быть локальным, как, например, в этом примере. Здесь сконфигурирован агент, предоставляющий доступ к главному каталогу пользователей Jabber, расположенному на сервере jabber.org.

jabber:iq:search

Предоставляет метод для поиска в агенте. Должен быть указан, если агент поддерживает поиск.

jabber:iq:register

Предоставляет метод для регистрации в агенте. Должен быть указан, если агент поддерживает регистрацию.

jabberd:include
<jabberd:include>/etc/jabber/include/jud.browse.xml</jabberd:include>
	    

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

Подключение сервисов и транспортов

Для работы локально подключенных сервисов и транспортов должны быть сконфигурированы соответствующие агенты в разделе jsm и сервисы в корневом разделе jabber. В дистрибутивах от ALTLinux конфигурация сервисов хранится в отдельных файлах, включаемых тегом jabberd:include. Например, для включения транспорта ICQv7 нужно установить пакет jabber-icqv7, отредактировать файлы в каталоге /etc/jabber/include, начинающиеся с icqv7-t. Также должен быть включен запуск внешней части ICQv7 транспорта в файле конфигурации jabber.cfg. Все идентификаторы сервисов и транспортов должны именоваться относительно хоста, который обслуживает сервер Jabber. Не нужно вписывать эти идентификаторы в зоны DNS, они нужны только для связи между компонентами сервера.