ejabberd 中的用户存储

User storage in ejabberd

我正在尝试将 ejabberd 设置为我的项目的 IM 解决方案,这将是移动应用程序 + 后端。我正在使用 SQL auth(并且 SQL store 也适用于所有模块),通过 ODBC 使用 MSSQL。我有一些问题没有在文档中找到答案。

  1. 我的理解是否正确,ejabberd 是多租户的(因为它可以支持多个域)。如果是这样,如何将用户分配给特定租户(域)?在数据库中的 users table 中,只有用户名(没有域部分)。我可以有两个不同的用户 john@jabber.myproject.comjohn@jabber.myotherproject.net 吗?
  2. 我想在 ejabberd 上自动创建 XMPP 帐户(用户不需要了解任何底层服务)- 我需要通过 API 注册用户,还是可以直接将行插入数据库 table users 和 ejabberd 可以吗?

In users table in DB, there is only username (without domain part). Can I have two different users john@jabber.myproject.com and john@jabber.myotherproject.net ?

为每个虚拟主机创建一个新数据库,并使用 ejabberd.yml 中的 host_config 选项来告诉每个虚拟主机使用哪个数据库:

https://docs.ejabberd.im/admin/configuration/#database-and-ldap-configuration

或者您可以启用新的 SQL 架构,请参阅 https://blog.process-one.net/ejabberd-18-03/

do I need to register users via API, or can I insert rows directly into DB table users and ejabberd will be OK with it?

两者都可以接受。在第二种情况下,您的服务器中可能缺少在帐户注册时执行的某些任务,但我不记得在帐户注册时执行任何任务的任何模块。所以,看起来还可以。