Для целей этой публикации корневой домен example.com.
У меня есть XMPP-сервер (ejabberd), работающий на Debian 6.
В клиентах (Pidgin, Adium), когда я пытаюсь добавить учетную запись gtalk xmpp в качестве контакта, я получаю сообщения «Не авторизован» вместе с ошибками 404 и 503 (вывод отладки ниже).
Хотя это может указывать на неправильную конфигурацию ejabberd, если я настрою сервер XMPP для размещения chat.example.com, добавление пользователя gtalk будет работать нормально. То же самое верно, если на сервере XMPP размещается seconddexample.com.
Возможно, это проблема DNS? Что ж, я просмотрел DNS, файлы хостов и убедился, что они верны. Но я их снял и на всякий случай заменил.
Сборка сервера? Я восстановил его с нуля. Та же проблема. Сеть? Я пробовал это в другой сети.
У меня закончились идеи.
Может ли gtalk занести сервер в черный список? По ошибке?
Если у вас есть идеи, они будут оценены.
Вывод консоли XMPP из клиента Pidgin с 'exampleuser@example.com' при попытке добавить пользователя 'gtalk@gmail.com':
<iq type='result' to='example.com' id='2188721256'/>
<iq type='set' id='purplec8d28432'>
<query xmlns='jabber:iq:roster'>
<item jid='gtalk@gmail.com' name=''>
<group>Buddies</group>
</item>
</query>
</iq>
<presence to='gtalk@gmail.com' type='subscribe'/>
<iq from='exampleuser@example.com' to='exampleuser@example.com/test' id='push524344776' type='set'>
<query xmlns='jabber:iq:roster'>
<item subscription='none' jid='gtalk@gmail.com'>
<group>Buddies</group>
</item>
</query>
</iq>
<iq type='result' id='push524344776'/>
<iq from='exampleuser@example.com' to='exampleuser@example.com/test' id='purplec8d28432' type='result'/>
<iq from='exampleuser@example.com' to='exampleuser@example.com/test' id='push1181680121' type='set'>
<query xmlns='jabber:iq:roster'>
<item ask='subscribe' subscription='none' jid='gtalk@gmail.com'>
<group>Buddies</group>
</item>
</query>
</iq>
<iq type='result' id='push1181680121'/>
<presence from='gtalk@gmail.com' to='exampleuser@example.com/test' type='error'>
<error code='404' type='cancel'>
<remote-server-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
</error>
</presence>
Решено. Проблема заключалась во внутреннем DNS gtalk.
Оказывается, предшественник открыл (бесплатную) учетную запись Google Apps для домена 6 лет назад, перестал ее использовать 5 лет назад, никому не сказал и, вероятно, сам забыл об этом.
Это означает, что когда gtalk@gmail.com пытался поговорить с user@example.com, внутренние записи показали, что @ example.com использует службу gtalk, а не службу ejabberd, которую я установил. Тогда не было бы ни ответа, ни авторизации.
Больше всего в этой проблеме беспокоило то, что все записи NS, которые я смог найти, показали, что я все настроил правильно, включая dig srv _xmpp-server._tcp.example.com. @ 8.8.8.8
В любом случае, как только я обнаружил учетную запись, я отключил службу gtalk, и теперь все работает.