Xmpp 无法从新会话检索存档邮件
我正在使用EjabberD并已启用MAM使用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
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"