
# TutaBridge
**Use [Tuta](https://tuta.com) encrypted email in Thunderbird, Apple Mail, or any standard mail client.**
A local IMAP/SMTP bridge that talks to Tuta's API and handles the end-to-end
encryption transparently, so your favourite desktop client just works.
[](https://github.com/spartanz51/tutabridge/actions/workflows/ci.yml)
[](https://github.com/spartanz51/tutabridge/releases)
[](LICENSE)
[](#download)
[](#build-from-source)
[**Download**](#download) · [**Getting started**](#getting-started) · [**Features**](#features) · [**Backup**](#backup) · [**Architecture**](#architecture)
> ## ⚠️ Please read before using
>
> **TutaBridge goes against Tuta's end-to-end philosophy, and Tuta does not
> endorse it.** Tuta has no official bridge on purpose. Decrypting your mail
> outside their apps and handing it to a local mail client widens your attack
> surface: a compromised device, a shady client add-on, or a buggy MCP client
> now sees your messages in plaintext. Tuta has explained this stance publicly
> ([1](https://www.reddit.com/r/tutanota/comments/tewuzq/comment/i0uu74i/),
> [2](https://www.reddit.com/r/tutanota/comments/cga5dv/can_we_please_get_an_imap_bridge/)).
>
> **So who is it for?** Advanced users who trust their own device but not
> necessarily the email provider, and who want to keep full control of their
> data: read it in any client, back it up to plain files, search it locally,
> automate it. The threat model is "I trust my machine, I just don't want to be
> locked into one vendor's apps." If that isn't you, stay on Tuta's official
> apps. The released binaries are also **not code-signed**, so your OS will warn
> on first launch (see [Download](#download)).
---
## Features
| | |
|---|---|
| 📥 **IMAP + SMTP** | Local TLS servers on `127.0.0.1`, so any standard mail client connects. |
| ⚡ **Realtime sync** | Tuta's WebSocket event bus pushes new mail, reads, moves and deletes; a heartbeat reconnects dead sockets automatically. |
| 🗂️ **Whole mailbox** | Every folder and message is listed, not just a recent slice. |
| 🔍 **Honest search** | Subject, sender and date search the entire mailbox; full-text body search via an encrypted on-disk index. |
| 📎 **Attachments** | Both ways. Incoming served as `multipart/mixed`, outgoing uploaded to Tuta on send. |
| 📝 **Folders & flags** | Drafts, custom and nested folders, move, trash, read/unread. |
| 🔐 **Encrypted cache** | Metadata in SQLCipher, bodies as individually encrypted files. Usable instantly on relaunch, only the delta is fetched. |
| 💾 **Complete backup** | Export every message to portable `.eml` files. |
| 🔑 **2FA (TOTP)** | Two-factor login supported. |
---
## Download
Download the app for your OS (see [all releases](https://github.com/spartanz51/tutabridge/releases) for the CLI binaries and checksums):
| OS | Desktop app |
|----|-------------|
| 🍎 **macOS** (Apple Silicon) | [Download `.dmg`](https://github.com/spartanz51/tutabridge/releases/latest/download/TutaBridge_0.1.0_universal.dmg) |
| 🪟 **Windows** (x64) | [Download installer `.exe`](https://github.com/spartanz51/tutabridge/releases/latest/download/TutaBridge_0.1.0_x64-setup.exe) |
| 🐧 **Linux** (x64) | [`.AppImage`](https://github.com/spartanz51/tutabridge/releases/latest/download/TutaBridge_0.1.0_amd64.AppImage) · [`.deb`](https://github.com/spartanz51/tutabridge/releases/latest/download/TutaBridge_0.1.0_amd64.deb) · [`.rpm`](https://github.com/spartanz51/tutabridge/releases/latest/download/TutaBridge-0.1.0-1.x86_64.rpm) |
The build is not code-signed, so the first launch needs one click to allow it:
* **macOS**: right-click the app, then **Open**, then **Open**.
* **Windows**: **More info**, then **Run anyway**.
* **Linux**: `chmod +x` the AppImage, or install the `.deb` / `.rpm`.
> Prefer the command line? Every release also ships a single **CLI binary** per
> OS (run it from a terminal; it has no extension, so double-clicking won't work).
---
## Getting started
1. **Open TutaBridge** and sign in with your Tuta address. Password and 2FA are
asked on the first run only; the session is saved to your OS keychain
afterwards.
2. Note the **bridge password** it shows. It is generated locally for your mail
client and is **not** your Tuta password.
3. **Add an account** in your mail client with the settings below, then accept
the self-signed certificate when prompted.
| | Server | Port | Security |
|---|--------|------|----------|
| **IMAP** (incoming) | `127.0.0.1` | `1143` | SSL/TLS |
| **SMTP** (outgoing) | `127.0.0.1` | `1025` | SSL/TLS |
**Username:** your Tuta address. **Password:** the bridge password from step 2.
Keep TutaBridge running while you use your mail client. It is the local server
the client talks to.
> Search runs in your mail client. Subject, sender and date cover the whole
> mailbox; full-text body search covers messages whose body has been downloaded
> (enable "keep every message body offline" for full coverage).
---
## Architecture
Syncer-driven, store-backed. The IMAP server never makes a network call to read:
```
Tuta API <- Syncer (background) -> MailStore (in-memory) <- IMAP server <- mail client
<- GUI (stats)
```
* The **syncer** pulls from the Tuta API and populates an in-memory `MailStore`,
backed by the on-disk encrypted cache.
* The **IMAP server** only ever reads from the store. It never makes an API call
for reads.
* The only IMAP-to-network calls are mutations: mark read/unread (`STORE \Seen`)
and trash (`EXPUNGE`). Sending goes through SMTP to Tuta's `DraftService` and
`SendDraftService`.
The storage key is derived from your Tuta session, so there is no extra password
to manage, and the cache is encrypted at rest.
---
## Backup
Export every email to a folder of plain `.eml` files, one per message, in a tree
mirroring your IMAP folders. It enumerates all mail from the server, not just
what is currently synced, so nothing is silently left out.
```