【问题标题】:Unable to retrieve archived messages from new session无法从新会话中检索归档消息
【发布时间】:2018-05-28 10:39:37
【问题描述】:

我正在使用 EjabberD 并已使用

启用 MAM
  mod_mam:  
      default: always

我只能检索在当前会话中使用客户端发送的消息。如果我在客户端注销并再次登录,所有存档的消息都会从数据库中删除。 (通过比较第二次登录前后的 Mnesia 转储来确定)。

我正在使用基于 Strophe js 的客户端。

为获取归档消息而发送的 IQ 数据包

<iq type="set" to="user1@x.x.x.x" xmlns="jabber:client" id="c0104a00-253e-4727-9157-a4ea24d9bc86:sendIQ">
    <query xmlns="urn:xmpp:mam:2">
        <x xmlns="jabber:x:data" type="submit">
            <field var="FORM_TYPE" type="hidden">
                <value>urn:xmpp:mam:2</value>
            </field>
            <field var="with">
                <value>user1@x.x.x.x</value>
            </field>
        </x>
        <set xmlns="http://jabber.org/protocol/rsm" />
    </query>
</iq>

在 strophe 上,我使用

从服务器注销
connection.disconnect();
connection.reset();

编辑:身份验证机制是 LDAP 和 ANON。

host_config:
  "x.x.x.x":
    auth_method:
        - anonymous
        - ldap
    allow_multiple_connections: false
    ldap_servers:
        - "x.x.x.x"
    ldap_encrypt: none
    ldap_port: 389
    ldap_base: "cn=Users,dc=x,dc=x,dc=x"
    ldap_rootdn: "cn=Administrator,cn=Users,dc=x,dc=x,dc=x"
    ldap_password: "xxx"

    ldap_uids:
        - "sAMAccountName": "%u"

我希望将邮件永久存档。这样客户端就可以检索历史记录,而无需在本地存储任何内容。我错过了什么?

【问题讨论】:

    标签: xmpp ejabberd strophe ejabberd-module


    【解决方案1】:

    这些帐户是匿名的吗?如果是这样,他们会在他们注销时被删除,并且他们的所有相关信息也会被删除,例如名册和妈妈消息。

    【讨论】:

    • 不,它们不是匿名帐户,但它们是基于外部 LDAP 服务器的帐户登录
    • 我在问题中添加了 yml 的 auth 部分
    • 我的错。在我的配置中,我在 ldap 之前有匿名。感谢您指出。
    猜你喜欢
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 2016-07-07
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多