ZOYKUHot Board

graphicmeat/mail-vault-appDocumentation

Local private email backup

Quick Install
git clone https://github.com/graphicmeat/mail-vault-app.git

MailVault icon

MailVault

Read your mail. Keep your mail.
A local-first email client that files every message on your own disk as a plain .eml, so you can delete it from the server and still keep your copy.

Download · Try it in your browser · Website · Report an issue

Latest release Downloads across all releases GitHub stars Platforms: macOS, Windows, Linux Built with Rust and Tauri


Inbox with the reading pane open

MailVault is a full email client with a vault behind it. You read, search, thread and reply the way you would in any client, and every message you keep is written to your own disk as a standard .eml file in a Maildir tree, readable by anything. When the provider deletes it, expires it, or asks you to pay for storage, your copy does not care.

Why MailVault?

  • Your mail outlives the server. Every message you keep is a plain .eml on your own disk, and it stays there after the provider deletes it.
  • You can see what is safe. Each row shows whether a message is on the server, in the vault, in both, or only on your disk.
  • Clear the server without losing anything. Archive and delete in one step (Premium), or thousands at once by year, with crash-safe recovery. Archive, Back up & Delete (Premium) also copies each message to your backup drive and checks both copies before anything leaves the server.
  • Find anything, offline. SQLite FTS5 search over the whole vault: 50,000 messages searched in under 15 ms in our test.
  • No lock-in. Maildir and MBOX, readable by Thunderbird, Apple Mail or grep.
  • Private by default. No account to create, no sync service in the middle, no telemetry. Credentials stay in your OS keychain, and AI can run on your own machine.
  • One-click sign-in. Gmail, Microsoft 365 and Outlook.com through OAuth, plus any IMAP server.
  • Signed and self-updating. Notarised on macOS, signed on Windows, on the Snap Store for Linux, and the core stays free.

Platforms

macOS macOS 11 or later, Apple Silicon and Intel. Signed, notarised .dmg that updates itself through Sparkle.
Windows Windows 10 or 11, 64-bit Intel or AMD. Signed installer (-setup.exe).
Linux x86_64 and aarch64: .deb for Ubuntu 22.04+ / Debian 12+, or the Snap Store. Wayland and X11.

Every build is on the latest release. Accounts: any IMAP server, plus Gmail and Microsoft 365 through OAuth2 and Outlook.com over IMAP (the default) or Microsoft Graph, picked when you add the account.

Features

Mail, properly

  • One-click sign-in - Google and Microsoft 365 OAuth2, plus IMAP (default) or Microsoft Graph for Outlook.com. Everything else is plain IMAP, with server auto-detection from SRV records, Mozilla autoconfig and MX fallback.
  • Threaded conversations - JWZ threading, quote folding, signature folding, oldest- or newest-first.
  • Compose that behaves - templates, contacts picker, attachments, undo send from 15 seconds to 5 minutes, and an outbox that stages locally so a failed send is recoverable rather than lost.
  • Offline full-text search - SQLite FTS5 over every message on your disk. A trigram index matches any part of a word and ignores accents, and a second index covers Chinese, Japanese and Korean. Filter by sender, date range, attachments or folder, with history and suggestions.

Explorer and Insights

Explorer browsing a mailbox by year and month Insights sender map, frequent contacts drawn larger

  • Explorer - switch from List to browse by Date, Sender, or Date → Conversation. Open year, month and optional day groups, follow breadcrumbs, search the current group, or select its messages together. Your view and place are remembered.
  • Insights - a sender map, sender timeline, and daily activity calendar built from local headers. Frequent contacts have larger bubbles; recent contacts sit closer to you. Filter by account, date, direction, or likely automated mail, then open matching messages.
  • Contacts - a built-in address book kept on your computer: one card per person with how much mail you exchanged and the full correspondence by date, a review queue for addresses found in your mail, merge you can undo, and vCard import and export. It is included in backups and account transfers, and is not synced with any provider.

The vault

