Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Настройка

jabber.xml

Основной файл настройки сервера — jabber.xml. Формат этого файла — XML, поэтому его можно редактировать в любом текстовом редакторе. Удобно использовать для этого редакторы XML, например, kxmleditor, emacs или vi с подсветкой синтаксиса.

Часть настроек в этом файле можно переопределять опциями командной строки при запуске сервера. Для этого значение тега, которое нужно переопределить, берётся ещё и в дополнительный тег jabberd:cmdline. В атрибуте flag нужно указать букву, соответствующую опции командной строки.

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

Структура файла конфигурации доступна в Приложение A. Структура jabber.xml.

Замечание

В файле jabber.xml нет объявления XML, в котором можно было бы указать кодировку, поэтому сервер считает, что весь текст в кодировке UTF-8.

Замечание

В указании тегов jabberd:cmdline и jabberd:include нет указания пространства имён jabberd. Это нарушает спецификации XML, что нужно учитывать при создании файла конфигурации с помощью программ для работы с XML.

Подсказка

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

The host tag contains illegal whitespace.

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

jabber.cfg

В дистрибутивах от ALT Linux Team файлы конфигурации находятся в каталоге /etc/jabber. Основные настройки вынесены в файл /etc/jabber/jabber.cfg.

Переменные jabber.cfg:

JABBER_HOSTNAME

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

Замечание

Можно указать серверу несколько хостов для обслуживания, прописав их в теги <host> раздела <service id='sessions'>.

JABBER_SPOOL

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

JABBER_FLAGS

Дополнительные параметры для передачи их серверу при запуске.

START_JABC2S

Определяет запуск внешней компоненты jabc2s для обслуживания клиентских соединений. Используется для масштабирования сервера.

START_ICQV7

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

ICQV7_CMDLINE

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

Теги конфигурации сервера

Содержание

