This release includes 11 security fixes for security teams reviewing exposed deployments.
Published 24d
Communication & Email
✓ No known CVEs patched
This release patches 11 known CVEs
Topics
email
emailclient
unifiedinbox
webmail
Affected surfaces
auth
rbac
rce_ssrf
breaking_upgrade
Summary
AI summaryEmail categorization, AI assistant, Spam feedback, Password recovery, Compose improvements, Todoist integration, Mark as unread, Security hardening, and Reliability improvements.
Full changelog
What's new in v2.0.0
Email categorization
- New inbox tabs: Primary, Newsletters, Social, Notifications, and Other automatically sort incoming mail by type using header detection and sender heuristics
- Unified inbox view shows all mail across tabs
- AI-powered classify button reclassifies a message when the automatic detection gets it wrong
- Unsubscribe button appears directly in the message pane for detected newsletters — one click sends the unsubscribe request or opens the unsubscribe URL
AI assistant
- Integrated AI assistant powered by any OpenAI-compatible provider (configure your own endpoint and API key in admin settings)
- Summarize long email threads, draft replies, and ask questions about a message
- AI assist button added to the mobile compose toolbar
- AI tab in admin settings is clearly marked Beta
Spam feedback (v0.1)
- Mark any message as spam or not spam from the context menu, message pane toolbar, or bulk actions
- Feedback is stored and will feed into automated filtering in a future release
- Available in all 7 supported languages
Password recovery
- Users can now recover their account via a recovery email address set in profile settings
- Three-tier SMTP fallback ensures delivery even when the primary sending account is misconfigured (#176)
Compose improvements
- Image resize handles in the rich-text editor (#182)
- Pasting Excel tables now converts them to HTML tables (#182)
Todoist integration
- Tasks created from emails now include a deep link back to the original message (#180)
Mark as unread
- Mark messages as unread from the message pane toolbar and the mobile action menu (#183)
Security hardening
- TOTP replay prevention: one-time codes can no longer be reused within their validity window
- SSRF improvements: IMAP host validation now resolves DNS and blocks 6to4 and Teredo IPv6 tunnel addresses that embed private IPv4 ranges
- CSS exfiltration prevention: external
url()references in email<style>blocks are stripped at sanitization time - Password reset race condition: the token is now consumed atomically so two concurrent reset requests cannot both succeed
- Signature sanitization: edited signatures are sanitized on send and draft save, not only at storage time
- AI and subscription URL validation: custom AI base URLs and category subscription URLs are now validated through the same SSRF-safe host validator used for IMAP
- Encryption key guard: the server now refuses to start and throws on encrypt rather than silently storing plaintext if
ENCRYPTION_KEYis missing - Microsoft 365 id_token issuer validation: multi-tenant OAuth flows now verify the
issclaim matches the tenant in the token - Trusted device cookie cleared on logout
- Security headers:
X-Frame-Options: DENYandReferrer-Policy: same-originadded to all responses - Double-send prevention: idempotency key support on the send endpoint prevents duplicate emails on network retry
Reliability improvements
- Database migrations: all migrations are now idempotent (
IF NOT EXISTS) and run without a statement timeout so large deployments don't fail mid-migration - IMAP connection leak fix: failed sync attempts now correctly close and remove the stale connection instead of leaving zombie TCP sockets
- WebSocket broadcast isolation: a failing client socket no longer aborts delivery to other connected clients
- Inbox rules N+1 fix: folder resolution for delete and archive rules is now cached across the message batch instead of re-queried per message
- Shared Redis client: session store, TOTP replay prevention, and send idempotency now share a single Redis connection
Upgrade notes
- No manual migration steps required. All schema changes apply automatically on first startup.
- If you are running without
ENCRYPTION_KEYset, the server will now refuse to start rather than silently degrading. SetENCRYPTION_KEYto a 64-character hex string (openssl rand -hex 32) before upgrading.
Security Fixes
- TOTP replay prevention: one-time codes cannot be reused within validity window.
- SSRF improvements: IMAP host validation now resolves DNS and blocks 6to4/Teredo IPv6 tunnel addresses embedding private IPv4 ranges.
- CSS exfiltration prevention: external `url()` references in email `<style>` blocks are stripped at sanitization time.
- Password reset race condition fixed via atomic token consumption.
- Signature sanitization now occurs on send and draft save, not only at storage.
- AI base URL and category subscription URLs validated through SSRF‑safe host validator.
- Server refuses to start when `ENCRYPTION_KEY` is missing; otherwise plaintext storage prevented.
- Multi‑tenant OAuth (MS 365) id_token issuer (`iss`) claim now verified against tenant.
- Trusted device cookie cleared on logout.
- Security headers added: `X-Frame-Options: DENY`, `Referrer-Policy: same-origin`.
- Double‑send prevention via idempotency key support on send endpoint.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
Beta — feedback welcome: [email protected]