返回

文章详情

现代电子邮件可以由借用的部分构建

Hacker News2026年7月27日 08:27

让我们在HTTP之上设计电子邮件的继任者,修复SMTP拖延了40年的设计缺陷。逐步进行。目标不是替换现有的邮件系统,天哪!而是学习、玩乐并发现当前技术,以替换每个元素:发送、接收、网关、密钥等等。系统将永远不与Gmail或任何经典邮件提供商交谈:它只是与自身沟通。我们要保留的唯一东西是地址的格式,user@domain。其他一切都将重新发明。由于它是基于HTTP的邮件系统,一个好的协议名称可以是HMTP:超文本邮件传输协议(SMTP中的S代表简单,而HTTP中的H取而代之)。现在是准备技术栈的时候了:HTTP、TLS、WebFinger、ActivityPub、Webmention、Ed25519、HPKE、sigchains等。材料清单:这个设计并没有发明任何技术:一切都已经存在。问题现有技术谁在使用它?传输和状态代码HTTP整个互联网。传输加密TLS + Let's Encrypt整个互联网。用户发现WebFinger(RFC 7033)Mastodon和Fediverse。消息投递POST到收件箱ActivityPub。源头验证Webmention和DKIM模式IndieWeb,所有邮件。签名Ed25519SSH、Signal。内容加密HPKE(RFC 9180)MLS、TLS ECH。密钥轮换后仍存的身份sigchainsATProto(Bluesky)、Keybase。阅读和同步JMAP(RFC 8620)Fastmail。推送通知SSE / WebPush每个浏览器。首次接触同意消息请求Signal、Instagram。通过哈希的引用附件内容寻址Git、IPFS、Matrix。我们将使用的每一部分都是标准化的,已部署并经过数百万人的大规模验证;唯一的新事物是组装。选择HTTP不仅仅是务实。这解决了任何新协议在某一点上必须构建的几个问题:TLS、虚拟主机和SNI:免费。状态代码:邮件协议所需的类别已经存在于HTTP中。202 Accepted(排队待发送),429 Too Many Requests + Retry-After(速率控制),404 / 410(邮箱未知/已消失),3xx(邮箱已移动),413(太大)。即使是付费反垃圾邮件自1997年以来就保留了一个代码:402 Payment Required。现有基础设施:代理、负载均衡器、Nginx、每种语言的库。协议不再是一个新服务器,而成为HTTP上的约定,就像Webmention或Micropub。让我们进入下一个层次:我们如何发现一个用户,验证他们的身份,传递消息,签名并加密它,所有的一切都通过HTTP?1.发现和委托(更好的MX):委托是通过一个静态文档解决的:GET https://example.com/.well-known/hmtp/ana { "inbox": "https://mail.migadu.example/hmtp/inbox/ana", "keys": { ... }, "devices": [ ... ] } 收件箱可以生活在另一台主机上:这就是MX记录,但不触及DNS。一个在GitHub Pages上的静态博客可以通过提供JSON文件将其邮件委托给提供商。它允许了一些MX从未做过的事情:每用户委托(每个域的每个邮箱在不同的提供商上)。我们甚至不需要发明路线:WebFinger(RFC 7033)正是这样做的,Mastodon已经证明它可以扩展。2.生存密钥轮换的身份:身份不能是一个密钥(它们会丢失,它们会过期);它必须是可以链接回的东西。一个有两个锚点的提案:加密连续性:发现文档发布当前密钥和旋转链,其中每个新密钥由前一个密钥签名。任何与你有联系的人可以在不信任任何人的情况下验证N+1的密钥。它是一个sigchain,ATProto用DIDs或Keybase曾经使用的。作为后备的域控制:如果您在没有签名旋转的情况下丢失密钥(您的笔记本被盗),域声明一个没有链的新密钥,在此期间需要一个强制的宣布期(假设30天),在此期间知道您身份的服务器显示警告“身份由域重新锚定,而非签名”。然而,域锚定的身份有它自己的阿基里斯之踵:一个域不是拥有的,而是租用的。如果您停止付费,它会过期,并且有人注册它,新的所有者在您的.well-known中发布他们的密钥,从那一刻起他们接收您的邮件并以您的名义签名。没有人能分辨合法继承人与非法占用者。这是ATProto尝试通过用DIDs将身份与域分离来解决的问题,代价是另一项基础设施。我们知道这是一个真正的问题,并且有一个已知的解决方案。现在让我们继续。3.带队列的传送(存储和转发):递送是对收件人收件箱的POST:POST /hmtp/inbox/ana HTTP/1.1 Host: mail.migadu.example Content-Type: application/hmtp+json 关键不在于请求,而在于发出请求的人。您的客户端并不直接将邮件投递给收件人,而是投递到您的服务器(一个对您的发件箱的经过身份验证的POST),是您的服务器排队、重试并进行指数回退。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