Моя версия ejabberd - 19.08. При включенном mod_block_strangers
статьи об ошибках не получены.
Отправка сообщения внешнему получателю (не локальному jabber) Пример нашей строфы с mod_block_strangers = on
<message to="615970@676373647364.com" id="aad7a">
<subject>test</subject>
<body>test</body>
<nick xmlns="http://jabber.org/protocol/nick">bot</nick>
</message>
XMPP не является локальным. Раздела об ошибках нет. Должно быть, потому что этого домена не существует.
Пример нашей строфы с mod_block_strangers = off
<message type="chat" to="615970@676373647364.com" id="aadaa">
<body>test</body>
<active xmlns="http://jabber.org/protocol/chatstates"/>
<request xmlns="urn:xmpp:receipts"/>
<nick xmlns="http://jabber.org/protocol/nick">bot</nick>
</message>
<message from="615970@676373647364.com" type="error" xml:lang="ru" to="bot@*" id="aadaa">
<active xmlns="http://jabber.org/protocol/chatstates"/>
<request xmlns="urn:xmpp:receipts"/>
<nick xmlns="http://jabber.org/protocol/nick">bot</nick>
<error type="cancel" code="404">
<remote-server-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
<text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" xml:lang="en">DNS lookup failed: non-existing domain</text>
</error>
<body>test</body>
</message>
На локальном xmpp такой проблемы нет. Все в порядке. Я думаю, это потому, что allow_local_users по умолчанию имеет значение true. Пример строфы с локальным доменом:
<message to="549725985745@localdomain" id="aadea">
<subject>test</subject>
<body>test</body>
<nick xmlns="http://jabber.org/protocol/nick">bot</nick>
</message>
<message from="549725985745@localdomain" type="error" xml:lang="ru" to="bot@localdomain/Psi+" id="aadea">
<nick xmlns="http://jabber.org/protocol/nick">bot</nick>
<error type="cancel" code="503">
<service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
<body>test</body>
<subject>test</subject>
</message>
Таким образом, если включен mod_block_strangers, мы не получаем код ошибки и код ошибки с нашего сервера. Мол, сообщение об ошибке запрещается вместе с сообщением.
Изменить: обновлено до ejabberd 20.04. Та же ситуация, эффекта нет.
На моем сервере нет нормального отображения ошибок.
Я использую ejabberd 20.04 с конфигурацией по умолчанию.
Когда я пытаюсь присоединиться к комнате с именем «room @ aa», он выдает сообщение об ошибке, потому что имя комнаты не может содержать @, и эта строка ошибки включает код XEP-0086:
<presence id='57:106609'
from='room@aa@conference.localhost/user1'
type='error'>
<x xmlns='http://jabber.org/protocol/muc'>
<history maxchars='10000000000000'
maxstanzas='200000000'/>
</x>
<show>away</show>
<status>Busysss</status>
<error code='400'
type='modify'>
<bad-request xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
<text xml:lang='en'
xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'>Bad value of attribute 'to' in tag <presence/> qualified by namespace 'jabber:client'</text>
</error>
</presence>