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

你为什么应该用这个

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

开始使用!

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

获取客户端

xmpp.org给了一个客户端列表。下载安装即可。
我推荐安卓上使用conversation以及其衍生版,桌面端用gajim,果子系用户自己研究吧(。

注册账号

如果你没有自己的服务器的话,这里有一个服务器列表,每个服务器的注册政策不一样,请自行挑选。

账号的样子类似somebody@somesite.net的样子,和邮件类似。

聊天室发现

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

私聊加密功能

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

搭建服务器

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

服务端选择

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

服务器解决方案

XMPP高度依赖DNS来实现S2S(我不喜欢这个),这意味着你需要一个能指向你服务器的域名和一个CA颁发的证书。
当然,你可以去买个VPS,买个域名,甚至买个证书。
不过我要给一个最省的方案。机顶盒(如果你有瘦主机之类的更好)+IPV6+DDNS+letsencrypt。
如此实现的最终目的是达到homeserver等级。只有IPV6也可以和绝大多数的服务器互通。

服务端搭建

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