Xmpp 无法从新会话检索存档邮件

Xmpp 无法从新会话检索存档邮件,xmpp,ejabberd,strophe,ejabberd-module,Xmpp,Ejabberd,Strophe,Ejabberd Module,我正在使用EjabberD并已启用MAM使用 mod_mam: default: always 我只能检索在当前会话中使用客户端发送的消息。如果我注销并再次登录到客户端,则会从数据库中删除所有存档的消息。(通过比较第二次登录前后的Mnesia转储来获得) 我使用的是基于strophejs的客户端 为获取存档邮件而发送的IQ数据包 <iq type="set" to="user1@x.x.x.x" xmlns="jabber:client" id="c0104a00-2

我正在使用EjabberD并已启用MAM使用

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

我使用的是基于strophejs的客户端

为获取存档邮件而发送的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>
编辑:身份验证机制是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"

我希望这些邮件永远存档。这样客户端就可以检索历史,而无需在本地存储任何内容。我遗漏了什么?

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

否,他们不是匿名帐户,但他们是基于外部LDAP服务器登录的帐户。我在问题My bad中添加了yml的auth部分。在我的配置中,在ldap之前有匿名。谢谢你指出这一点。
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"