XMPP是一个通信协议,基于纯文本XML实现通信功能。与qq,微信不同,他并没有中央服务器,所有服务器都是分立且可以相互通信的,服务器之间的通信实现类似于邮件。

你为什么应该用这个

xmpp是一个标准协议,与matrix相比服务器端的开发比较完善客户端相对比较欠缺,一些协议内容也没有都实现。但是它给出了一个所有人都能照着一个协议开发软件,并且每个人都可以搭建服务器并掌握自己数据的可能。 (虽然我知道这很难,不是所有人都愿意自建服务器的,大量不愿意自建服务器的人最后又会聚在某些公益服务器上)

开始使用!

先写教程…, 反正我也不指望我写的玩意有多少技术含金量

获取客户端

xmpp.org给了一个客户端列表。下载安装即可。
我推荐安卓上使用conversation以及其衍生版,桌面端用gajim,果子系用户自己研究吧(苹果不支持客户端进行TCP长连接,但是XMPP需要长连接来确认客户端存活。

注册账号

如果你没有自己的服务器的话,这里有一个服务器列表,每个服务器的注册政策不一样,请自行挑选。有的服务器可以用标准的xmpp客户端直接注册,有的需要提供信息只能从网页上注册。

账号叫jid,样子类似somebody@somesite.net,和邮件类似。
你可能遇到的jid结构是 id@域名/资源名

聊天室发现

利用jabber的搜索网络进行聊天室发现,当然这里的聊天室并不全,这里只会显示公开并且加入jabber网络的聊天室,而且当前的中文用户群体一言难尽QQ鉴证群倒了跑到别的地方的动力或许是比较大吧

加密功能

你可以使用PGP或者OMEMO加密,默认用的是OMEMO加密。密钥交换过程中服务器是无法解密消息的。在有多个客户端的情况下,会生成多个密钥,原则上你需要通过扫二维码的方式信任你的其他设备密钥,当然这不是必须的。在通信时,对方需要接受你的密钥,然后才能和你加密通信。如果丢失密钥,所有消息都会无法解密。

群聊也可以加密,但是加密内容只能被在线的成员接收到(按理说有群身份的不在线也可以接收消息,但是貌似是直接设计成不保留聊天记录的)

也就是说,OMEMO能实现多设备的加密以及密码的向前向后保密。

搭建服务器

如果你不研究搭建服务器,那玩XMPP意义其实就不大了(

服务端选择

xmpp.org给出的软件列表里也有服务器

服务器解决方案

XMPP高度依赖DNS来实现S2S(我不喜欢这个),这意味着你需要一个能指向你服务器的域名和一个CA颁发的证书。
当然,你可以去买个VPS,买个域名,甚至买个证书。
不过我要给一个最省的方案。arm设备或者瘦主机+IPV6+DDNS+letsencrypt。
如此实现的最终目的是达到homeserver等级。只有IPV6也可以和绝大多数的服务器互通。
你也可以完全没有证书和域名,完全把服务器开在暗网,比如i2p

服务端搭建

参照各个服务端的手册,功能太多了我也讲不完。