Jabber-сервер корпоративной сети. Развертывание Openfire+Miranda.

Вновь приветствую, начнем 🙂

Openfire установлен, Miranda IM выбрана в роли jabber-клиента, пришло время развернуть эту свзяку.

Одни из лучших ресурсов по миранде — www.miranda.im, www.miranda-im.org, www.miranda-planet.com

Великолепная сборка Miranda IM zeleboba’s pack Пользуюсь давно и вам рекомендую. Кстати, с согласия разработчика именно на ее основе нами создана модификация, оптимизированная для работы с jabber-протоколом внутри локальных и распределенных сетей предприятия и Active Directory в частности.

Обширная тема на форуме ru-board, посвящення использованию Openfire.

Приступим. У нас имеется уже установленный сервер Openfire, поэтому сразу перейдем к настройке сквозной NTLM-аутентификации клиентов. (при написании частично использован этот материал, но в нем есть опечатки, аккуратнее).

0) Пример исходных данных:

  • FQDN jabber-сервера — jabber.domain.lc
  • FQDN домена — domain.lc
  • NetBIOS имя домена — DOMAIN

1) В каталоге Openfire найдите и откройте для редактирования  файл \jre\lib\security\java.security. После строк

security.provider.8=sun.security.smartcardio.SunPCSC
security.provider.9=sun.security.mscapi.SunMSCAPI

добавьте строку
security.provider.10=net.za.darkskies.security.sasl.SSPIProvider

2) Далее потребуется NTLM-патч, который необходимо скачать и распаковать. Скопируйте из него файлы в соответствующие подкаталоги сервера:

bin\SaslSspi.dll
lib\sasl-sspi.jar
plugins\saslmechanisms.jar

и перезапустите сервер.

3)  В веб-консоли сервера создайте/измените параметры (имя — значение)

sasl.approved.realms - пусто
sasl.mechs - ANONYMOUS,PLAIN,NTLM
sasl.realm - NetBIOS имя домена
xmpp.fqdn - FQDN имя джаббер-сервера

перезапустите сервер

4)При желании запустите
openfire-service /install

из каталога Openfire\bin для того, чтобы сервер встал как служба Windows.

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

Осталось протестировать новоиспеченный сервис, но для этого понадобится клиент. Вот обещанная сборка с длинным названием Miranda IM zeleboba’s pack Corporate mod. Ее подробное описание я выложу в отдельном посте совсем-совсем скоро, а пока только то, что необходимо для запуска:

  • Настройки -> Сеть ->  Jabber. Указать хост вручную — FQDN сервера, порт 5223. Сервер — FQDN домена
  • Ваш логин определится автоматически и если вы зашли под пользователем который присутствует на jabber-сервере (а он берет данные из Active Directory) то благодаря NTLM-аутентификации пароль вводить не надо, вход будет произведен автоматически. Кстати, это актуально не только внутри домена. Имейте это ввиду при подключении удаленных клиентов.

