我的 ejabberd 版本是 19.08。启用mod_block_strangers
错误节后仍未收到。
向外部收件人(非本地 jabber)发送消息,其中 mod_block_strangers=on 为外部节的示例
<message to="[email protected]" 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="[email protected]" 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="[email protected]" 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。同样的情况,没有效果。
答案1
在我的服务器上没有正常的错误映射。
我正在使用具有默认配置的 ejabberd 20.04。
当我尝试加入名为“room@aa”的房间时,它会抱怨一个错误,因为房间名称不能包含@,并且该错误节包含 XEP-0086 代码:
<presence id='57:106609'
from='room@[email protected]/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>