Per-message state icons: on the server, in the vault, or local-only
  • Maildir + .eml - one standard RFC 5322 file per message: headers, body, inline images, attachments. Readable by Thunderbird, Apple Mail, grep, or anything else you own.
  • Per-message state, on the row - whether a message is on the server, in the vault, in both, or local-only because the server no longer has it.
  • Delete from the server with confidence (Premium) - archive first, then delete, in one operation. The local copy stays. Archive, Back up & Delete adds a second, checked copy on your backup drive first, and keeps on the server anything either check does not confirm. Archiving on its own, and deleting from the server on its own, stay free.
  • Portable by construction - the mail is plain files: back the folder up, move it to another machine, mirror it to an external drive, or export the lot as MBOX for Thunderbird or Apple Mail. No lock-in.
  • Choose how much mail stays on this computer - Settings > Storage > Download mode, with a free choice per account too. On Demand fetches a message when you open it and keeps nothing; Keep Recent, the default, keeps the last 1, 3, 6 or 12 months; Index Only keeps a search index of that period and downloads a message in full only when you open it. Hoarder (Premium) downloads every folder and all history in the background and keeps it. Backups and archived mail are never removed by any mode, and a lapsed Premium subscription never deletes anything.

Threads, or chat

A conversation rendered as chat bubbles

Conversations stack chronologically with quotes folded, or switch the whole client to chat view: sent and received mail merged into one continuous thread of bubbles, per-sender avatars, progressive body loading. Same mailbox, two ways to read it.

Organise it your way

Auto Tags rules written in plain English A custom Priority field on an invoice email

  • Auto Tags - rules, written in plain English, that tag matching mail as it arrives. They run on your computer unless you point them at a remote provider, and never move or delete anything on the server.
  • Saved views and custom fields - filters that behave like inboxes, and your own fields, such as a priority, on any message.
  • Notes to Self - a board, above your views, of mail you sent yourself from any account. Put a #tag in the subject for a column of its own; everything else sorts into Links, Files, Photos or Notes by what it holds. Star a note to keep it on top, or mark it done to clear it from the board without touching the server.
  • AI writing help - draft, shorten, change tone, or summarise a thread with a model that runs on your computer, or one you choose.
  • Layouts and themes - three- or two-column, resizable panes, light and dark, customisable keyboard shortcuts.

Bulk operations

Bulk selection with date-range presets

Pick a year or a custom range, then archive, delete, or archive-and-delete thousands of messages in one pass, with a live progress bar, a cancel button, and crash-safe recovery if the machine gives up halfway. Archive & Delete and Archive, Back up & Delete (which also copies to your backup drive and checks that copy) are Premium; archive and delete on their own are free.

Security

