Пользователь
0,3
рейтинг
27 января 2009 в 12:40

Разработка → Избавляемся от дополнительных настроек jabber-клиента в Google apps

Судя по количеству плюсов к посту про использование google apps в качестве сервера jabber эта тема волнует хабрапользователей. Поэтому я решил внести свои пять копеек.

В документации гугла сказано, что при настройке кастомного клиента нужно вводить в свойствах соединения сервер talk.google.com и порт. Это очень не удобно, так как надо всё время помнить эти настройки, да и затрудняет настройку клиента вашими родственниками/знакомыми, которых пугает только одно слово порт :) Почему-то в документации к google apps этого не сказано, но прописать адрес и порт, которые должны быть использовать при подключении, можно в srv записях dns, да именно там, где вы указаывали адреса для федеративных сетей.

Добавляем запись типа:

_xmpp-client._tcp.yourdomain.com. IN SRV 5 0 5222 talk.google.com.


И вауля, клиент коннектится безо всяких танцев и дополнительных настроек.

Стоит добавить, что:
  1. Клиент должнен поддерживать чтение srv записей.
    Протестированы клиенты:
    Работают:

    Не работают:
    • Bombus — чтение записей происходит, но из-за несоответствия сертификата соединение обрывается.
    • Kopete Bug 133097 (TiGR)

  2. Клиент должен выдать ошибку о несовпадении сертификатов серверов, проверьте, что это сертификат действительно принадлежит Google, Inc. Если да, то спокойно кликайте ok
  3. На обновление записей может потребоваться существенное время, так что не стоит ждать, что всё заработает через минуту. Проверить, видит ли ваш локальный dns сервер новые записи можно так:
    # nslookup
    > set type=srv
    > _xmpp-client._tcp.ivlis.com
    Server:         195.208.192.19
    Address:        195.208.192.19#53
    
    Non-authoritative answer:
    _xmpp-client._tcp.ivlis.com     service = 5 0 5222 talk.google.com.
    
    Authoritative answers can be found from:
    
    
  4. Для большей надёжности можно прописать несколько серверов гугла для коннекта. Насколько это повышает надёжность, мне не известно. Взял из того же nslookup самого gmail.com
    • _xmpp-client._tcp.gmail.com service = 20 0 5222 talk1.l.google.com.
    • _xmpp-client._tcp.gmail.com service = 20 0 5222 talk2.l.google.com.
    • _xmpp-client._tcp.gmail.com service = 20 0 5222 talk3.l.google.com.
    • _xmpp-client._tcp.gmail.com service = 20 0 5222 talk4.l.google.com.
    • _xmpp-client._tcp.gmail.com service = 5 0 5222 talk.l.google.com.



  5. Спасибо за внимание, надеюсь кому-то этот пост будет полезен!
