问题描述
我在 Gentoo 服务器上使用 ejabberd 20.04,但很难让 XEP-0163(个人事件协议)再次工作。我正在“再次”写作,因为它在某些时候起作用了。但我的设置可以追溯到 2009 年,版本为 2.something...
首先,这里是我的 ejabberd.yml
配置文件中的相关当前配置位。
modules:
...
mod_caps: {}
mod_pubsub:
access_create_node: local
default_node_config:
notification_type: normal
notify_retract: false
max_items: 10
plugins:
- flat
- pep
append_host_config:
"MYSERVER.COM":
modules:
mod_register:
access:
- deny
...
auth_method: external
extauth_program: "/path/to/some/script/ejabberd.py"
一切正常,但使用 Psi+(目前在 Windows 上为 v1.5.1477),例如在设置我的心情时,我收到了这个回复:
<iq id="aca5a" type="set">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<publish node="http://jabber.org/protocol/mood">
<item id="current">
<mood xmlns="http://jabber.org/protocol/mood">
<sick/>
<text>Grrrr</text>
</mood>
</item>
</publish>
</pubsub>
</iq>
<iq to="[email protected]/Psi+" xml:lang="fr"
from="[email protected]" id="aca5a" type="error">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<publish node="http://jabber.org/protocol/mood">
<item id="current">
<mood xmlns="http://jabber.org/protocol/mood">
<sick/>
<text>Grrrr</text>
</mood>
</item>
</publish>
</pubsub>
<error code="403" type="auth">
<forbidden xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
</iq>
我认为这是 ACL 的问题,所以我尝试将其替换为:
access_create_node:
allow: all
但我仍然有相同的答复。所以我知道存在身份验证问题,但我不明白是什么。
这可能是外部身份验证的问题吗?它对其他一切都很好,我在脚本日志中没有看到任何错误(我写的东西输出了一些关于 ejabberd 请求的日志)。
(不确定我的问题属于这里,我的猜测是它更适合 Serverfault 但 ProcessOne 重定向到这里。)
解决方法
我安装了 ejabberd 20.04,像你一样配置了 mod_pubsub,并将示例 checl_pass_null.pl 设置为 extauth 程序
然后我发送相同的 IQ 节,ejabberd 正确回复。
您可以尝试使用该 extauth 脚本,如果它工作正常,则说明您的 extauth 脚本中缺少某些内容。
如果示例 check_pass_null.pl 仍然失败,那么问题可能出在您对默认配置所做的其他更改中。您可以尝试使用默认配置(几乎没有更改)。如果它有效,您可以调查哪些自定义选项会破坏发布订阅。