Open source · Rust · MIT / Apache-2.0

Bulk iRedAdmin automation, from the desktop.

MailGrit is a cross-platform desktop app for creating, editing and deleting mail user accounts on iRedAdmin servers in bulk — even behind FortiWeb / WAF — through an embedded browser that performs a legitimate fetch inside the real session. No Node/JS toolchain: native WebView2/wry via Dioxus 0.7.

Windows Linux macOS ARM Dioxus 0.7 Rust 1.97.1, edition 2024 9 languages
5
Isolated workspace crates
9
UI languages, embedded at compile time
0
Bytes of unsafe (workspace forbid)
3
Platforms in CI: Windows, Linux, macOS ARM
01 / Features

Everything you need to manage mail accounts at scale.

A native panel on top of a real iRedAdmin session — no brittle cookie replay, no separate HTTP client that breaks behind a WAF.

CSV-driven bulk operations

Drive mass create / edit / delete from a CSV. BOM is stripped automatically, headers map flexibly case-insensitively, and hard row and length limits guard against accidental huge inputs.

Encrypted hash-chained audit log

Every operation is appended to a tamper-evident HMAC-SHA256 chain, encrypted at rest with streaming AEAD (XChaCha20-Poly1305). Nothing is silently altered.

Master-password key protection

Derives the audit-log key and export key via Argon2id (memory-hard KDF). The password is never stored; lose it and the audit log and encrypted exports stay locked.

Works behind FortiWeb / WAF

Requests run as a fetch inside the same webview that holds the legitimate session, so backend authentication held by the proxy just works — no cookie guessing.

9 languages, compiled in

English, Deutsch, Français, Español, Italiano, Português, Nederlands, Polski and Українська. Translations are embedded into the binary; your choice persists in config.toml.

Frameless, themed UI

A home-grown design system on CSS tokens: custom titlebar, dark/light themes with a toggle, symmetric card grid, modal confirmation for destructive ops and live progress.

02 / Security model

Built safe by default, enforced at compile time.

Security is a workspace policy, not a best effort: unsafe_code = "forbid", strict clippy, and supply-chain checks run on every supported platform in CI.

Policy that cannot drift

  • unsafe_code = "forbid" workspace-wide — no unsafe anywhere in the application crates.
  • Clippy correctness, suspicious, complexity, perf, pedantic, nursery and cargo groups all deny.
  • panic, unwrap_used, expect_used, indexing_slicing, arithmetic_side_effects all deny.
  • Supply chain: cargo-deny (advisories, bans, licenses, sources) plus cargo-audit.
  • Audit log at rest: streaming XChaCha20-Poly1305 AEAD; HMAC-SHA256 hash chain for integrity.
  • Master password: Argon2id memory-hard KDF; never stored, never logged.
Cargo.toml
# No exceptions: wry 0.53 returns HttpOnly cookies natively.
# Every application crate is audited under this policy.
[workspace.lints.rust]
unsafe_code = "forbid"

[workspace.lints.clippy]
correctness      = { level = "deny", priority = -1 }
suspicious       = { level = "deny", priority = -1 }
pedantic         = { level = "deny", priority = -1 }
unwrap_used      = "deny"
indexing_slicing = "deny"
arithmetic_side_effects = "deny"
panic            = "deny"
03 / Internationalization

Nine languages, shipped in the binary.

Translations are embedded at compile time with rust-i18n — no resource files to chase at runtime. Your selection is saved to config.toml.

en English English de German Deutsch fr French Français es Spanish Español it Italian Italiano pt Portuguese Português nl Dutch Nederlands pl Polish Polski uk Ukrainian Украюнська
04 / Quick start

One command to a release build.

MailGrit is a Cargo workspace; build the desktop app for your platform and run it directly.

bash
# Requires Rust 1.97.1 (pinned via rust-toolchain.toml, edition 2024)
$ cargo build --release -p mailgrit-app-desktop

# Windows
> .\target\release\mailgrit-app-desktop.exe

# Linux / macOS
$ ./target/release/mailgrit-app-desktop

On first launch a mailgrit-data/ folder is created next to the binary, holding all application files. Point it at your iRedAdmin URL, sign in once in the embedded browser, and the operations panel opens automatically.

05 / Architecture

Five crates, each testable in isolation.

A Cargo workspace where the domain, parsing, storage, security and UI layers are separated — cargo test -p <crate> runs each in isolation.

Workspace layout

  • core-domain — domain types (Newtype/Typestate), errors, limit constants, password policy.
  • core-csv — CSV parsing and validation with BOM stripping and hard memory limits.
  • core-storage — local SQLite: operation log and hash-chained audit log.
  • core-security — at-rest crypto: streaming AEAD, HMAC hash-chain, Argon2id KDF.
  • app-desktop — Dioxus 0.7 desktop app: login window, cookie handling, native RSX panel.
graph
# each crate compiles / tests in isolation
core-domain ─┬─ core-csv ────┐
             ├─ core-storage ─┤
             └─ core-security ┴─ app-desktop

Support MailGrit

MailGrit is free and open source. If it saves you time, consider supporting its development.

Donate