Suspicious link warning showing link text against its real destination
  • Link safety - a warning when a link's text is not where the link goes, with both URLs shown side by side before anything opens.
  • Sender checks - SPF, DKIM and DMARC badges, display-name impersonation warnings, and From/Reply-To mismatch alerts.
  • Tracker blocking (Premium) - the hidden pixels that report when you opened a message are found on every mail, named on the row, and stripped out of the HTML before it renders. Detection is free; removal comes with a subscription.
  • Ask before loading external content - a switch in Settings > Security: an email's remote images and other outside content stay unloaded until you choose Load external content for that message.
  • Privacy mode (Premium) - one click in the sidebar (Cmd/Ctrl+Shift+P) masks names, email addresses, phone numbers and postal addresses across the app, so you can record your screen or read mail in public. Hold Option (Alt) to peek. Avatars and text inside images are not masked.
  • Redacted export - the "Redact sensitive info" option in Export blurs or blacks out the same details in exported images and HTML, and strips links and remote images from the HTML.
  • Credentials in the OS store - macOS Keychain, Windows Credential Manager, Linux Secret Service. Never in a config file.
  • Sandboxed on macOS, no cloud service, no tracking, no telemetry.
  • Found a vulnerability? Report it privately as described in SECURITY.md, not in a public issue.
  • Network Activity - Settings > Privacy & security lists the connections MailVault and its background helper make, newest first: mail sync and sending, sign-ins, DNS lookups, backups and more, with host, purpose, account, and data sent and received, plus a world map of the countries those connections went to (placed offline with DB-IP's free country database). It does not list web content inside emails, requests the app window makes itself, or app update downloads (and, on macOS, the update check). The history is saved on your computer only, kept for 24 hours, 7 days (the default), 2 weeks or a month, then deleted.

Multi-account

Unified inbox across three accounts

Unlimited accounts, each with its own display name and colour, all mergeable into one unified inbox. Switching is instant (state is cached per account), and each account remembers the folder you left it in. Sender insights show your exchange history with a contact.

Built for the long run

Download 53 MB macOS disk image, 20 MB Windows installer, 30 MB Linux .deb (2.16.0)
Memory about 345 MB on a Mac with a 10,000-message inbox loaded (2.16.0), about 200 MB in a test build of the next release; up to about 340 MB for a few seconds while the window first loads or a large inbox opens (measured, see below)
Startup under a second
Search SQLite FTS5, offline: 50,000 messages searched in under 15 ms in our test
Sync CONDSTORE delta sync: zero IMAP calls when nothing changed
Bandwidth COMPRESS=DEFLATE, 70–80% less on the wire
Lists virtual scrolling, comfortable past 17,000 messages

How the memory figure was measured: macOS physical footprint, the number in Activity Monitor's Memory column, added up over every process MailVault runs. That is the app, its background helper and the WebKit processes that draw the window, and the WebKit content process is most of it, about 130 MB. The app itself was about 25 MB and the helper about 17 MB; in 2.16.0 they stayed at about 85 MB and 107 MB, largely memory they had freed but not given back. Two test accounts, one with 50 messages and one with 10,000, on an M4 Mac mini with 16 GB and an optimized build, read after loading the large inbox, after scrolling through it and after ten idle minutes. More accounts and larger folders take more: on a real Mac with about 20 accounts, 2.16.0 used about 440 MB for the app and helper processes alone, not counting the WebKit content process. About 266 MB of that was memory the app owns without mapping it, most likely graphics memory the web view charges to the app; the test setup above does not reproduce it, and the next release does not change it.

A background helper keeps mail syncing with the window closed, and the app updates itself with an in-app changelog.

Premium

Scheduled Send picking a date, time and time zone Time Capsule showing a mailbox as it was on an earlier date

The client is free forever: reading, composing, search, threading, Explorer, Insights, Auto Tags, Notes to Self, and unlimited manual archiving. Premium adds the parts that need a scheduler or a server: the one-step Archive & Delete and Archive, Back up & Delete for removing archived mail from the server, automatic backups with health verification, cross-account migration and moving a folder to another account, a guided server change with DNS health checks, cleanup rules driven by a local Naive Bayes classifier, attachment search, and Time Capsule snapshots of a mailbox as it was on any past date. Hoarder, a download mode that fetches every folder and all history in the background and never evicts it, is Premium too; the free download modes, On Demand, Keep Recent and Index Only, cover everyone else. Focus sessions, a timer that covers the window and holds notifications for the minutes you choose, are Premium too. So are Privacy mode, which masks the names, addresses and phone numbers in the app while you share your screen, and Social export, which turns one email into a ready-to-post PNG, as a card or the whole app window, on a background, size and frame you choose, with sensitive info redacted by default. So is Scheduled Send: an email goes out at the exact date and time you pick, in any time zone, with the recipient's zone suggested from their last email; delaying a send by up to five minutes stays free. So is Portable MailVault: a copy on a USB stick or external drive that runs on any computer with your mail and accounts on the drive, locked with a password (Windows for now). Pricing is on mailvaultapp.com/pricing.

Building

npm install
npm run tauri dev

Release build:

npm run tauri build

The Rust core lives in src-core/, the Tauri shell in src-tauri/, the background sync helper in src-daemon/, and the React front end in src/. Tests:

npx vitest run
npm run test:e2e

The E2E suite drives the real app against a scripted mock IMAP and SMTP server (src-mock-imap/): no credentials, no network, no chance of touching a real mailbox, and a send that can either succeed or be refused on demand. Packaging, signing and notarisation are documented in BUILDING.md.

The browser demo and the screenshot pipeline are documented in BUILDING.md.

Acknowledgements

MailVault stands on the work of these projects and their contributors: Tauri, React, Zustand, TipTap, SQLite through rusqlite, async-imap, mailparse and lettre.


Made by Graphic Meat

Document mirror archived from official upstream repository · Visit upstream GitHub
Snapshot date: 2026-11-11