身份与账户 #

每一个 Matrix 身份都是一个 Matrix 用户 ID(MXID),格式是:

@本地名:服务器名

比如:

@alice:your-name.meldry.com
  • @前缀符号(sigil),表示这是一个用户。其他前缀还有 ! 代表房间、# 代表房间别名、$ 代表事件(详见下)。
  • 本地名(localpart)——在一台主机服务器内部的账户名。协议规范允许的字符是 [a-z0-9._=-],老账户里可能出现 /,总长度上限 255 字符。大小写一般保留但比较时不区分。
  • 服务器名(server-name)——主机服务器的 DNS 名称。两台不同服务器上的同名本地名是完全不同的两个人。

MXID 是永久的。你的 显示名(人类友好的名字,如"Alice Chen")和 头像 可以随时修改;MXID 不能。这在用户之间相互验证身份时很关键——你验证的是 MXID,不是显示名,因为显示名容易伪造。

Matrix 前缀符号 #

Matrix 用四种前缀字符区分标识符的种类:

前缀含义示例
@用户(账户)@alice:your-name.meldry.com
!房间(内部 ID)!AbCdEfGhIjKlMn:server
#房间别名(人类友好名字)#general:your-name.meldry.com
$事件(消息、反应等)$event_hash:server

内部房间 ID(!…)是不透明的且永久唯一。房间别名(#general:server)只是一个 指向 某个房间 ID 的人类友好指针;同一个房间可以有多个别名,管理员可以随时修改。

第三方标识符(3PIDs) #

你还可以给 Matrix 账户绑定一些"外部"标识:邮箱手机号,以及(历史遗留的)Microsoft / Google 账户。这些 3PID 让别人即便不知道你的 MXID,也可以通过邮箱或电话号码找到你。绑定信息保存在一个 身份服务器 里(Meldry 自带一台),随时可以解绑。

查找流程 #

  1. Alice 想把 bob@example.com 邀请到一个房间。
  2. 她的客户端问身份服务器:"这个邮箱绑定了 Matrix 账户吗?"
  3. 如果有,身份服务器返回 Bob 的 MXID,客户端就直接发邀请。
  4. 如果没有,客户端可以改发一封邮件邀请——Bob 点开链接后会被引导去创建或登录 Matrix 账户并认领这个邀请。

3PID 查找是 opt-in 的:你必须显式绑定这个 3PID 才会被发现。很多 Matrix 用户只有一个本地名,完全匿名运行,从来不碰 3PID。

隐私 #

身份服务器是一个典型的隐私权衡。绑定后你获得可发现性,但也"广播"了"这个 3PID 属于 Matrix 用户"这一事实。Meldry 的身份服务器按工作区隔离——外部服务器无法枚举你的工作区。如果你不在乎被人用邮箱找到,干脆别绑。

设备 ID #

当你从一个新客户端(笔记本、手机、平板、服务端机器人)登录时,主机服务器会给这个会话分配一个 设备 ID(例如 WOXXHRVJKP)。一个 MXID 可以同时拥有很多设备 ID,每个你登录过的地方对应一个。

  • 每个设备都有自己的 access token。
  • 每个设备都有自己的 设备密钥,用于端到端加密(详见 端到端加密)。
  • 你可以在客户端的安全设置里列出和注销设备,或者在 Meldry 仪表板的 Matrix 用户面板里做同样的事。
  • 在某台设备上登出只注销那一台。你也可以一键"登出所有会话"——在你怀疑某处被攻陷时特别有用。

设备是 E2EE 信任的基本单位:当有人验证"Alice"时,实际验证的是 Alice 的跨签名密钥,而跨签名密钥又为 Alice 所有设备背书。新设备加入后需要重新被验证(或者通过跨签名自动继承信任,这个我们在加密那一章里讲)。

Meldry 的第一个 Matrix 用户 #

当你注册 Meldry 工作区时,我们会自动在你的主机服务器上创建一个 Matrix 用户:

  • 本地名 = 你在 meldry.com 注册时填的用户名
  • 一个随机初始密码,可以从仪表板的 服务器 → Matrix 用户 页查看和修改
  • 没有 3PID(之后你可以在任何 Matrix 客户端里绑定邮箱)

后续的用户(你的队友)要么由你在仪表板里创建,要么你开放自助注册后用户自己创建。每个人都在同一台主机服务器上有自己的 MXID。

下一步 #

  • 端到端加密——设备密钥如何成为 E2EE 信任的基本单位
  • 架构——保存你账户的主机服务器
  • 客户端——挑一个应用登录