Библиотека сайта rus-linux.net
Основной файл настройки сервера —
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
.
В дистрибутивах от 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 — это компонента управления клиентскими соединениями и может использоваться вместо компоненты pthsock_client.
Эта компонента позволяет обслуживать большое количество (больше 10 тысяч) входящих соединений одновременно, по сравнению с pthsock_client (~1024). Идея состоит в том, что можно запустить несколько компонент для обслуживания соединений, привязав их к разным портам. После начальной обработки соединений (например, авторизации) компонента пересылает соединения компоненте управления сессиями.
В данный момент реализация внешней части обработки соединений вынесена в отдельную программу и должна запускаться отдельно.
Содержание
- connection_limits - частота подключений с одного ip-адреса
- connects - допустимое количество подключений за указанное время
- host - хост для подключения к компоненте управления сессиями
- id - идентификатор сервера
- io - настройки ввода/вывода
- jadc2s - корневой тег конфигурации jadc2s
- local - локальные сетевые настройки
- max_bps - максимально допустимое количество бит в секунду для одного соединения
- max_fds - максимальное число файловых дескрипторов
- port - порт для подключения к компоненте управления сессиями
- retries - количество попыток при подключении к компоненте управления сессиями
- seconds - период времени, в который допустимо указанное количество подключений
- secret - секретная фраза для авторизации у компоненты управления сессиями
- sm - настройка подключений к компоненте управления сессиями
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
У сервера есть несколько предопределённых ключей:
-c
file
Файл конфигурации.
-D
Включить отладочный вывод (отменяет запуск в фоновом режиме).
-H
dir
Домашний каталог сервера.
-B
Запуск в фоновом режиме.
-Z
zone
Уровень отладки.
-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 не нужны.