MailLedger
Modern, cross-platform desktop email client built with Rust.
Features
- 📧 Native Email Client: Full-featured desktop email experience
- 🔒 Secure Authentication: Support for OAuth2 (Gmail, Outlook) and traditional login
- ⚡ Real-time Sync: IDLE push notifications for instant message updates
- 🎨 Modern Interface: Clean, responsive UI built with iced framework
- 🔐 Secure Storage: Credentials stored in system keyring
- 🌐 Cross-platform: Linux, Windows, and macOS support
- 🚀 Custom IMAP/SMTP: Built on production-quality Rust implementations
Why OAuth2?
Microsoft permanently disabled Basic Authentication for IMAP/SMTP in April 2026. MailLedger provides full OAuth2 support for modern email providers:
- ✅ Microsoft Outlook / Office 365
- ✅ Gmail / Google Workspace
- ✅ Yahoo Mail
- ✅ Custom OAuth2 providers
Traditional username/password authentication is still supported for providers that allow it.
Installation
From Source
# Clone the repository
git clone https://github.com/mqasimca/mailledger.git
cd mailledger
# Build the application
cargo build --release
# Run MailLedger
cargo run --release -p mailledger
System Requirements
- Linux: Wayland compositor (Gnome, KDE Plasma, Sway, etc.)
- Windows: Windows 10 or later
- macOS: macOS 10.15 or later
Quick Start
-
Launch MailLedger
cargo run --release -p mailledger
-
Add Your Account
- Click "Add Account" on first launch
- Choose OAuth2 (recommended) or traditional login
- Follow the authentication flow
-
Configure OAuth2 (if using Gmail/Outlook)
-
Start Using MailLedger
- Browse folders in the sidebar
- Read and compose messages
- Real-time sync with IDLE support
Features in Detail
Email Management
- Folder Navigation: Access all your IMAP folders
- Message List: View messages with sender, subject, date, and preview
- Message Reading: Full HTML and plain text support with inline images
- Compose: Create and send new messages
- Reply/Forward: Quick response actions
Security
- OAuth2 Support: Secure, token-based authentication
- System Keyring: Credentials stored using OS-native secure storage
- TLS Encryption: All connections use rustls for secure communication
- No Password Storage: OAuth2 means no passwords in the app
Performance
- Real-time Updates: IDLE monitoring for instant message notifications
- Efficient Sync: Only fetches what's needed
- Responsive UI: Built with iced for smooth 60fps rendering
- Fast Startup: Optimized binary with LTO and strip
Architecture
MailLedger is built on a modular architecture:
Development
Building
# Debug build
cargo build -p mailledger
# Release build (optimized)
cargo build --release -p mailledger
# Run with logging
RUST_LOG=debug cargo run -p mailledger
Testing
# Run all tests
cargo test --workspace
# Run specific crate tests
cargo test -p mailledger-imap
Code Quality
# Format code
cargo fmt --all
# Lint with Clippy
cargo clippy --workspace
# Check all together
cargo fmt --all && cargo clippy --workspace && cargo test --workspace
Platform Support
Linux
- Display: Wayland only (no X11)
- Keyring: GNOME Keyring or KWallet via Secret Service
- Tested on: Gnome, KDE Plasma, Sway
Windows
- Minimum: Windows 10
- Keyring: Windows Credential Manager
- Graphics: DirectX 12
macOS
- Minimum: macOS 10.15 (Catalina)
- Keyring: macOS Keychain
- Graphics: Metal
Configuration
Configuration and data are stored in platform-specific directories:
- Linux:
~/.config/mailledger/ and ~/.local/share/mailledger/
- Windows:
%APPDATA%\mailledger\
- macOS:
~/Library/Application Support/mailledger/
Roadmap
Contributing
Contributions are welcome! Please read the CLAUDE.md for development guidelines.
License
MIT License - see LICENSE for details.
Acknowledgments
Built with: