Description

3mail was built with the following goals: **1) A simple to use email client** 2) Fully decentralized: identity, storage, alerting 3) Trustless: no privileged nodes aims. By utilizing IPFS, ENS, P2P, and DID at its core, 3mail implements a decentralized solution to securely replace centralized email services. Using 3mail is simple, you can use our web client and a pre-configured local node. You can alternatively use your current mail client, our local smtp and imap bridge, and a pre-configured local node. The local node is called "relay-threemail". That node will bring up Custom SMTP Server, Ceramic, OrbitDB, and Web Socket API, which will connect to the IPFS decentralized network. When the user visits 3mail online, it will ask them to log in with MetaMask, they will quickly see their 3mail messages from anyone who is communicating with them. Additionally, they can send and receive messages in real-time using the IPFS PubSub mechanisms. Finally, they can let any local email client connect to the "relay-threemail" SMTP Server to send and receive email from the 3mail network. 3mail allows users to use a truly decentralized secure email network, and allows them use use their own client tools to make onboarding easy and simple. ENS is the core identity used to send mail to any 3mail users, so email identifiers are as simple as “bob@cemail.eth

3mail showcase

How it's made

We used the following technologies: - SMTP TypeScript: Creates a SMTP Server locally that will receive and send messages to Ceramic / OrbitDB. - ENS: hello@ryan.eth is an example mail address. To make that work, a TEXT record is added that points to your unique DID (decentralized identifier). Every time a message comes to the system, we resolve the name of the ENS domain, and extract the DID from the text record to write / listen on that document. - IPFS: The main communication medium. Ceramic and OrbitDB use IPFS as its communication layer. - Ceramic: Connects to IPFS creates a Document controlled by the sender. This is where all the mail for the sender will go. - OrbitDB: Connects to IPFS and will act as a PubSub notifications to tell you have received mail. Then once the mail notification has been received, the client will read it from their Ceramic document. - React: Front-End mail client that connects to 3mail network. More in depth research on the end to end idea described here, that explains the tech stack above in gritty details.: https://github.com/mohamedmansour/w3c-cemail/blob/main/research/cemail.md