5.9 KiB
smolmail
A small, decentralised mail system where every message is encrypted end to end. It's simple enough that you can write your own client in an afternoon.
- One key is your identity. Back up 32 bytes and you've backed up everything.
- Only the recipient can read your mail. Servers store sealed envelopes they can't open.
- No middlemen. Your client delivers straight to the recipient's server.
Open webmail · Read the specification
How smolmail compares
| PGP email | smolmail | ||
|---|---|---|---|
| Server reads mail | Yes | No | No |
| Server sees sender | Yes | Yes | No |
| Spam filter reads mail | Yes | Partly | No |
| Relayed by other servers | Yes | Yes | No |
| Needs the internet | Yes | Yes | No* |
* Only when the server is also reachable over Reticulum. See "Beyond the internet" below.
Get started
Use webmail
Go to webmail.smol.place to register a @smol.place address and start sending encrypted mail. Nothing to install.
A browser client depends on the site that serves it, because the code is loaded fresh each time you open the page. For long-term use, a native client that pins our server key gives you stronger guarantees.
Use a native client
Connect to smol.place on port 1961, and pin this server key before you connect:
po3cxpzjrt73dypt2rplskbkywizr44afhqthaa5x47mfpe4kesq
Your client checks the key every time it connects, so it always knows it's talking to us and not an impostor.
Write your own client
The whole protocol is five operations and four well-known cryptographic building blocks, with no extensions and nothing to negotiate. SPEC.md has everything you need.
How it works
Your key is you
Your identity is a single 32-byte secret called the master. Your signing key, your encryption key and the key that lets people write to you all come from it. Back up the master and nothing else. You can print it on paper or scan it from a screen. (SPEC §2)
Your address
alice@smol.place short form, looked up on the server
smol://alice@smol.place/mfrggzdfmztwq2lknnwg23tpo… full form, carries alice's key
The short form is easy to type. The full form contains the key itself, so a contact you add from a link or QR code doesn't depend on any server telling the truth. To check a contact in person or on the phone, compare fingerprints: the first 20 characters of the key, read in groups of four. (SPEC §3)
Every message is sealed
Each message is locked with a key made for that message alone, then thrown away. The envelope names the recipient but not the sender, so the server can't see who writes to whom. Inside, the message is signed, so the recipient knows who wrote it and that nobody changed it. (SPEC §5)
Mail from strangers
Servers can't read your mail, so they can't filter spam by content. Instead, you give each person you correspond with an accept token. Mail that carries a token goes to your main mailbox. Mail without one goes to a small requests area that holds less and clears out sooner. Anyone can still write to you, but nobody can fill your mailbox. Your client decides what to do with each message after opening it. (SPEC §5.8)
Changing keys
If you need a new key, your old key and your new key both sign a handover, and your address moves to the new key. Mail sent to your old key still arrives, so your contacts can catch up in their own time. Clients show you when a contact's key changes. (SPEC §7)
What smolmail protects
The server learns which mailbox each message is for, its size, when it arrived and was collected, and the IP address you connect from. It doesn't learn the sender, the subject, the content or which messages belong together.
Some things smolmail doesn't protect:
- Your stored mail, if your master is stolen. Someone holding your master can read every message you've received that's still stored. Keep it safe. Your master can't open mail you've sent to others, because the key that sealed it was thrown away.
- Who wrote a message. Messages are signed, so a recipient can prove to others that you wrote it.
- Traffic patterns. Someone watching the network can see when you connect and how much you send.
Messages don't stay on the server forever. Mail in your main mailbox is kept for 30 days and mail in requests for 7 days, unless you delete it sooner. (SPEC §9, §10)
Beyond the internet
- Reticulum. A smolmail server can be reachable over the Reticulum network, which runs over LoRa radio, packet radio, serial links and more, with no DNS or internet needed. Your identity and messages work the same on either network. (SPEC §13)
- Tor. A server can run as a Tor onion service to hide where people connect from. No protocol changes are needed. (SPEC §9)
- Browsers and restricted networks. Browsers can't open a direct connection to port 1961, so smolmail can travel through a WebSocket on port 443. The encryption and the server key check stay exactly the same. (WS.md)
Run your own server
Servers never talk to each other. Each one is an independent mailbox store, so running one is a small job. Anyone with a smolmail address can write to anyone on any other server.
The reference client and server are written in Python, for both TCP and Reticulum. The gsmol bridge carries smolmail over WebSocket.
Specification
- SPEC.md: smolmail protocol, version 1.2. Message format, operations, trust model and conformance.
- WS.md: smolmail over WebSocket.
The specification is licensed under CC BY-SA 4.0.