ivlis @ivlis
карма
12,1
рейтинг 0,3
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (67)

  • 0
    простите, скажите несведующему, куда именно все это прописывать?
    • 0
      Зайдите в панель управления dns записями своего домена, там найдите SRV Records, вот именно там и надо прописать эти строчки. Что и как тыкать сильно зависит от регистратора/провайдера DNS.

      Если никакого упоминания о SRV нет — Вам не повезло, ваш DNS провайдер не поддерживает SRV Records, тогда ничего не получится и вы не сможете общатся с участниками других jabber сетей, посему настоятельно рекомендую его сменить или пожаловаться в суппорт.
      • 0
        а, теперь понятно… спасибо)
        • +1
          Всегда пожалуйста :)
      • +1
        Не все так брутально.

        У меня домен в Ru-center, и там управление DNS стоит отдельные 600р в год, что, имхо, много для правки только одной записи SRV.
        Проблема решилась сменой DNS серверов ру-центра на DNS сервера моего друга в штатах.

        Также можно воспользоваться бесплатными DNS серверами с возможностью правки SRV записей.
        • +1
          И правильно сделали! руцнтр вообще офигел с его ценами.
        • 0
          А у R01.ru это бесплатная услуга.
      • 0
        >> Если никакого упоминания о SRV нет…

        Вот вы «обрадовали»… :(
        А я то обыскался, думал это мне не по глазам, оказывается такое возможно на платном хостинге?? (РБК)
        • +1
          Да, вполне возможно! Напишите в суппорт, может быть они смогут прописать в индивидуальном порядке.
  • +1
    Спасибо, прикрутил! :)
  • 0
    Т.е. можно добавить записи с новым портом, не изменяя старых?
    Спасибо.
    • 0
      Да, именно так надо сделать, серверные записи удалять не надо. То есть записей должно быть 3: _xmpp-server, _xmpp-client и _jabber
      • 0
        Оказывается, editdns'овский автоматический настройщик прописывает их сам. Надо потестить. :)
      • 0
        Да, все работает. Спасибо еще раз за этот топик.
  • –3
    Как это не сказанно?
    www.google.com/support/a/bin/answer.py?hl=en&answer=60227
    • +1
      А теперь прочитаем повнимательнее :)

      _xmpp-server._tcp.gmail.com. IN SRV 5 0 5269 xmpp-server.l.google.com.

      Это для jabber серверов, а не для клиентов. Заметьте порт даже другой. А у меня:

      _xmpp-client._tcp.yourdomain.com. IN SRV 5 0 5222 talk.google.com.

    • 0
      Там не описаны _xmpp-client. записи.
  • 0
    Стоп. Зачем это делать? Как я понял — для того, чтобы коннектится не по talk.google.com, а по _xmpp-client._tcp.domain.name к примеру, чтобы не бегать с бубном и не прописывать в настройках talk.google.com и использовать конференции других серверов так?
    Если да, то как тогда будет выглядеть адрес коннекта клиента? _xmpp-client._tcp.domain.name заместо talk.google.com?
    Я правильно понял?
    • 0
      Я не понял вопроса, но попробую ответить :)

      Клиент по умолчанию стучит на @yourdomain.com на 5222ой порт. Это поведение можно изменить двумя способами. Первый, это явно указать куда стучатся, как написано у гугла. Это нужно прописать в каждом клиенте. А можно сделать специальную запись в DNS, тогда клиент её прочёт и будет знать куда надо стучаться, то есть надо настроить один раз.

      Вписать надо именно так как написано, изменив yourdomain.com на ваш домен.
      • +1
        Вот это я и хотел услышать.
        Просто неправильно сформулировал вопрос, за что простите.
        Спасибо! =]
        • 0
          Не за что :)
      • +1
        Нет же, клиент по-умолчанию резольвит SRV и только после этого стучит по A-записи…
  • 0
    4 пункт помогает тем что клиент может переконнектиться к какому-то из запасных серверов

    если прописано
    • 0
      если прописано
      IN SRV 5 0 5222 talk.google.com.
      то клиент получает один ип (из раунд-робин), и если именно этот сервер упадет, переконнектиться не получится

      думаю так(с)(тм)
  • 0
    кстати, 4-ую запись копировать осторожно. там похоже $ORIGIN.

    вообще как я писал в одном из пред. комментариев, проще сделать такое

    • +1
      $ORIGIN domain.ru.

      _xmpp-client._tcp IN SRV 20 0 5222 talk1.l.google.com.
      _xmpp-client._tcp IN SRV 20 0 5222 talk2.l.google.com.
      _xmpp-client._tcp IN SRV 20 0 5222 talk3.l.google.com.
      _xmpp-client._tcp IN SRV 20 0 5222 talk4.l.google.com.
      _xmpp-client._tcp IN SRV 5 0 5222 talk.l.google.com.

      тогда имя домена только в одном месте надо менять
      • 0
        Согласен, но некоторые панели управления это не поддерживают, и я стремился сохранить гугловый стиль. Думаю настоящие мужчины, которые сами правят конфиги бинда разбирутся :)
  • +3
    Спасибо! Когда настраивал apps мелькнула мысль об этом, но сам не додумался, увы.
  • 0
    Не знаю на сколько необходима следующая информация, но все же:
    поскольку мы коннектимся и по ssl используя 5223 порт то, наверное, благоразумно будет добавить ещё одну srv запись в dns:

    _xmpp-client._tcp.yourdomain.com. IN SRV 5 0 5223 talk.google.com.

    Собственно в qip infium проверено. При настройках без принудительного выставления галочки «Указывать вручную хост подключения» и поставленной галочки «Использовать SSL» все работает идеально…

    P.S. Да простят мне использование qip infium как клиент для jabber'а.
    • 0
      на сколько я знаю, google испольнует TLS, то есть шифрование включится, если клиент это поддерживает.
    • 0
      Нет, вы не правы. ssl+5223 — это legacy (устаревший) вариант, который использовать не стоит.
      Клиент соединяется с 5222, посылает первый запрос на сервер и только после устанавливается шифрованное соединение. Называется это все starttls.
  • 0
    Я правильно понимаю, kopete этого не поддерживает? Записи прописаны и видны, но kopete упорно говорит «Ошибка подключения: Соединение невозможно». Если принудительно указать в настройках talk.google.com всё начинает работать.
    • 0
      Записываем, не поддерживает. Остаётся только кинуть разработчикам feature request с пометкой critical :)
      • 0
        Что-то у багтрекеров сегодня болезнь какая-то. То вайновская багзилла лежала, то сейчас кдеешня лежит.
        • 0
          Не, ну это комедия:
          bugs.kde.org is temporarily offline to celebrate the KDE 4.2.0 release. Please come back on January 28th.
          • +1
            Все ушли бухать видимо :)))
      • 0
        Порылся-порылся, и обнаружил, что это известный баг. В версии для kde4 была предпринята попытка исправить дело, но как я понял, баг ещё не решён.
        • 0
          Мне вообще всегда копыто не нравилось. Перешёл на пиджин, а потом на пси.
  • 0
    чтобы не путаться, проще добавлять записи не talk.l.google.com, а как прописано в документации Google: xmpp-server.l.google.com, т.е. _xmpp-client._tcp.example.com. IN SRV 5 0 5222 xmpp-server.l.google.com.
    • 0
      Что-то мне подсказывает, что если для gmail.com прописаны именно talk.l.google.com, то лучше использовать их.
      • –1
        А мне что-то подсказывает, что нет никакой разницы, Вы ведь конектитесь к IP адресу, а не домену, а у talk.l.google.com и xmpp-server.l.google.com он один: 209.85.163.125 так же и у остальных
      • 0
        прошу прощения, обознался, IP разные (: Но я уже несколько лет использую именно этот вариант и у меня всё работает.
  • 0
    Могу сказать что миранда умеет работать с srv =)
    • 0
      Отлично, заносим в список. Спасибо что читаете =)
  • 0
    Adium работает.
    • +1
      Отлично, записываем поциента :)
  • 0
    Я вот тоже думаю перейти на Jabber, но возникло ешё несколько глупых вопросов, только не кидаться гнилыми минусами помидорами.

    Первые вопросы с ICQ, ну некуда от него не денешься, т.к. большинство друзей сидят на нём:
    1. Я так понял, нужно соединяться через транспорт-сервер. Вопрос, а все ли функции аськи он поддерживает:
    — статусы,
    — х-статусы и подписи,
    — сообщения «пользователь ххх пишет вам»,
    — передача файлов,
    — «инвиз»,
    — добавление пользователей в список, авторизацию?
    Есть ли транспорт который всё это поддерживает?
    2. Говорят, что транспорты не очень надёжны, тогда вопрос можно ли самому его поднять на своём компе, под виндой, на висте:)?
    3. Сообщения отправление через транспорт будут сохраняться в логах на Google?

    Теперь вопросы про jabber-сервер Google:
    4. Вот он хранит историю сообщений, а можно ли закачать на сервер, например, старые логи аськи?
    5. Отличается ли сервер от Google от других jabber-серверов? Какие есть ограничения и главное минусы по сравнению с другими?

    Ну и пара вопросов про jabber:
    6. Поддерживает ли jabber передачу файлов? Нет ли каких ограничений? Можно ли просто кинуть файл, не заморачиваясь какой у тебя клиент, какой клиент у получателя и какими серверами вы пользуетесь?
    7. Как у jabber обстоят дела со статусами? Есть ли аналог x-статус? Сервисы проверки на невидимость есть? :)

    Пока вроде всё ;)
    • 0
      Я аськой не пользуюсь уже 2 года, так что может быть не в курсе последних аськотенденций, но всё же попробую ответить.

      1. Всё поддерживает, кроме передачи файлов. Проверье чтобы ваш транспорт был основан на pyICQt 0.8.1 и выше.
      2. Транспорт ненадёжен ровно настолько, насколько ненадёжны «левые» icq клиенты, а говорят и более надёжен, опять же сам не знаю. Поставить на винду можно. Вам нужно будет: Ejabberd, Python, и pyICQt и желательно «белый» IP.
      3. Не знаю, наверное будут.
      4. Нет.
      5. Базово все сервера жаббера одинаковы, отличия только в дополнительных фичах (конференции, транспорты и пр). Так вот этих дополнительных фич в гугле нет. Но никто не мешает использовать эти фичи на других серверах с гугловым аккаунтом.
      6. Поддерживает, даже целых три типа передачи данных на все случаи жизни. На сколько я знаю, ася не умеет передавать файлы, если оба клиента имеют серые IP. В случае с жаббером эта проблема решается. Единственное но, не во всех клиентах имплементированы все три типа передачи. Особенно это касается версий для телефонов.
      7а. Статусов намного больше чем в ICQ. Читайте: статусы jabber. Сам не использую, кроме музыки.
      7б. Естественно нет никаких «проверок на невидимость». Это не глючаная ася, это же правильный жаббер :)! если невидимость включена, значит она работает. Сам не использую, опять же.

      Если есть ещё вопросы — задавайте. Можно лично — JID в профайле.
      • 0
        спасибо за ответы, буду разбираться
      • 0
        5. Не объясните, как это — «использовать эти фичи на других серверах с гугловым аккаунтом»? Где можно прочитать, как это работает?
  • +2
    отличный пост, и главное очень вовремя — буквально на днях прикрутил к домену сервисы гугла,
    и как раз столкнулся с проблемой недосягания моего JIDa при использовании сторонних джаббер-серверов. теперь проблема решена :)
  • 0
    Чтобы Вы могли общаться с пользователями других серверов, гугль разместил ссылку на описание настроек Ваших DNS в разделе подключения сервиса «чат»: «Google дает возможность вашим пользователям общаться в чате с пользователями других служб обмена мгновенными сообщениями через объединенные в федерацию сети. Чтобы пользователи могли общаться не только в сети Google, нужно изменить записи службы (SRV) в настройках домена. Подробнее»
    • 0
      То про серверные записи, а у меня про клиентские…
  • 0
    Большое спасибо, ей богу вчера думал на эту тему. Ранее поднял Jabber-сервер силами 1gb.ru, теперь с подключенным Google Apps значительно удобнее стало использовать Google сервера, теперь и соединение без заморочек. К сожалению, у 1gb.ru есть ряд проблем их Jabber-сервера (jabberd2): проблемы с федерацией (jabber.ru видим, google.com уже нет), не все варианты отмены регистрации (см. RFC) работают (в ауте оказался QIP Infium 9022), по дефолту разрешена публичная регистраций (через админку не закрыть, только письмом в саппорт).
    • +1
      Кстати, а QIP нормально с этим работает? А то мне не на чем проверить.
      • 0
        Конечно, без проблем.
        • 0
          Спасибо, добавляем.
  • 0
    А как можно отредактировать контакты в джаббере по GoogleApps?
    Просто я импортнул из QIP контакты (группы, ники), а в icq-транспорте только номерами показаны контакты. Хотелось бы прикрутить и ники с группами.
    Использую QIP Infinum 9022.
    • 0
      Такое умеет gajim, по-моему. А лучше пересадить всех на jabber :)
  • 0
    А кто-то использовал утилиты jru в плане работы с гугловским сервером?
    Я не могу оттуда убрать icq-транспорт
    • 0
      Я не пользовался.
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    а можно как-то запретить или ограничить s2s взаимодействия на GoggleApps?
  • 0
    Замечательно сработало. iChat (Mac OS X) коннектится без проблем!
  • 0
    У меня не ищатся другие пользователи из джаббера на моем домене через Apps.
    Равно как и меня не получается найти извне.
    В чем может быть проблема?
  • 0
    Спасибо и плюс :)
  • 0
    Добавлю, ибо актуально:
    www.olark.com/gtalk/check_srv
    Для ленивых (чекает домен, выдает рекомендации по изменению SRV прямо для вашего домена)

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