В модуле XMPP CommuniGate Pro реализован протокол XMPP, работающий в сетях IP.

В модуле XMPP CommuniGate Pro реализована функциональность клиент-сервер протокола XMPP. Модуль позволяет пользовательским приложениям (клиентам XMPP) подсоединяться к серверу CommuniGate Pro выполнять операции сигнализации реального времени.

В модуле XMPP CommuniGate Pro реализована функциональность сервер-сервер протокола XMPP. Модуль позволяет внешним системам XMPP (удалённым серверам) подсоединяться к серверу CommuniGate Pro, и серверу CommuniGate Pro подсоединяться к внешним серверам XMPP, так что они могут обмениваться запросами и ответами сигнализации реального времени.

В модуле реализованы базовый протокол XMPP и его расширения (XEP).

Расширяемые протокол для сообщений и статуса присутствия (XMPP)

В модуле XMPP CommuniGate Pro реализована функциональность протокола XMPP. Модуль использует один приёмник TCP и для клиент-сервер, и для сервер-сервер соединений, различая их не по номеру порта, на который подсоединяется внешняя система, а по передаваемым в этом соединении данным XML.
По умолчанию, приёмник TCP-модуля XMPP-приёмник использует порты 5222 и 5269 без шифрования и порт 5223 с шифрованием.

При установлении соединения клиент-сервер модуль XMPP аутентифицирует пользователя и создаёт для него пользовательскую сессию. После этого возможна передача запросов сигнализации реального времени от имени этого пользователя.

При создании соединения сервер-сервер, модуль XMPP получает запросы XMPP, преобразует их во внутренние объекты типа “сигнал” в реальном времени и передаёт эти объекты для обработки в компоненты реального времени для последующей обработки и доставки. Модуль также получает запросы от компоненты реального времени и передаёт их внешним системам XMPP.

Модуль XMPP поддерживает отдельные очереди для каждого домена назначения и источника, то есть для запросов в домен target.dom от доменов source1.dom и source2.dom используются разные очереди.
Модуль XMPP пытается создать новое соединение TCP/IP для каждой такой очереди. Если соединение установлено, модуль отправляет в нём запросы из очереди (в виде элементов XML протокола XMPP). После отправки всех запросов из очереди модуль сохраняет соединение открытым в ожидании прихода новых запросов в эту же очередь. Если таких запросов нет в течение указанного периода времени, модуль XMPP закрывает соединение.

Запросы XMPP message передаются в виде сигнальных объектов MESSAGE, запросы XMPP для обмена информацией о presence передаются в виде сигнальных объектов SUBSCRIBE и NOTIFY (с использованием набора событий presence), запросы XMPP iq передаются в виде сигнальных объектов INFO.
Дополнительные данные в запросах XMPP передаются в виде заголовков P-XMPP-Data.

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

Чтобы настроить параметры модуля XMPP, используйте веб-интерфейс администратора. Откройте в разделе “установки” страницу “Real-Time”, затем откройте страницу “XMPP”.
Нажмите на ссылку “приём”, чтобы открыть страницу с настройками XMPP сервера.

Используйте эту настройку, чтобы указать, какую информацию XMPP-модуль должен сохранять в журнале работы сервера. Обычно используется уровень “основное” (отчёты о передаче сообщений) или уровень “проблемы” (передача сообщений и не фатальные ошибки). В случае, если в работе XMPP модуля возникают проблемы, возможно, целесообразным будет увеличить детализацию до уровня “подробности” или “всё”: в этом случае в журнал работы сервера будет записываться более подробная информация о работе модуля. Когда проблема решена, верните настройку “уровень журнала” в её обычное значение, так как иначе системный журнал будет очень быстро увеличивать свой размер.

Записи, помещённые сервером XMPP в журнал работы сервера, имеют пометку XMPPI.
Если удалённая сторона указывает, что соединение используется для передачи сервер-сервер, то пометка в журнале работы сервера меняется на XMPPS.

Записи, помещённые в журнал работы сервера для исходящих XMPP соединений, имеют пометку XMPPO.

Когда вы указываете ненулевое значение в настройке каналы, то модуль XMPP создаёт TCP-приёмник и начинает принимать XMPP-соединения от клиентских приложений и удалённых серверов.
Эта настройка используется, чтобы ограничить число одновременных соединений, которое может принимать модуль XMPP. Если открыто предельное число входящих соединений, то модуль будет отказывать в приёме новых соединений; в таких случаях клиентские приложения и удалённые сервера должны попытаться соединиться позднее.