DESC (пространство имён jabber:config:jsm) - описание сервера в формате vCard
FN (пространство имён jabber:config:jsm) - полное имя сервера в формате vCard
URL (пространство имён jabber:config:jsm) - ссылка в записи формата vCard
actions (пространство имён jabber:config:jsm) - список разрешённых действий при фильтрации на стороне сервера
admin (пространство имён jabber:config:jsm) - список адресов Jabber с правами администратора
agent (пространство имён jabber:config:jsm) - предоставляет доступ к сервису или транспорту
allow (пространство имён jabber:config:jsm) - список разрешённых условий и действий для фильтрации на стороне сервера
allow - список разрешённых для подключения адресов
authtime (пространство имён jabber:config:pth-csock) - время для завершения авторизации клиентом
body (пространство имён jabber:config:jsm) - разрешает проверку тела сообщения при фильтрации на стороне сервера
browse (пространство имён jabber:config:jsm) - список сервисов и транспортов, доступных на данном сервере
jabberd:cmdline - переопределяет значения тегов из командной строки
conditions (пространство имён jabber:config:jsm) - список разрешённых условий при фильтрации на стороне сервера
continue (пространство имён jabber:config:jsm) - добавляет в список разрешённых действий продолжение обработки правил
dec (пространство имён jabber:config:dialback) - значение, на которое уменьшается karma
dec (пространство имён jabber:config:pth-csock) - значение, на которое уменьшается karma
dec - значение, на которое уменьшается karma
default (пространство имён jabber:config:jsm) - правило для отправки сообщений при фильтрации на стороне сервера
deny - список запрещённых для подключения адресов
dialback (пространство имён jabber:config:dialback) - проверка имени сервера с помощью обратного звонка
dialback - путь к модулю dialback
dnsrv (пространство имён jabber:config:dnsrv) - настройка разрешения имён DNS
dnsrv - путь к модулю dnsrv
email (пространство имён jabber:config:jsm) - делает обязательным указание почтового адреса при регистрации
error (пространство имён jabber:config:jsm) - добавляет в список разрешённых действий отсылку сообщения об ошибке
file - файл для вывода сообщений о подключениях или ошибках
filter (пространство имён jabber:config:jsm) - настройка допустимых условий и действий при фильтрации на стороне сервера
format - формат вывода сообщений о подключениях или ошибках
forward (пространство имён jabber:config:jsm) - добавляет в список разрешённых действий перенаправление сообщения
from (пространство имён jabber:config:jsm) - разрешает проверку адреса отправителя при фильтрации на стороне сервера
group (пространство имён jabber:config:jsm) - разрешает проверку группы отправителя при фильтрации на стороне сервера
heartbeat - время между шагами восстановления кармы
host - имя сервера
inc (пространство имён jabber:config:dialback) - значение, на которое увеличивается карма за каждый hearbeat
inc (пространство имён jabber:config:pth-csock) - значение, на которое увеличивается карма за каждый hearbeat
inc - значение, на которое увеличивается карма за каждый hearbeat
init (пространство имён jabber:config:dialback) - начальное значение кармы
init (пространство имён jabber:config:pth-csock) - начальное значение кармы
init - начальное значение кармы
instructions (пространство имён jabber:config:jsm) - инструкции для регистрации
io - настройка управления вводом/выводом (MIO)
ip (пространство имён jabber:config:dialback) - адрес и порт для ожидания серверных соединений
ip (пространство имён jabber:config:pth-csock) - адрес и порт для ожидания клиентских соединений
ip - адрес для разрешения или запрещения подключений к серверу
jabber - корневой тег конфигурации сервера
jabberd:cmdline - переопределяет значения тегов из командной строки
jsm (пространство имён jabber:config:jsm) - настройка управления сессиями (JSM)
jsm - путь к модулю jsm
karma (пространство имён jabber:config:dialback) - настройка ограничения ввода/вывода
karma (пространство имён jabber:config:pth-csock) - настройка ограничения ввода/вывода
karma - настройка ограничения ввода/вывода
key - сертификат для шифрования SSL
legacy (пространство имён jabber:config:dialback) - включает режим совместимости для связи со старыми версиями сервера
load - модули для загрузки
log - настройка протоколирования событий
logtype - тип сообщений для протоколирования
mask - маска подсети для разрешения или запрещения подключений к серверу
max (пространство имён jabber:config:dialback) - максимально возможное значение кармы
max (пространство имён jabber:config:pth-csock) - максимально возможное значение кармы
max - максимально возможное значение кармы
max_size (пространство имён jabber:config:jsm) - максимальное количество правил при фильтрации на стороне сервера
mod_admin - путь к модулю mod_admin
mod_agents - путь к модулю mod_agents
mod_announce - путь к модулю mod_announce
mod_auth_0k - путь к модулю mod_auth_0k
mod_auth_digest - путь к модулю mod_auth_digest
mod_auth_plain - путь к модулю mod_auth_plain
mod_browse - путь к модулю mod_browse
mod_echo - путь к модулю mod_echo
mod_filter - путь к модулю mod_filter
mod_last - путь к модулю mod_last
mod_log - путь к модулю mod_log
mod_offline - путь к модулю mod_offline
mod_presence - путь к модулю mod_presence
mod_register - путь к модулю mod_register
mod_roster - путь к модулю mod_roster
mod_time - путь к модулю mod_time
mod_vcard - путь к модулю mod_vcard
mod_version - путь к модулю mod_version
mod_xml - путь к модулю mod_xml
name (пространство имён jabber:config:jsm) - делает обязательным указание имени пользователя при регистрации
ns (пространство имён jabber:config:jsm) - разрешает проверку пространства имён XML при фильтрации на стороне сервера
offline (пространство имён jabber:config:jsm) - добавляет в список разрешённых действий сохранение сообщения для последующей доставки
penalty (пространство имён jabber:config:dialback) - отрицательное значение кармы после её исчерпания
penalty (пространство имён jabber:config:pth-csock) - отрицательное значение кармы после её исчерпания
penalty - отрицательное значение кармы после её исчерпания
pidfile - файл с идентификатором процесса сервера
pthcsock (пространство имён jabber:config:pth-csock) - настройка компоненты pthsock для управления клиентскими соединениями
pthsock_client - путь к модулю pthsock_client
rate - допустимая частота подключений
read (пространство имён jabber:config:jsm) - административный адрес с правами на чтение
register (пространство имён jabber:config:jsm) - настройка регистрации новых пользователей
reply (пространство имён jabber:config:jsm) - добавляет в список разрешённых действий отсылку ответного сообщения
resend (пространство имён jabber:config:dnsrv) - указание обработчика сервиса в dnsrv
resource (пространство имён jabber:config:jsm) - разрешает проверку ресурса отправителя при фильтрации на стороне сервера
restore (пространство имён jabber:config:dialback) - восстановленное значение кармы после истечения блокировки
restore (пространство имён jabber:config:pth-csock) - восстановленное значение кармы после истечения блокировки
restore - восстановленное значение кармы после истечения блокировки
roster (пространство имён jabber:config:jsm) - разрешает проверку вхождения отправителя в ростер получателя при фильтрации на стороне сервера
service - настройка сервиса или транспорта
settype (пространство имён jabber:config:jsm) - добавляет в список разрешённых действий смену типа сообщения
show (пространство имён jabber:config:jsm) - разрешает проверку текста видимости получателя при фильтрации на стороне сервера
spool (пространство имён jabber:config:xdb_file) - каталог для хранения данных на файловой системе
ssl - сертификаты для шифрования SSL
stderr - направление вывода на стандартный вывод ошибок
subject (пространство имён jabber:config:jsm) - разрешает проверку темы сообщения при фильтрации на стороне сервера
type (пространство имён jabber:config:jsm) - разрешает проверку типа сообщения при фильтрации на стороне сервера
unavailable (пространство имён jabber:config:jsm) - разрешает проверку подключения получателя при фильтрации на стороне сервера
update (пространство имён jabber:config:jsm) - проверка новых версий сервера
vCard (пространство имён jabber:config:jsm) - описание сервера в формате vCard
vcard2jud (пространство имён jabber:config:jsm) - автоматическое обновление JUD при обновлении vCard
welcome (пространство имён jabber:config:jsm) - приветственное сообщение для новых пользователей
write (пространство имён jabber:config:jsm) - административный адрес с полными правами
xdb - настройка компоненты хранения данных
xdb_file (пространство имён jabber:config:xdb_file) - настройка хранения данных сервера на файловой системе
xdb_file - путь к модулю xdb_file

