Received by Cloudflare, sent by your provider, kept on your server

Mail that lives at home.

Your domains, your server, no mail server to babysit. Accounts are handed out by whoever runs this server.

Nothing listens at home.

Cloudflare takes the mail at the edge and a small worker hands it to this server. No open port, no mail server to patch.

  1. SenderAny mail serverMX sodi.email
  2. EdgeCloudflare Email Routingsodi-inbound worker
  3. Signed hand offThis serverapi.sodi.email/ingest
  4. Read anywhereWeb, desktop, Androidin.sodi.email

Server offline? The worker parks the message in R2 and this server collects it within a minute of coming back.

  • No port open at home

    The server sits behind a Cloudflare Tunnel. Every hand off is signed, and one older than five minutes is refused.

  • Offline is not lost

    Mail waits in a bucket while the server is down. Nothing is deleted until you delete it.

  • One interface, three clients

    The web inbox, the desktop app and the Android app speak the same API to the same server.

Keep the inbox. Lose the mail server.

Everything needed to receive, send and keep your own mail

Running a mail server

  • Port 25 blockedYour internet provider refuses outbound mail from home.
  • Listed on a blocklistYour address was flagged. Mail to large providers bounces.
  • DKIM signature failedAfter the key rotation last night.
  • Disk 97% full/var/spool/mail

Running sodi

Delivered 38 messages today

Example figure

An address for every sign up

(Your real address stays out of it.)

Show an address kind

One mailbox per account

Created by the admin in the panel. It sends, receives and keeps your folders on the server.

[email protected] Sends and receives

Aliases you make yourself

Up to 5 by default. They land in your inbox and can be picked as the sender when you write.

Pick a lifetime, then forget it

A temp address lives 5 to 30 minutes and only receives. When the time is up, the address and every message in it are deleted.

  • Mailbox

    created by the admin

    1 per account

    SendsReceivesFolders

  • Alias

    made by you, lands in your inbox

    5 by default, set in the panel

    Can sendOwn sender name

  • Temp address

    receive only, then gone

    5 to 30 minutes, you choose

    Receive onlyDeleted with its mail

Run by one person. Used by a few.

The panel is the only control surface. Nobody edits a config file after the first boot.

  1. 09:41Harbour Office, Mooring fees for OctoberReceived
  2. 09:38To Mara Lind, Re: Photos from the weekendSending
  3. 09:12[email protected], Your code is 482 019Received
  4. 08:55To the tax office, Receipts 2026Delivered

Every message has a state

Queued, sent, delivered, or bounced with the reason. Outgoing mail retries until your provider takes it.

One panel for all of it

Domains, accounts, providers, credentials, the worker deploy, limits and the audit log. Admin sign in needs a second factor.

Private by default

Remote images stay blocked until you allow them, per message or per sender. No third party scripts.

Web, Windows, Linux, Android

Pick the server by domain or IP and sign in. Unread counts follow you.

  • in.sodi.emailweb
  • DesktopWindows, Linux
  • Androidnative

Your mail, on your hardware.

Got an account from the person who runs this server? Sign in on the web, or pick this server in the desktop and Android apps.