MailFlow v4.3.0
This release adds personal API tokens, so scripts and tools such as an MCP server can use MailFlow without your password. It also asks you to confirm before a single sign-on identity is linked to your account, keeps a draft's attachments when you reopen it, and fixes printing in the desktop app. Thanks to @Monkey7539 for API tokens, the link confirmation and the sign-in fixes, to @salmonumbrella for the Gmail identity fix and the test timing fix, to @dcoffin88 for the print fix, to @amartidandqdq for draft attachments in the API, and to @Azathoth88 for bringing the contributor notes up to date.
New
- API tokens (#617). Settings → Security has a new API tokens card. A token has scopes: Read lists, reads and searches your mail; Organize marks read, stars, archives, moves, snoozes and sets categories; Draft saves new drafts for you to review. A token can never send, delete or change settings, and nothing it does can move mail into Trash or Junk. Creating one asks for your password, your authenticator code or a fresh single sign-on, and the token is shown once. You can see when each token was last used and revoke it at any time. Tokens are off by default: an administrator turns them on with the switch on the same card, and turning it off stops every user's tokens at once without deleting them.
- Confirm before linking a sign-in provider (#714). Linking a single sign-on identity to your account now asks for the same confirmation as creating a token: your password, your authenticator code, or a fresh single sign-on. It counts for 5 minutes and for one link. A linked identity signs in without your password or two-factor code, so an open session on its own can no longer add one.
- Attachments when saving a draft through the API (#721).
POST /api/mail/draftaccepts up to 5 files, 15 MB in total, for scripts signed in as you. API tokens still save plain text drafts only.
Fixes
- Reopening a draft from Drafts. A draft with attachments, saved in another mail app, opened from the Drafts list without its attachments, and saving it replaced it with a copy that had none. It now opens with its attachments, and if MailFlow can't fetch them, it won't save over the original.
- Deleting a conversation (#720). Deleting a conversation from the Inbox could permanently delete messages of it that were already in Trash. MailFlow now picks out the Trash copies by the same rule the server uses when it deletes, so those are left alone.
- Printing in the desktop app (#693). Both print buttons now work in the Windows, macOS and Linux apps.
- Gmail messages across labels (#722). MailFlow now stores Gmail's own message id, so a Gmail message keeps one identity when it's copied or moved between labels. Other providers are unaffected.
- Signing in after the screen lock (#730). When a session expired behind the screen lock, the next visit could try to reopen the message that was open before, with nobody signed in. It now reopens it only after you sign in.
Upgrading
ghcr.io/maathimself/mailflow-backend:latest points at 4.3.0, published for amd64 and arm64. Two database migrations run on startup: one adds the API token tables, the other a column for Gmail's message id. Both are quick. No compose file changes since 4.1.0.
MailFlow is built and maintained by one person. If it's useful to you, you can support it on GitHub Sponsors or Ko-fi. Using MailFlow in a business? A business license supports development too. Thank you to everyone who already does.