discover · compare · collections · requirements · contribute · feed · watching · stats · help with your tokens
ZIDAN44/mailcraft · source
Snapshot 0 · 2026-11-04T12:47:28Z · Rust · Apache-2.0
Content fingerprint
56e2572c7d72121a51076031122a7349e91e6a241151fe8faee4d7753d70effeGitHub description at capture
An open-source, clean-room, local-first alternative to Microsoft Outlook in pure Rust
README at capture
<h1 align="center">MailCraft</h1> <p align="center"> <b>Local-first email: an open-source, clean-room alternative to Microsoft Outlook, written in Rust.</b><br> <i>By the ArtCraft team. Tracked in <a href="https://github.com/storytold/artcraft/issues/2177">storytold/artcraft#2177</a>.</i> </p> <p align="center"> <a href="https://github.com/ZIDAN44/mailcraft/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/ZIDAN44/mailcraft/actions/workflows/ci.yml/badge.svg"></a> <img alt="License: MIT OR Apache-2.0" src="https://img.shields.io/badge/license-MIT%20%2F%20Apache--2.0-0e7c86?style=flat-square"> </p> <p align="center"> <img src="docs/images/reading.png" alt="MailCraft with the sample mailbox: folder pane, ribbon, the Inbox grouped by date and the reading pane" width="100%"> </p> <table> <tr> <td width="50%"><img src="docs/images/search-dark.png" alt="Dark mode with a search across all mailboxes" width="100%"></td> <td width="50%"><img src="docs/images/compose.png" alt="Writing a reply in the reading pane" width="100%"></td> </tr> </table> MailCraft gives you the everyday Outlook mail workflow with your own mail servers. It keeps a copy of your mail on your computer, so it works offline. ## Features - **Familiar:** three panes, a ribbon and the usual Outlook shortcuts. Drag messages onto folders. - **Accounts:** IMAP or POP with SMTP, JMAP, and Exchange Online (Graph) or on-premises (EWS). Sign in with Gmail or Microsoft 365, see *All Inboxes*, and open or export `.pst` files. - **Works offline:** every folder is kept on disk and synced in the background. Changes you make offline go to the server when you reconnect. - **Reading and writing:** conversations, formatted HTML, picture thumbnails, rich-text replies, signatures, drafts, an Outbox, **Print** and **Save as PDF**. - **Organising:** archive, flag, pin, snooze, categories, Focused and Other, rules, and Undo. - **Search:** works offline, with `from:`, `subject:`, `has:attachment`, `is:unread` and more. - **Calendar and people:** day, week and month views, meeting invitations, an address book, and CalDAV/CardDAV. - **Private and secure:** MailCraft talks only to your servers, always over TLS. Passwords stay in the system keychain. Remote pictures load only when you ask. S/MIME and OpenPGP sign and encrypt, and the message you're writing says whether everyone in it can receive it encrypted. - **Everywhere:** Windows, macOS, Linux and the browser (JMAP accounts only), in 15 interface languages. - **Scriptable:** every action is a command with an id. The ribbon, shortcuts, the CLI and `--cmd` all run the same commands. ## Install Download an installer from the [Releases](https://github.com/ZIDAN44/mailcraft/releases) page: - **Windows:** `.msi`, or a portable zip. - **macOS:** `.dmg`. - **Linux:** AppImage, `.deb`, `.rpm`, Flatpak or `.tar.gz`. - **FreeBSD:** a tarball. To run MailCraft portably, put a `portable.txt` file beside the app. It then keeps its data in a `MailCraftData` folder next to it. ## Build and run ```bash cargo run --release -p mailcraft -- --sample # local sample mailbox; drop --sample to add an account cargo run -p mailcraft-cli -- commands # CLI: add, sync, list, read, search, send, run cd apps/mailcraft-web && trunk serve # browser: http://127.0.0.1:8774/?sample ``` - The CLI reads your password from `MAILCRAFT_PASSWORD`, or asks for it. It never stores it. - MailCraft keeps its data in `%APPDATA%\MailCraft` (Windows), `~/Library/Application Support/MailCraft` (macOS) or `~/.local/share/mailcraft` (Linux). To use another folder, pass `--data DIR` or set `MAILCRAFT_DATA`. - To put the web build on your own site, see [hosting the web build](packaging/web/README.md). ## Documentation - [What each version added](CHANGELOG.md) - [What comes next](ROADMAP.md) - [What's still missing](docs/gaps.md) - [How MailCraft is built](docs/architecture.md) - [How sync works](docs/sync.md) - [How test builds update themselves](docs/updates.md) - [Microsoft and Google sign-in](docs/oauth.md) - [Hosting the web build](packaging/web/README.md) ## Contribute - Start with [how MailCraft is built](docs/architecture.md). - Follow the project rules in [CLAUDE.md](CLAUDE.md): no crashes, no Microsoft assets, clean room. - Run `cargo xtask ci` before every commit. - To fuzz the parsers, see [fuzzing](fuzz/README.md). - The installer scripts live in [`packaging/`](packaging). [`storytold/craft-common-actions`](https://github.com/storytold/craft-common-actions) runs them, and `release.yml` runs on the `release` branch. ## License and credits MailCraft is dual-licensed under MIT OR Apache-2.0. It is built on [`mail-parser`](https://github.com/stalwartlabs/mail-parser), [`mail-builder`](https://github.com/stalwartlabs/mail-builder), [`imap-proto`](https://github.com/djc/tokio-imap), [`lettre`](https://github.com/lettre/lettre), [`rustls`](https://github.com/rustls/rustls), [`html2text`](https://github.com/jugglerchris/rust-html2text), [`hayro`](https://github.com/LaurenzV/hayro) and [`egui`](https://github.com/emilk/egui). `.pst` files go through [`outlook-pst-rw`](https://github.com/dongs0104/outlook-pst-rs), a fork of Microsoft's [`outlook-pst`](https://github.com/microsoft/outlook-pst-rs), used via [ZIDAN44/outlook-pst-rs](https://github.com/ZIDAN44/outlook-pst-rs). Microsoft Outlook is a trademark of Microsoft. MailCraft is not affiliated with Microsoft and uses none of its code, icons or assets.