KanjiG 20bfd2cf6b Initial commit: Outlook-competitor desktop mail client
Tauri v2 (Rust backend, React/TypeScript frontend). IMAP/POP3/SMTP core,
Google OAuth (mail/calendar/contacts sync), CalDAV, local calendar with
recurrence, rules engine, contacts, tasks, unified inbox, context menus,
drag & drop, snooze, templates, and more.
2026-07-28 20:56:05 +02:00

Mail Client

Ein nativer Desktop-Mail-Client (Tauri + Rust + React/Tailwind) mit eigenem IMAP-, POP3- und SMTP-Backend. Mehrere Konten (Gmail, Outlook, Yahoo, iCloud, beliebige custom IMAP/POP3-Server), Passwörter liegen im System-Keychain (nicht in einer Datei).

Setup (einmalig)

Systempakete für den Tauri-Build unter Linux:

sudo apt update && sudo apt install -y libwebkit2gtk-4.1-dev libssl-dev libdbus-1-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev libsoup-3.0-dev build-essential curl wget file pkg-config

Rust-Toolchain: mind. 1.77 (per rustup, siehe https://rustup.rs).

Entwicklung starten

cd mail-client
npm install
npm run tauri dev

Das öffnet das App-Fenster mit Hot-Reload für Frontend und Backend.

Produktions-Build

npm run tauri build

Konto hinzufügen

Beim Hinzufügen eines Kontos über die Sidebar (+) ein Provider-Preset wählen. Für Gmail und Yahoo wird ein App-Passwort benötigt (nicht das normale Account-Passwort):

  • Gmail: Google-Konto → Sicherheit → 2-Faktor-Authentifizierung aktivieren → App-Passwörter
  • Yahoo: Account Security → App-Passwörter generieren

Architektur

  • src-tauri/src/imap_client.rs — IMAP (Ordner, Nachrichtenliste, Volltext) via imap + native-tls
  • src-tauri/src/pop3_client.rs — handgeschriebener minimaler POP3-Client (TLS, USER/PASS/LIST/TOP/RETR/DELE)
  • src-tauri/src/smtp_client.rs — SMTP-Versand via lettre (implizites TLS oder STARTTLS)
  • src-tauri/src/db.rs — SQLite-Cache für Nachrichten (Offline-Ansicht, schnelles erstes Laden)
  • src-tauri/src/accounts.rs — Kontoverwaltung, Passwörter im OS-Keychain (keyring crate)
  • src/ — React/Tailwind-UI: 3-Spalten-Layout (Sidebar, Nachrichtenliste, Lesefenster) + Compose-Modal

Bekannte Einschränkungen (MVP)

  • POP3 verwendet die Server-seitige Nachrichtennummer als ID (keine stabile UIDL-basierte ID) — für ein Minimal-POP3-Setup ausreichend, aber nicht robust gegenüber Nachrichten-Neuordnung zwischen Sessions.
  • Gmail/Outlook/Yahoo laufen über klassisches IMAP+Passwort-Login, nicht OAuth2 (einfacher Einstieg, funktioniert mit App-Passwörtern; für einen "Verified by Google"-OAuth-Flow müsste man eine Google-Cloud-App registrieren).
  • Kein Ordner-Unread-Counter (Sidebar zeigt aktuell 0), keine Volltextsuche, keine Regeln/Filter.
  • HTML-Mails werden in einem sandboxed <iframe> ohne Skriptausführung gerendert; externe Bilder werden aber nachgeladen (kein Tracking-Pixel-Blocker).
S
Description
Outlook-competitor desktop mail client (Tauri v2, Rust + React)
Readme
832 KiB
2026-07-28 19:27:51 +00:00
Languages
TypeScript 62.2%
Rust 36.2%
Shell 1.2%
CSS 0.4%