Bulwark is a self-hosted webmail suite that speaks JMAP (RFC 8620) natively and pairs with Stalwart Mail Server. Mail, calendar, contacts, and files share one login, one settings store, and one admin dashboard.
- Mail: threading, a unified inbox, full-text search, Sieve filters, S/MIME, and templates
- Calendar: month, week, day, and agenda views. Drag an event to reschedule it; iMIP invitations go out on create and update.
- Contacts: several address books, groups, vCard import/export, and autocomplete in the composer
- Files: Stalwart's native JMAP FileNode storage, browsable as a real folder tree
- Setup wizard: runs on first launch and walks through JMAP, OAuth, branding, and the admin password. No
.env.localediting. - Admin dashboard: policy, users, plugins, themes, and the audit log, all from the browser
- SSO: OAuth2 / OIDC with PKCE and discovery, plus TOTP two-factor
- Multi-account: several accounts at once. HTTP/2 lifts the five-account cap that browser connection pooling imposes on HTTP/1.1.
- Plugins & themes: bundled extensions, plus a marketplace at extensions.bulwarkmail.org
- 24 languages: including right-to-left for Arabic, Hebrew, and Persian
- PWA: installs on desktop and mobile. Email colors are remapped by luminance, so mail hard-coded to dark-on-white stays readable on a dark theme.
- Real-time: JMAP EventSource pushes new mail as it arrives
| Repository | Description |
|---|---|
| webmail | The Bulwark webmail application |
| native | Native desktop and mobile apps |
| legacy-proxy | IMAP/SMTP bridge for legacy mail clients |
| relay | Push notification relay for mobile clients |
| plugins | Example plugins and templates for the plugin API |
| themes | Theme bundles for the webmail |
| homeassistant-jmap | JMAP mail integration for Home Assistant |
| wordpress-jmap | WordPress plugin routing wp_mail() over JMAP |
| website | Website and documentation |
| branding | Logos and brand assets |
| dashboard | Internal observability stack for the org |
| Technology | Purpose |
|---|---|
| Next.js 16 | React framework (App Router) |
| TypeScript | Type safety |
| Tailwind CSS v4 | Styling |
| Zustand | State management |
| JMAP (RFC 8620) | Mail protocol |
| next-intl | Internationalization |
| Stalwart | Mail server |
docker run -d -p 3000:3000 ghcr.io/bulwarkmail/webmail:latestOpen http://localhost:3000 and the setup wizard handles the rest. Full instructions live in the documentation and the installation guide.
Bug reports, feature requests, translations, and code are all welcome. See CONTRIBUTING.md to get started, or come say hi on Discord.
Bulwark Webmail is released under the GNU AGPL v3. The fork lineage's original MIT attribution is preserved in NOTICE.