По умолчанию, приёмник XMPP-модуля принимает незашифрованные соединения на TCP-порт 5222 ("клиентский порт") и 5269 ("серверный порт"), а также безопасные TLS-соединения на TCP-порт 5223 ("безопасный клиентский порт").
Нажмите на ссылку “приёмник”, чтобы настроить порт приёмника XMPP.

Модуль XMPP поддерживает команду STARTTLS, которая позволяет клиентскому приложению и удалённому серверу устанавливать соединение в незащищённом режиме и затем переводить его в режим безопасного соединения.

Модуль XMPP поддерживает все имеющиеся методы аутентификации SASL. В дополнение к этому, модуль поддерживает старые методы аутентификации Jabber — «пароль» в открытом виде и «дайджест».
Чтобы выключить «дайджест» метод аутентификации Jabber, вам необходимо выключить для требуемого домена использование метода CRAM-MD5.

Настройки клиента

Чтобы настроить параметры модуля XMPP, используйте веб-интерфейс администратора. Откройте в разделе “установки” страницу “Real-Time”, затем откройте страницу “XMPP”.
Нажмите на ссылку “передача” и откройте страницу с настройками клиента XMPP.

Уровень журнала

Это та же самая настройка, что отображается на странице установки сервера XMPP.

 

Исходящий адрес

Эта опция выбирает сетевой адрес-источник, используемый для установления соединений XMPP. Вы можете позволить ОС сервера выбирать подходящий адрес или вы можете явно выбрать один из IP-адресов сервера, который будет использоваться как сетевой адрес по умолчанию.

 

Использовать сетевые адреса домена

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

 

Тайм-аут по неактивности

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

Безопасная (зашифрованная) отправка сообщений

Вы можете настроить модуль XMPP вашего сервера CommuniGate Pro на использование безопасных (защищенных) соединений при отправке мгновенных сообщений и информации о состоянии занятости на определённые удалённые сайты. Эта возможность особенно полезна, если ваша компания имеет несколько офисов и трафик между офисами отправляется через публичный Интернет.

Вы должны просто перечислить имена доменов, которые должны получать IM / Presence от вашего сервера через безопасные соединения:

Указанные имена могут содержать шаблон подстановки — символ звёздочка (*).

Когда модуль XMPP CommuniGate Pro соединяется с релеем одного из перечисленных доменов, он проверяет, что релей поддерживает команду starttls протокола. Затем модуль XMPP использует эту команду для установления с этим релеем безопасного соединения.

Модуль XMPP CommuniGate Pro проверяет действительность сертификата удалённого релея, используя заданный набор доверенных сертификатов.
Тема сертификата удалённого релея должна содержать поле cn (имя-идентификатор), соответствующее либо имени домена удалённого сайта, либо имени этого релея. Часто здесь может возникать проблема, так как домен company.dom может иметь SRV-запись xmpp.company.dom, но компьютер с адресом xmpp.company.dom имеет "главное" DNS-имя server.company.dom, и его сертификат выпущен для этого имени (поле subject сертификата содержит server.company.dom в поле cn).

Чтобы решить эту проблему, вы должны явно направить весь трафик в домен company.dom через релей server.company.domиспользуя следующую запись в маршрутизаторе:

NoRelay:company.dom = company.dom@server.company.dom._via

Обратите внимание: эта возможность обеспечивает безопасную передачу сообщений между вашим сервером и удалённым релеем. Чтобы обеспечить полную безопасность на всём пути передачи сообщения от одного конечного пользователя к другому, вы должны проверить, что:

  • пользователь отправляет сообщения на сервера либо через приватную сеть, либо через публичную сеть Интернет, но по TLS/SSL соединениям (через безопасный SMTP или безопасную веб-почту);

  • все серверы XMPP/SIP и релеи обмениваются сообщениями через частную сеть, или через TLS/SSL соединения в публичной сети Интернет;

  • пользователь отправляет сообщения на сервера либо через приватную сеть, либо через публичную сеть Интернет, но по TLS/SSL соединениям.

Если домен перечислен в списке посылать зашифрованным (SSL/TLS), а получающий сервер не поддерживает команду starttls или сертификат удалённого сервера не может быть проверен, или Тема сертификата не соответствует домену или имени релея домена, то для того, чтобы сообщения гарантировано не были переданы через потенциально небезопасный канал, все сообщения в этот домен отвергаются.

 