Внутренние компоненты

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

service id="sessions"

Важнейшая компонента сервера — Jabber Session Manager (JSM), управление сессиями. Содержит информацию об имени сервера, его описание, адреса администраторов, правила фильтрации, загружаемые модули и список агентов для доступных сервисов.

xdb id="xdb"

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

service id="c2s"

Компонента управления клиентскими соединениями, также известен как pthsock_client. Содержит настройки адресов и портов для ожидания простых или зашифрованных соединений, допустимое время авторизации, настройки кармы, альтернативное имя сервера.

service id="jadc2s"

Настройки внутренней части альтернативной компоненты для управления клиентскими соединениями, вместо pthsock_client. Используется для масштабирования количества одновременно подключенных клиентов. См. “Компонента jadc2s”.

log id="elogger"

Настройка компоненты протоколирования ошибок, формата записей в протоколе. Записи могут сохраняться в файле и/или перенаправляться на стандартный вывод ошибок.

log id="rlogger"

Настройка компоненты протоколирования статистики и общей информации о подключениях.

service id="dnsrv"

Компонента для разрешения имён DNS, см. dnsrv (пространство имён jabber:config:dnsrv).

service id="s2s"

Компонента управления серверными соединениями. Содержит настройки “обратного звонка” (dialback) между серверами при установке соединения, адреса и порты для ожидания соединений, настройки кармы.

io

Компонента управления вводом/выводом, иначе известна как MIO (Managed Input/Output). Здесь можно указать глобальные значения кармы, приведены примеры её значений для разной пропускной способности канала.

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

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

pidfile

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

После разделов внутренних компонент указываются настройки дополнительных транспортов и сервисов

Компонента jadc2s

jadc2s — это компонента управления клиентскими соединениями и может использоваться вместо компоненты pthsock_client.

Эта компонента позволяет обслуживать большое количество (больше 10 тысяч) входящих соединений одновременно, по сравнению с pthsock_client (~1024). Идея состоит в том, что можно запустить несколько компонент для обслуживания соединений, привязав их к разным портам. После начальной обработки соединений (например, авторизации) компонента пересылает соединения компоненте управления сессиями.

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

Теги конфигурации jadc2s

Содержание

