# MetaMail: Getting Secure Email with Web3

By [MetaMail](https://paragraph.com/@metamailink) · 2022-06-24

---

作者：suneal.eth

简介：本文介绍了电子邮件存在的安全性与垃圾邮件问题，提出使用Web3地址来发送和接收电子邮件的方法，其完全兼容普通邮件，免费无gas fee，能够使用密钥对邮件进行签名与端到端的加密，从而达到极致的安全性，并且能够减少垃圾邮件。我们搭建了[MetaMail](https://metamail.ink/)，现在处于Beta阶段，点击以下链接使用：

Email, Security and Spams
-------------------------

从上世纪电子邮件被发明至今，电子邮件的协议与运行机制没有太大变化：发信人使用SMTP协议将邮件提交到邮件服务器，邮件服务器间通过SMTP协议传送邮件到收件人的邮件服务器，收件人通过IMAP/POP协议从服务器收取邮件。虽然电子邮件已成为全球普遍使用的通信方式，并且在可见的未来一直保持主流，但其中一些重要的问题一直没有很好地被解决：缺乏方便的邮件加密和垃圾邮件泛滥。

![Email protocol](https://storage.googleapis.com/papyrus_images/c1930ce09c4c069a8013c38dd0dd1abae8c307bfbc6242b9d151ee067489eb28.jpg)

Email protocol

Email protocol

**缺乏方便的邮件加密方式：** 在SMTP协议里，邮件内容是明文传输的，用户的邮件由邮件服务提供商在互联网传输时，很容易被泄露或伪造。为了保护邮件内容被篡改泄露，[PGP组织](https://en.wikipedia.org/wiki/Pretty_Good_Privacy)提出通过非对称加密等技术对邮件进行签名与端对端加密来保证邮件安全。在PGP框架下，每个用户需要维护自己的私钥，公布自己的公钥，当用户发送邮件时，使用自己的私钥对邮件内容进行签名，保证邮件的完整性，使用收件者的公钥对邮件密钥进行加密，保证邮件只有收发双方才能解密邮件。PGP的理念非常好，但是并没有普遍流行起来，其重要原因之一是需要用户维护自己的公私钥对，并且确保收件人的公钥确实是属于收件的人的公钥（因为[中间人攻击](https://en.wikipedia.org/wiki/Man-in-the-middle_attack)可能替换掉公钥），而安全的方法是收发双方线下用物理的方式确认对方身份并交换公钥，这些较为复杂的步骤在很大程度上阻止了PGP邮件在普通用户间的流行。而在Web3里，每个用户都拥有私钥，用户的钱包地址即公钥（或公钥的哈希），这个问题可以自然地被解决。

**垃圾邮件泛滥：** 垃圾邮件的历史几乎和电子邮件的历史一样久，并且具有越来越严重的趋势，据估计，截止到2014年，网络上90%的电子邮件都是垃圾邮件\[[Email Spam](https://en.wikipedia.org/wiki/Email_spam)\]。直到现在，如果一个人想设置自己的收邮件服务器，将不得不考虑如何过滤垃圾邮件，否则收件箱会很快被垃圾邮件占据。垃圾邮件泛滥的根本原因是，在这种开放的协议上，人们没有很好的方式来防止[女巫攻击](https://en.wikipedia.org/wiki/Sybil_attack)，即垃圾邮件发送者可以以几乎0成本的方式制造大量的地址发送大量的邮件，人们只能被动地识别与过滤它们，例如过SPF、DIKM以及建立IP黑名单等方式来过滤恶意发送者。当今个人如果想设立自己的发邮件服务器，也要经历十分复杂的步骤来避免发出的邮件直接被丢进垃圾箱（绑定域名，设置证书，获得信誉良好的IP），别忘了，一个ugly truth是当今所有的主流云厂商都会禁掉云主机的25号端口，禁止用户从主机发邮件，以保护IP地址的”信誉”。人们通过设置各种严格的条件来防止垃圾邮件，也同时提高了个人建立邮件服务器的困难程度——发邮件前你得先证明这不是垃圾邮件，这在一定程度上也使得邮件服务越来越集中在大平台如Gmail和QQMail中。

明文邮件和垃圾邮件泛滥是电子邮件长久以来的问题，其背后的中间人攻击与女巫攻击是互联网世界普遍面临的攻击模型。幸运的是，区块链技术可以很自然地解决这两个问题，在Web3中能够比以往更简单地发送加密邮件，并且避免垃圾邮件。

在Web3里，用户拥有自己的地址与身份，可以使用地址/ENS + @ + 域名作为自己的邮箱地址。

例如用户以太坊地址为`0x045ff23cf3413f6a355f0acc6ec6cb2721b95d99`，MetaMail域名为`mmail.ink`。那么可以使用`0x045ff23cf3413f6a355f0acc6ec6cb2721b95d99@mmail.ink`作为邮箱地址。由于此地址已绑定了ENS suneal.eth，所以可以同样使用`suneal.eth@mmail.ink`作为邮箱地址。使用这样的地址，可以像往常一样往任何邮箱发送邮件，也可以接收来自Gmail等其他邮箱的邮件，是不是有点酷？Well，除了酷之外这样有什么好处呢？

首要的好处是安全。每个Web3地址/ENS都对应着由用户管理的私钥，用户在使用MetaMail时可以自然地用私钥进行邮件签名与加密，公钥则是记录在区块链上，省去了需要相互交换公钥的步骤。用户在发送邮件时，使用自己的私钥对整个邮件内容进行签名，接收者可以根据数字签名校验邮件的完整性，邮件内容仍然保持email格式，通过SMTP协议传送，与所有其他邮箱地址无缝互通；当向其他MetaMail用户发送邮件时，可以使用收件人的公钥对邮件进行端到端的加密，从而保证只有收件人才能看到邮件内容。

![Key binding](https://storage.googleapis.com/papyrus_images/cc63a6979b705070b93dd792c639a450e474d0e1a78158c09f7bd4d4fcd429bd.png)

Key binding

Key binding

另一个好处是可以减少垃圾邮件。区块链上的地址数量是有限的，创造新地址需要一定的成本——需要付至少一笔Transaction的手续费，邮件服务商者只需要根据发送者的余额设置限制发送频率（类似于PoS），屏蔽恶意地址即可防止垃圾邮件，此时发送大量邮件需要存储一定的余额或者制造大量的地址——两者的成本都会使得从MetaMail地址发送垃圾邮件不再经济。

使用MetaMail，签名与加密保证邮件的安全，防垃圾邮件会使得MetaMail被邮件过滤系统标记为垃圾邮件的概率更小，此时收发邮件的数据本身通过服务器中转，并不需要存储在区块链上，所以整个过程完全免费无Gas费。

传统邮箱里如Gmail，用户是在『申请』自己的邮箱地址。在MetaMail中，用户对邮件账户拥有更强的控制，用户拥有他们的用户名，邮件服务提供商拥有域名，两者合作才能进行发送邮件。每发一封邮件都需要对应用户的签名，加密的邮件需要用户才能解密，邮件服务提供商也不能任意创造账户、发送或者解密邮件。

![Users own their identities](https://storage.googleapis.com/papyrus_images/c805b5fe83fd171c713155f2bde5877abd74ebc36829f0096483c3836757430f.png)

Users own their identities

Users own their identities

非常简单，我们已经实现MetaMail，访问[metamail.ink](https://metamail.ink/)，连接钱包，即可获得自己的@mmail.ink后缀的邮箱地址，整个过程只需要签名验证账号归属，完全免费无gas费，用户不会泄露私钥等信息。

在MetaMail里，编辑、发送与接收邮件与其他邮件服务几乎没有区别。在发送前，用户需要对邮件内容进行签名，确保邮件的完整性。签名的信息会存储在邮件eml的文件头，邮件服务商与收件人可以随时进行验证。

![Sign email before sending](https://storage.googleapis.com/papyrus_images/9063baf6873d90ec68a61c9bf8dbee8585bfdf365737a50602e13a79afaa8658.png)

Sign email before sending

Sign email before sending

在发送加密邮件时，用户会在本地创建随机的对称密钥，使用此密钥对邮件内容进行加密，然后使用接收者的公钥加密此密钥。接收到加密邮件时，用户需要使用钱包解密出此封邮件的密钥，然后使用此密钥对整封邮件进行解密。所有加密和解密都是在前端进行的，邮件内容在上传至服务器和传送过程中都处于加密状态。

![Decrypt MetaMail](https://storage.googleapis.com/papyrus_images/9bc6d65a0b5e3d7cdaffbfaa0f590eecc5c493ced2ee707e33cbba7877c16424.png)

Decrypt MetaMail

Decrypt MetaMail

Conclusion
----------

本文介绍了电子邮件存在的安全性与垃圾邮件问题，在Web3中使用MetaMail能够方便地进行邮件签名、验证和端到端的加解密，并且能够减少垃圾邮件。我们实现了MetaMail供用户使用，在未来，我们会将MetaMail的代码与协议开源，以方便用户搭建自己的MetaMail服务。

---

*Originally published on [MetaMail](https://paragraph.com/@metamailink/metamail-getting-secure-email-with-web3-2)*
