我的 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 的 out 节示例
<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,默认情况下是“真”。具有本地域的节示例:
<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。同样的情况,没有效果。