postage

Postage Mail

Postage is an email app for iPhone and Mac. Mail from people goes in one tab, and receipts, updates and promotions each go in their own.

I built it for my own email, and it sorts my Gmail from a server in my house. Now I'm opening it up to other people, starting with a beta.

Join the TestFlight beta

The beta opens soon. It's free.

The Primary tab, with only mail from people.
The Primary tab
Choosing when a message comes back: later today, tonight, tomorrow, the weekend or next week.
Snoozing a message
A list of senders with how many messages each has sent.
Clearing out a sender
Before drafting a reply, the app asks whether Saturday at 7 still works.
Drafting a reply

In the app

Every new message gets sorted into Primary, Transactions, Updates or Promotions. If it gets one wrong, you move it and tell it where that sender belongs from now on.

You can snooze a message until later today, tomorrow or next week. It comes back at that time, or sooner if the person replies.

The Clear the Inbox screen lists who has sent you the most mail, with a button to archive everything from each sender. Anything Postage moves shows up in History, where you can put it back.

If an AI model is connected, Postage can draft replies. It asks you a question or two first, then writes a draft for you to edit and send yourself. This part is optional, and the rest of the app works without it.

It needs a server

Postage doesn't sort your mail on my computers. It connects to a small server program that you run, on a computer at home or one you rent, and that program does the sorting. Your mail goes between your email provider and that server, so I never see it.

Setting up the server takes some comfort with the command line for now. Here's what's involved.

The server is the Sorting Facility, a Python service run with Docker Compose. It keeps one IMAP connection per account and sorts with a rules engine. Every move goes in an append-only audit log and an undoable History. It never expunges and never sends mail; the app sends, over SMTP or the Gmail API.

  • Each user's mail store is SQLCipher, keyed from a per-user data key that's wrapped by a box key kept outside data/ and outside backups.
  • The app reaches the server over Tailscale, or through an optional Cloudflare Tunnel with HPKE-sealed requests.
  • The model is any OpenAI-compatible endpoint, set by whoever runs the server. A model outside your network is used for writing only, unless you turn on sorting with it.
  • Alert contents are HPKE-sealed to a Secure Enclave key on the phone.
  • The server and alert relay are AGPL-3.0. The app is MIT.

On the Mac

The Mac app has the same tabs and History, with a sidebar, menus and keyboard shortcuts.

Postage on Mac: tabs in the sidebar, the message list and an open message.