где возможно (низкая безопасность)

Выберите эту опцию если вы хотите, чтобы модуль XMPP пытался использовать SSL/TLS соединения со всеми удалёнными серверами XMPP, поддерживающими эту возможность. Если удалённый домен не указан в списке посылать зашифрованным (SSL/TLS), но удалённый сервер поддерживает команду starttls, то модуль XMPP будет пытаться устанавливать безопасное (SSL/TLS) соединение с этим сервером.
В этом случае модуль не проверяет действительность сертификата удалённого сервера и тему сертификата. Если команда starttls или процесс установления безопасного соединения заканчиваются неудачно, то сервер будет обмениваться трафиком в открытом виде и отправлять сообщения по незашифрованному каналу.
Некоторые серверы сообщают о поддержке starttls, но не могут принимать SSL/TLS соединения. С такими серверами невозможно связаться для отправки им сигналов. Для разрешения этой проблемы проинформируйте администратора неисправного сервера и введите домен сервера в список посылать зашифрованным (SSL/TLS) с восклицательным знаком (!) в первой позиции. Модуль XMPP не будет пытаться использовать SSL/TLS соединения с этим сервером/доменом.

Мониторинг активности XMPP

В разделе “наблюдение веб-интерфейса администратора” можно наблюдать за активностью модуля XMPP.

Нажмите на ссылку “Real-time” в разделе “наблюдение”, чтобы открыть страницу наблюдения за XMPP. Формат этой страницы точно такой же, как и страница “наблюдения за IMAP в веб-интерфейсе администратора”.

Регистрация

В модуле XMPP реализовано расширение XEP-0077 (регистрация и изменение пароля).

Опция свободная регистрация позволяет пользователям "регистрироваться" (самостоятельно создавать пользователей на сервере).

Если опция разрешено изменять пароль включена, то пользователи могут самостоятельно изменять свои пароли.

Групповые чаты

Расширение XEP-0045 (многопользовательские чаты) реализовано вне модуля XMPP в виде сценария на CG/PL chatroom как объект именованная задача.

Именованная задача запускается автоматически при подсоединении к ней первого пользователя. Именованная задача принимает все запросы по передаче мгновенных сообщений и статуса от разных клиентов (XMPP, XIMSS, другие задачи и т.д.) и распределяет сигнальные запросы участникам чата.

Внешние компоненты

В модуле XMPP CommuniGate Pro реализовано расширение XEP-0114 (Jabber Component Protocol). Он позволяет "доверенным внешним компонентам" подсоединяться к модулю XMPP CommuniGate Pro. Обычно в роли таких "доверенных внешних компонент" выступают внешние серверы — шлюзы в сети мгновенных сообщений, работающие по другим протоколам.

Через веб-интерфейс администратора откройте страницу “приём” установок модуля XMPP.

Пароль для компонентов

Используйте это поле для указания пароля ("общего секрета"). Когда «доверенные внешние компоненты» подсоединяются к модулю XMPP, они используют этот пароль для подключения.

 

«Доверенные внешние компоненты» указывают имя домена, который они обслуживают. Модуль XMPP принимает все сигнальные запросы для доменов, указанных «доверенными внешними компонентами», и передаёт их в эти «доверенные внешние компоненты» через установленное подключение XMPP.
Если, например, «доверенная внешняя компонента» подсоединилась к модулю XMPP для обслуживания домена icq.company.dom, то все сигнальные запросы на адреса в домене icq.company.dom будут приняты модулем XMPP и доставлены этой «доверенной внешней компоненте» (которая может выполнять роль шлюза в сеть ICQ).

Дополнительные элементы

Модуль XMPP позволяет указать дополнительные элементы XMPP (домены, идентификаторы Jabber, ресурсы), которые будут возвращаться в ответ на запрос на обнаружение элементов ('item discovery'), отправленный серверу или любому его домену. Эти элементы возвращаются в списке вместе с доступными многопользовательскими чатами и зарегистрированными внешними компонентами.

Вы можете использовать это свойство для добавления широко используемых внешних шлюзов и многопользовательских чатов в списки 'item discovery', получаемых клиентами XMPP и XIMSS.

Через веб-интерфейс администратора откройте страницу “приём” установок модуля XMPP.

Чтобы добавить дополнительный элемент, введите его имя в последнее (пустое) поле и нажмите на кнопку “модифицировать”.
Для удаления элемента, удалите его имя из поля и нажмите кнопку “модифицировать”.