connection_limits - частота подключений с одного ip-адреса
connects - допустимое количество подключений за указанное время
host - хост для подключения к компоненте управления сессиями
id - идентификатор сервера
io - настройки ввода/вывода
jadc2s - корневой тег конфигурации jadc2s
local - локальные сетевые настройки
max_bps - максимально допустимое количество бит в секунду для одного соединения
max_fds - максимальное число файловых дескрипторов
port - порт для подключения к компоненте управления сессиями
retries - количество попыток при подключении к компоненте управления сессиями
seconds - период времени, в который допустимо указанное количество подключений
secret - секретная фраза для авторизации у компоненты управления сессиями
sm - настройка подключений к компоненте управления сессиями

Ограничение ввода/вывода (karma)

Karma — численное значение, выражающее “кредит” соединению на объём пересылаемых байт в ближайший короткий период времени.

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

Замечание

Для компоненты jadc2s ограничение пропускной способности настраивается проще, в теге max_bps.

Алгоритм расчёта кармы управляется шестью параметрами, вложенными в элементы karma конфигурации различных соединений в конфигурации сервера:

      <karma>
        <heartbeat>2</heartbeat>
        <init>10</init>
        <max>10</max>
        <inc>1</inc>
        <dec>1</dec>
        <penalty>-6</penalty>
        <restore>10</restore>
      </karma>
          

heartbeat

Время в секундах между шагами восстановления кармы. По умолчанию установлено в 2 секунды, так лучше его и оставить.

Замечание

Этот тег можно указывать только в общих настройках karma, в разделе настройки системы ввода/вывода.

init

Начальное значение karma.

max

Максимальное положительное значение karma, которого может достичь сокет.

inc

Значение, на которое увеличивается карма за каждый интервал времени, указанный в heartbeat.

dec

Значение, на которое уменьшается карма каждый раз при превышении “кредита” (превышение может происходить чаще, чем heartbeat).

penalty

Отрицательная величина, в которую устанавливается карма после падения её до 0 или ниже. Характеризует время блокировки соединения.

restore

Величина, в которую устанавливается карма по истечении периода блокировки, когда карма восстанавливается до 0. Обычно устанавливается в max.

resetmeter

Сбрасывать ли счётчик считанных байт по истечении блокировки, восстанавливая тем самым пропускную способность в полном объёме. Параметр имеет значение 0(нет) по умолчанию, что предпочтительно для ограничения продолжительных попыток превысить пропускную способность.

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

Средняя пропускная способность, достижимая без понижения кармы — до ( max * 200 / heartbeat ) Байт/c

Максимальное количество байт, которое может быть передано за heartbeat — примерно (r + 1) * max * 100 / 2, r = floor(max / dec)

Время блокировки после “зашкаливания” — abs(penalty) * heartbeat

Параметры командной строки

У сервера есть несколько предопределённых ключей:

-cfile

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

-D

Включить отладочный вывод (отменяет запуск в фоновом режиме).

-Hdir

Домашний каталог сервера.

-B

Запуск в фоновом режиме.

-Zzone

Уровень отладки.

-v или -V

Показать версию сервера и выйти.

Также есть возможность настроить ключи командной строки для любого тега, чтобы переопределять его значение при запуске. Для этого используется тег jabberd:cmdline .

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

Система Jabber позволяет подключать дополнительные сервисы и транспорты, расширяющие функциональность сервера. Для доступа пользователей к сервисам в теге browse должен быть указаны соответствующие агенты. Агенты могут предоставлять доступ не только к локальным сервисам, но и к сервисам на других серверах, например, к общему каталогу (JUD) пользователей на сервере jabber.org. Для работы локальных сервисов должны быть настроены соответствующие разделы в файле конфигурации.

В дистрибутивах от ALT Linux Team конфигурация сервисов хранится в отдельных файлах, включаемых тегом jabberd:include.

Например, для подключения транспорта ICQv7-t нужно установить пакет jabber-icqv7-t и отредактировать файлы в каталоге /etc/jabber/include, начинающиеся с icqv7-t. Также должен быть включен запуск внешней части ICQv7-t транспорта в файле jabber.cfg.

Замечание

Если к локальному сервису будут подключаться пользователи других Jabber-серверов, JID этого сервиса должен иметь соответствующую запись в DNS. Если к сервису подключаются только локальные пользователи, записи в DNS не нужны.