Repository navigation
Releases
v0.4.1
What's Changed
- fix(web): make mobile navigation reachable on phones by @Urdemonlord in #40
- fix(web): instant phone navigation, complete bottom bar on every page by @Urdemonlord in #41
- feat(packaging): Windows one-package install (zip + NSSM services) by @Urdemonlord in #42
- feat(packaging): automate Linux release upload, fill Homebrew hashes, bump to 0.4.1 by @Urdemonlord in #43
Full Changelog: v0.4.0...v0.4.1
v0.4.0
What's Changed
- feat(packaging): move the official one-package install into packaging/ by @Urdemonlord in #24
- fix(packaging): restore executable bits on packaging scripts by @Urdemonlord in #25
- feat(admin): create integration keys from the dashboard, store relay rejection reasons by @Urdemonlord in #26
- feat(web): integration docs as an in-app page, generated from docs/INTEGRATIONS.md by @Urdemonlord in #27
- feat(admin): DB-backed integration app registration via the admin dashboard by @Urdemonlord in #28
- feat(packaging): macOS tarballs (arm64 + amd64) with launchd services by @Urdemonlord in #29
- fix(packaging): restore executable bits on macOS scripts by @Urdemonlord in #30
- feat(packaging): upload macOS tarballs to the release on tag push by @Urdemonlord in #31
- feat(packaging): draft Homebrew formula for the macOS install by @Urdemonlord in #32
- feat(relay): multi-provider send failover (Resend, then Brevo) by @Urdemonlord in #33
- feat(compose): undo send with 10s server-side hold by @Urdemonlord in #34
- feat(compose): HTML compose with sanitizer and per-mailbox signatures by @Urdemonlord in #35
- feat(mailboxes): link multiple mail accounts to one login by @Urdemonlord in #36
- feat(admin): audit trail for logins, sends and admin actions by @Urdemonlord in #37
- feat(security): strict Content-Security-Policy for the app shell by @Urdemonlord in #38
- chore(release): bump version to 0.4.0 by @Urdemonlord in #39
Full Changelog: v0.3.0...v0.4.0
IRIS v0.3.0
What's new since v0.2.0:
- Threading: conversations are grouped in the inbox, with expandable threads.
- Contacts: address book with autocomplete in To, Cc and Bcc.
- Real-time notifications: new-mail toast over SSE, no polling while the stream is live.
- DMARC dashboard: scan aggregate reports, per-domain pass and fail, worst offenders.
- Temp inbox: extend by 1 hour (up to 5 times, 24h total) and delete the address.
- Admin dashboard: users, quotas, delivery status and temp inboxes.
- Admin actions: disable and enable users, revoke user sessions, revoke integration keys, delete temp inboxes.
- Nav icons: Admin, DMARC and Organize each have their own icon now.
Tests: 177 passing (cargo test --workspace), clippy clean, web typecheck and build clean.
One-package install (Debian/Ubuntu)
Installs IRIS, Stalwart and Caddy as one stack with automatic TLS:
curl -fsSL https://github.com/Urdemonlord/irisproject/releases/download/v0.3.0/install.sh | sh
Or download iris-mail-stack_0.3.0_amd64.deb below and install it with dpkg -i. The tarball is the same package for systems without dpkg. Full install guide: packaging/README.md in this repo.
IRIS v0.2.0
What's new
- Stars, labels, custom folders, and Sieve filters: from/to/subject rules that label, star, mark read, or move mail at delivery time, compiled to one
iris-filtersscript - Cloudflare Turnstile on the login form
- Race-condition fixes in filter and label handling: per-mailbox lock for filter mutations and label/folder deletes, Sieve script reactivation when destroy fails
Install
See README. The installer builds from source: ./scripts/install.sh
IRIS v0.1.0 — open source
IRIS v0.1.0 — open source
IRIS is a self-hosted webmail platform: permanent mailboxes plus anonymous 1-hour temporary inboxes, with a transactional email API for your own apps. Rust API + TypeScript web UI, JMAP to Stalwart.
Licensed dual MIT / Apache-2.0 — use it, fork it, host it.
Headline features
- Permanent mailboxes — sign in with your mail-server account; Inbox, Sent, Drafts, Archive, Trash; server-side search; compose with autosave drafts, reply/forward, attachments, raw view, DMARC report previews.
- Temporary inboxes — anonymous, receive-only addresses that live 1 hour, no sign-up.
- Transactional email API — scoped API keys let your apps send auth emails (verification, password reset, sign-in link) through IRIS.
- Separate HTML-mail origin — HTML bodies render in an isolated origin behind one-time tokens instead of the app origin.
- Generic configuration — integration registry, origins, and limits are all environment-driven; no hardcoded hosts.
Self-host
See README.md for the quickstart, full environment table, and architecture. Docs: docs/ (PRD, TRD, schema, roadmap).
Known limitations
- Load-more pagination is implemented but untested at scale (small mailbox in testing).
- No admin dashboard or audit trail yet — see ROADMAP.md.
- HTML compose is plain-text only for now.
Security issues: please use GitHub private vulnerability reporting, not a public issue — see SECURITY.md.