Jabber-сервер корпоративной сети. Развертывание Openfire+Miranda.: 82 комментария

  1. это же можно указать в настройках чтобы пользователю ничего не нужно было настраивать Настройки -> Сеть -> Jabber. Указать хост вручную – FQDN сервера, порт 5223. Сервер – FQDN домена

  2. Да, можно заранее указать настройки миранды и собрать инсталлятор. (у нас именно так и сделано). Можно просто копировать установленную версию и создавать ярлыки.

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

  3. это то понятно впрос вот ещё в чем
    в AD указан телефон пользователя
    запускаю программу смотрю подсказку на контакте ФИО есть должность есть
    телефон тоже есть
    меняю телефон в AD перегружаю сервер jabber
    а телефон то старый остался
    мысль какая есть это исправить

  4. Сборку использую хоткофе полностью пересобранную под себя (скин нравится )

  5. Столкнулись с аналогичной проблемой. Решения пока не нашли.

  6. порядок действий
    поменять телефон
    удалить контакт из списка
    перезагрузить сервер
    телефон меняется

  7. Для домашнего использования — пожалуйста. Для корпоративного сектора не пойдет.
    1) Удалить контакт у всех. Как? Надо как-то централизованно править дат-файл. Хотя, думаю, что проще и правильней автоматизировать импорт истории в новый чистый датник. Да и новые настройки, плагины и свистелки так проще добавлять.
    2) перезагрузить сервер — вообще что-то из ряда вон… 🙂 Вообще, джаббер-сервер можно и не перегружать, через какое-то время он увидит изменения в LDAP.

  8. да так оно и есть
    контакты можно не удалять а подсовывать дат файл без контактов
    но тогда при этом теряется история
    а openfire перегружаю чтобы быстрее изменения вносились

  9. Следует найти вариант автоматического импорта истории в чистый дат файл. Пока смотрю в сторону AutoIT, но задача не самая приоритетная. Думаю, что это будет в рамках выпуска новой версии с фиксом выявленных недочетов и новыми фенечками типа курса валют в контакт-листе.

  10. А как отправить сообщение всему ростеру, или группе из вашей сборки?

  11. Алексей,
    Пишете сообщение (сначала пишете!), нажимаете на малозаметный треугольник справа от кнопки отправки и выбираете нужный вам вариант.

  12. Не, это я и так знал, спасиб конечно.. 🙂
    Я про НОРМАЛЬНУЮ рассылку сообщений всему ростеру, когда не надо выбирать вручную (ставить галки) кучке пользователей (групп), когда одной (галкой) можно выбрать всех, как это реализовано в спарке.
    Когда много пользователей в сети (больше сотни), это становится весьма проблематично.
    Собственно из-за отсутствия этого, весьма важного пункта в свойствах миранды, и отказался от нее в свое время, перешел на спарк (хотя он тоже не всем устраивает) 🙁

  13. У нас не сильно меньше сотни пользователей, выделение по группам не мешает. Хотя, если заниматься частыми массовыми рассылками, то да, наверное есть доля неудобств.

  14. Задумайтесь уже сейчас, что будет когда у вас станет групп 50 и 1000 пользователей. 😉

  15. PS Кстати миранда у меня достаточно часто висла при групповой рассылке. 🙁 Правда сборка у меня другая, но версия плагина та-же.

  16. ЗЗЫ Да, кстати, а такими феничками спарка как видеозвонок, «разбудить» пользователя, «Сообщить когда будет на месте» миранда еще не обзавелась?

  17. По поводу групповой рассылке всем — можно воспользоваться теми же плагинами «действия» и переменные», там широчайшие возможности.

    Миранда «виснет», потому как ждет оповещения о доставке, при общении с одном пользователем это незаметно. Отключается там же, где выбор способа отправки — «Отправлять небезопасно (без таймаутов)».

    Плагина ред5 к миранде я не встречал, по моему нет. «Разбудить» есть («встраяхнуть» — там же в способе рассылки), но не активна, по крайней мере у нас. «Сообщить когда будет» («включить жду тебя») существует давно.

    Кстати, пробовали ли наши сборки? Особенно интересуют отзывы про админскую версию.

  18. Админскую не пробовал, тока простую…
    До этого юзал ту версию что на форуме ru-board лежит. Не заметил честно говоря большой разницы 🙂
    Для себя решил что пока не будет в миранде нормальной рассылки, рассматривать ее как альтернативу спарку даже не стоит…
    Есть еще у миранды такой минус… слишком много настроек 🙂
    Кроме того что сам бывает через полгода уже не вспомнишь, где нужная галочка, так еще пользователь своими шаловливыми ручками норовить подкинуть админам свинью..
    Как-то так. 🙂
    Плагины посмотрю, спасибо, не знал о них раньше…

  19. Клиентская версия сама по себе не так интересна, от нее требуется лишь стабильность, удобство и некоторые настройки для взаимодействия с админ-версией. Ру-бордовскую версию гляну…

    Много настроек — да. Вот именно поэтому в клиентской версии многие пункты убраны из главного меню (но оставлены в других местах), чтобы пользователь не напортачил по незнанию.

    По поводу нормальной рассылки — она в чем-то функциональнее спарка, она не тормозит, если не ожидать доставки. Нюанс в виде невозможности отправки всем — это, по моему мнению все же не повод говорить о том, что в миранде кривая рассылка 🙂

  20. А не подскажите, как в вашу сборку списать нужный мне адрес сервера, чтобы распространить в AD.

  21. Как вы хотите распространить сборку в АД? С помощью простого копирования или инсталлятором? Миранда ничего не пишет в реестр, поэтому можно просто копировать. В противном случае ее необходимо собрать в установщик, мы пользуемся NSIS.

    В любом случае, вам необходимо заполнить поля как указано в этой статье выше:
    Настройки -> Сеть -> Jabber. Указать хост вручную – FQDN сервера, порт 5223. Сервер – FQDN домена
    И эту версию распространить среди пользователей. Конечно, пользователям следует разворачивать «пользовательскую» сборку.

  22. Да хотя бы копированием. Просто после ввода адреса сервера и порта, в поле имяч пользователя вносится почему-то моя учетка, и если запускать с другого компа, то идет подключение не с пользовательской, а с моей.

  23. Все верно. Чтобы проходила ntlm-аутентификация поля имя и пароль должны быть пустыми. Тогда они будут «заполнены» автоматически. Если там уже что-то введено, то вход будет выполнен под введенными данными.

  24. Скачал вашу сборку всё работает, но при выходе вываливает ошибку.
    NewStatusNotify_RightClickWindow:miranda32.exe
    Исключение unknown software exception (0xc0000008) в приложении по адресу 0x7c9666c6.
    Да к тому же она запоминает пользователя под которым я ввожу настройки сервера. Пробовал и стирать и не подключаясь ввести настройки ничего не помогает на форумах советую править *.dat файл.
    В связи с этим пожелание не могли бы вы описать как правильно сделать сборку Miranda IM под свой jabber сервер?

  25. 1) ОС какая? вываливается на всех машинах? Права на запить в ФС есть?

    2) сделать сборку под себя можно так:
    — Возьмите нашу чистую сборку, внесите в нее параметры вашего домена, настройки поиска, транспортов и пр. (под себя)
    — с помощью «редактора базы» откройте раздел «Настройки — zel_jab (в самом низу)» очистите поля
    Companay CompanyCity CompanyDepartment CompanyPosition e-mail0 FirstName FullName jid LoginName Nick (!Удалить вообще) Phone0 Phone1 Resource (может чего не учел, т.к. у нас не используется, см. ниже).
    — Там же удалите все контакты (кроме погоды и курсов валют, если нужны)
    — соберите инсталлятор (любой по вкусу), можно SFX-архив или вообще просто копировать папку с «чистой» мирандой, но тогда не будет ярлыков.

    Общий принцип прост — настраивайте миранду под себя и помощью редактора базы вычищаете все, что относится к конкретному пользователю (можно воспользоваться поиском в «редакторе базы»)

  26. Попробовал вашу сборку. В целом понравилось, но есть пару принципиальных моментов.
    1. Если клиент входит в несколько групп, то в ростере клиент отображается только в одной группе. Можно ли сделать так, чтобы клиент отображался во всех группах, в которые он входит? А т.к. помимо разделения на отделы у нас есть отдельная группа в которую входят все пользователи, то отображается только эта группа, а все остальные группы в ростере не отображаются!!!
    2. Можно ли полностью запретить доступ к настройкам для пользователей,

  27. 1. Остальные группы расшарены для отображения в ростерах пользователей?
    2. Можно убрать пункт «настройки» отовсюду, т.е. из всех возможных пунктов меню. По нашему опыту, в принципе проблем с тем, что пункт настройки оставлен в трее нет.

  28. 1. Остальные группы расшарены для отображения в ростерах пользователей?
    Да расшарены. Сейчас используем pandion, в котором группы отображаются как надо. Попробовал оставить пользователя в одной группе и после перезапуска сервера в ростере появилась группа в которую он входит.
    2. Можно убрать пункт «настройки» отовсюду, т.е. из всех возможных пунктов меню. По нашему опыту, в принципе проблем с тем, что пункт настройки оставлен в трее нет.
    Да так и сделал, убрал пункт настройки, а доступ к настройкам повесил на горячие клавиши
    3. Еще один вопрос, наверное уже избитый, но не работает многоадресная отправка сообщений. Пытаюсь отправить сообщение группе пользователей вкладка как бы подвисает, сообщения не доходят. При попытке закрыть вкладку появляется окно с сообщением «В очереди есть неотправленные сообщения, ждущие подтверждения. Если вы закроете окно, Miranda попытается отправить их, но не сможет предупредить о возможных ошибках. Вы действительно хотите закрыть окно(а)?»
    Пробовал ставить tabsrmm 3.0.0.40, сообщение тоже не доходит, но ошибок никаких не выдает

  29. 1. Включите отображение пустых групп (Настройки — Список контактов — Общее). Посмотрим что будет.
    А все пользователи в одной группе = отключить отображение групп 🙂

    3. У нас отправка работает. Глюк с «подвисанием» присутствует, но сообщения уходят и доходят, в том числе оффлайновым клиентам.
    А если поставить галку «Отправлять небезопасно (без таймаутов?)» — Это прямо в контекстном меню отправки.

  30. 1. Сделал так, как вы сказали, дополнительно отключил расшаривание общей группы. Все группы отобразились, но общая естественно оказалась пустой. После включил расшаривание общей группы, соответственно все группы стали пустыми кроме общей. Общая группа создавалась с целью более удобной массовой рассылки.
    3. Пробовал отправку без таймаутов, тоже ничего не доходит. Если отправлять небольшому количеству клиентов, сообщения доходят. У нас в общей группе порядка 350 чел., в онлайне постоянно около 200, может в этом проблема?
    Если со странным отображением групп еще можно как-то мириться, то с проблемой отправки многоадресных сообщений никак, мы каждый день этой фишкой пользуемся. Есть еще какие идеи?

  31. 1. Попробуйте посмотреть настройки миранды на предмет «разрешить дублирование контактов», сам слету не нашел.
    3. Воспользуйтесь Openfire-плагином broadcast. Возможно вас устроит его функицонал.

  32. 1. Разрешить дублирование контактов тоже не нашел, вроде бы все обыскал
    2. Плагин бродкаст стоит, но я так понимаю многоадресная рассылка работает только с консоли, что не устраивает.

  33. Извиняюсь. Разобрался с плагином бродкаст. Но он похоже не работает с группами AD названными русскими буквами

  34. Проверил на группе ит@broadcast.domain.lc — работает отлично. У нас, кстати, пользователей меньше чем у вас, активных порядка 80-100.

  35. Да, работает. Не работает с группами в названии которых присутствует пробел. Например группа состоящая из двух слов.
    Так и не смог убрать пункт «Настройки», в одном месте по-прежнему можно выйти в настройки. Щелкаешь по учетной записи Jabber и открывается меню где можно выйти в настройки. У нас нельзя оставлять доступ к настройкам, иначе по-любому залезут чего-нибудь наделают, а потом будут звонить мне и вещать, что нужно срочно починить чат, а то работа стоит)))

  36. Как вариант — назвать группу через подчеркивание, благо группы AD и джаббера могут не совпадать. Согласен, несколько криво…

    Откуда не получается убрать пункт «настройки»? Из главного меню — Учетные записи? Ну тогда убрать сам пункт «учетные записи» 🙂

  37. Во-первых спасибо Михаил за ваши ответы и надеюсь, что с вашей помощью у меня получится настроить эту сборку под наши требования.
    Нет из главного меню все убрал. В принципе в настройки можно попасть даже с двух мест. Первое это щелкнуть на значок лампочки вверху окна напротив статуса, оттуда открывается меню Jabber, а через него попадаем в настройки. Второе если ткнуть в самый низ окна (неважно правой или левой кнопкой мыши) там где тоже значок лампочки и статус, открывается все тоже меню Jabber. Может коряво объяснил, но думаю понятно где это.
    Идеально было бы вообще поставить пароль на пункт настройки, может плагин какой есть?

  38. Добавил в группу .Сервис еще несколько контактов для организации групповой рассылки. С помощью редактора базы почистил все, что относится к конкретному пользователю, а так же удалил все контакты кроме входящих в группу .Сервис. Затем провел испытания на «добровольцах», в итоге почему-то все контакты, находящиеся в группе .Сервис кроме погоды, имеют статус офлайн, при этом групповые сообщения нормально работают.
    Еще одна мелкая неприятность в поле вверху окна где должен быть ник, написано

  39. Пожалуйста 🙂

    Не знаю возможно ли запаролить настройки, узнаю — скажу.

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

    Кстати, еще рекомендую посмотреть плагин Non-IM Contact. Он поволяет добавлять в контакт лист различные ссылки и ставить на них свои значки. Например у нас там URLы на корпоративные сайты и ссылки на внутренний wiki с инструкциями.

    Еще одна мелкая неприятность в поле вверху окна где должен быть ник, написано
    Что написано?

  40. Можно включить постоянное отображение оффлайновых контактов для группы .Сервис
    Нашел только: «Показать отключенных пользователей». Вы это имеете ввиду?
    Полезная функция. А хотелось бы, чтобы все-таки контакты в группе Сервис корректно определяли свой статус, ну или хотя бы заставить их иметь статус онлайн. Если добавить руками контакт с тем же именем статус определяется корректно, но это, как понимаете не выход у каждого пользователя добавлять контакты вручную.

    Что написано?
    С этим разобрался 🙂 Написано было , забыл удалить Nick в редакторе базы

  41. Спасибо большое за объяснение ntlm-авторизации — всё заработало сразу же в миранде. Пока писал про проблему с полем Nick в редакторе, удосужился прочитать коменты к статье и решил её, еще раз спасибо!

  42. Спасибо автору за статьи. Давно уже пробую сделать SSO через NTLM патч, но все попытки заканчиваются неудачей — когда имя пользователя и пароль делаю пустыми, при попытке соединения с сервером получаю всё время сообщение от Миранды: «Введите пароль для имя_пользователя@fqdn_имя_домена» (заменил реальные на эти). Может кто-то знает, что с этим делать? То есть имя пользователя цепляется, а вот пароль — нет.

  43. Опенфаер прицепился к АД? пользователей и группы видит?
    Для начала проверьте работу DNS. Все ресолвится корректно (вперед и обратно)? Выложите настройки опенфаера (пункт 3 в статье выше). Помните, что регистр может иметь значение. Непрозрачный вход работает? Сделайте скрин настроек миранды (окно с реквизитами подключения к серверу). Или сверьтесь с нашими:


    Пользователь: < пусто>
    Пароль: < пусто>
    Приоритет: 0 (вообще в данном случае - не важно)
    Ресурс: что угодно или галка "Имя хоста..."
    Сервер: FQDN имя домена
    Порт: 5223, галка SSL стоит
    Указать вручную хост для подключения: FQDN имя сервера

  44. Да, Openfire видит группы AD и аутентифицирует доменных пользователей при входе в админку. И прямая, и обратная зоны работают железно. Настройки:
    sasl.approved.realms — пусто
    sasl.mechs — ANONYMOUS,PLAIN,NTLM
    sasl.realm — NSC
    xmpp.domain — messenger.nsc.local
    xmpp.fqdn — messenger.nsc.local
    Непрозрачный вход работает, надо при этом ставить галку на «запомнить пароль» при вводе пароля в настройках.
    Скриншот настроек Миранды. Имя пользователя вставляется автоматически само при закрытии настроек.

  45. В прошлом сообщении messenger — это алиас настоящего имени сервера, но т.к. DNS работает нормально, думаю, что алиас не должен быть проблемой.
    Также заметил, что в админке Openfire в разделе Server Information перед именем сервера в Server Name стоит желтый значок с восклицательным знаком. Если на него навестись, всплывает сообщение: «found RSA certificate that is not valid for the server domain». Может ли это быть причиной отказа в авторизации?

  46. Перевыпустил сертификаты — проблема не ушла, значит сертификаты ни при чём.

  47. xmpp.domain должен быть FQDN домена (nsc.local), а не сервера jabber
    На скриншоте в настройках миранды соответственно Домен/сервер тоже FQDN имя домена (nsc.local).
    Сверьтесь еще раз с этой http://it.rpkkirov.ru/openfire-chast-1-dzhabber-server-korporativno/ , возможны ошибки на этапе установки.

    С сертификатами проблем не было, единственное, что на странице Server Settings -> Server Certificates висит предупреждение о самоподписанном сертификате, но это не проблема, т.к. jabber смотрит только вовнутрь

  48. Заново поднял под чистой виртуальной машиной всё то же самое по инструкциям — результат аналогичный 🙁
    А такое окно у вас выдаётся? У меня при каждой попытке подключения к серверу.

  49. Нет, окно не выдаётся.
    У вас домен все же nsc.local или messenger.nsc.local? Я описал выше как должно быть. FQDN имя AD-домена какое?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *