# RustBox features RustBox is a self-hosted webmail for any standards-compliant IMAP/SMTP server. It ships as one Rust executable with the whole interface built in. The interface is available in English and Polish. ![Mail view](screenshots/mail-light.png) ## Contents - [Mail](#mail) - [Composing](#composing) - [Search, labels and contacts](#search-labels-and-contacts) - [Filters (Sieve)](#filters-sieve) - [Calendar](#calendar) - [Notifications and realtime](#notifications-and-realtime) - [Appearance](#appearance) - [Mobile](#mobile) - [Security and privacy](#security-and-privacy) - [Administration and deployment](#administration-and-deployment) - [Known limitations](#known-limitations) ## Mail - Three-pane layout (folders, message list, reader) with resizable panes. The preview can sit on the right or at the bottom, or be turned off. - Folder tree with subfolders shown under their parent and collapsible branches. You can create, rename, delete and subscribe to folders, mark all as read and empty a folder. - Special folders (Sent, Drafts, Trash, Junk, Archive) are configured per account. They follow renames, and administrators can set server-wide defaults. - Accurate total and unread counters, kept in sync with the mail server. Changes appear immediately and are reconciled in the background. - Threaded or flat reading, previous/next navigation, and automatic opening of the next message after a move or delete. - Bulk actions on many messages at once, including the whole search result: read/unread, flag, archive, move, copy, label, spam and delete. - Drag and drop a message onto a folder to move it. Moves and deletes can be undone. - Snooze: hide a message until a chosen time, then see all snoozed messages in one list. - Pagination (up to 300 per page), progressive loading or loading the whole folder. Sort by date, sender, subject or size, and optionally keep flagged messages on top per folder. - A compact single-line row layout when the message list is wide. - Safe HTML preview in an isolated frame. Remote images are blocked until you allow them, or loaded only for contacts or trusted senders. - Attachment preview for images, PDF, text, HTML and video. You can download one attachment or all of them as a ZIP. - Raw headers, message source, `.eml` download and `.eml` import into any folder. - One-click unsubscribe from mailing lists when the sender supports it. - A short context menu with submenus (forward, labels, snooze, filters, sender, more), designed to always fit the window. - Mailbox quota with warnings at 80% and 95%. - Several accounts signed in at the same time in one browser, with quick switching. ![Context menu](screenshots/context-menu.png) ## Composing - HTML, plain-text and Markdown editors. The HTML toolbar covers fonts, sizes, colours, lists, quotes, alignment, links, undo and redo. - Inline images: paste or drag and drop them, then resize, align and crop in place. - Attachments by drag and drop, with upload progress and a reminder when the text mentions an attachment that isn't there. - Drafts are saved automatically and can be recovered. Drafts from the Drafts folder, including ones written in other mail clients, open directly for editing. - Undo Send: a short window to cancel a message after pressing Send. - Multiple identities, each with Reply-To, automatic Bcc, organisation and text/HTML signatures. Replies pick the matching identity automatically. - Priority, read-receipt requests and recipient autocomplete from contacts. - Forward as attachment. - OpenPGP: key management, signing and encryption (PGP/MIME and inline), decryption and verification, and key discovery. ![Composer](screenshots/compose.png) ## Search, labels and contacts - Full-text search with operators (`from:`, `to:`, `subject:`, `folder:`, `has:attachment`, `is:unread`, `is:flagged`, dates). Matching terms are highlighted, searches can be saved and there is an advanced search dialog. - Coloured labels with bulk assignment. They can optionally be kept in sync with IMAP keywords, so they are visible in other clients. - Contacts with photos, several e-mail addresses, phone numbers and postal addresses, plus groups, duplicate detection and merging. - vCard import and export, including importing a vCard straight from a message. ![Contacts](screenshots/contacts.png) ## Filters (Sieve) RustBox manages server-side filters over ManageSieve, the standard used by Dovecot Pigeonhole and others. - **Visual rule editor:** conditions on sender, domain, recipients (To/Cc, To only, Cc only), subject, mailing list, any header, message size, attachments and priority. Conditions can be joined with AND/OR and negated, and a rule can have **exceptions** ("except if…"). - **Actions:** move, copy, move to Trash, add a label, mark as read, flag, redirect (optionally keeping a copy) and discard. A rule can run several actions and stop processing further rules. - **Templates** for common rules: messages from a sender to a folder, subject words, flagging mail from a VIP, newsletters, mail sent to an alias, large attachments, forwarding a copy. - **Apply now:** a rule normally affects only new mail. "Check matches" shows how many messages already in a folder match it, and "Apply now" runs its actions on them. Each rule in the list also has its own "Apply now". - **Always move messages from this sender…** straight from the message context menu, and quick filters created from a message's sender, domain or subject. - Offers to create a target folder that does not exist yet. - Every rule is summarised in plain language ("When … Then …") and shown with a live preview of the generated script. - Out-of-office replies with optional start and end dates, plus a raw script editor with server-side validation, backup and restore. ![Filter editor](screenshots/filters-editor.png) ![Apply a filter to existing mail](screenshots/filters-apply-now.png) ## Calendar - Month, week, day and agenda views. - Events with all-day mode, location, attendees, status, colour and a meeting link. - Two reminders per event (for example 15 minutes and one day before), with default reminders for new events. Reminders for all-day events fire at the start of the working day. - ICS import and export, including importing an invitation attachment. ![Calendar](screenshots/calendar.png) ## Notifications and realtime - New mail shows up immediately thanks to IMAP IDLE and a live connection to the browser. - Desktop notifications with an optional sound, a choice of folders to watch and Do Not Disturb hours. - The unread count appears in the browser tab and, where supported, on the app icon. ## Appearance - Light, dark, system or **time-of-day** theme. - **43 interface styles**: - RustBox and classic styles; - Roundcube Classic, Larry and Elastic; - styles inspired by popular mail clients and apps; - editor themes such as Nord, Dracula, Catppuccin, Solarized, Gruvbox and Tokyo Night; - atmospheric styles; - retro styles: Windows XP, Mac OS X Aqua, iOS 6, Windows 7, Frutiger Aero and BeOS. - **Style depth:** - *colours only*; - *standard*, which adds the style's layout; - *immersive*, which also adds the style's shapes, typography, app bar and backdrop. - An optional **Style gradients** switch. - A predefined style's layout and typography can be adjusted while it keeps its look. Changing a colour creates a custom copy. - The RustBox custom style is fully adjustable: colours, fonts, sizes, density, pane widths, corner radius, contrast, selection colour, unread styling, icon size and more. A live warning appears when your custom colours are hard to read. - An optional colour per account, so it is always clear which account is active. - Keyboard shortcuts with an in-app reference. ![Appearance settings](screenshots/settings-appearance.png) | Gmail | Outlook (immersive) | |---|---| | ![Gmail style](screenshots/style-gmail.png) | ![Outlook style](screenshots/style-outlook.png) | | **Dracula (immersive, dark)** | **Windows XP (immersive, gradients)** | | ![Dracula style](screenshots/style-dracula.png) | ![Windows XP style](screenshots/style-winxp.png) | More: [dark theme](screenshots/mail-dark.png) · [Roundcube Elastic](screenshots/style-roundcube-elastic.png) ## Mobile The interface adapts to phones and tablets: a folder drawer, a full-screen reader and touch-friendly menus. | Message list | Reader (dark) | |---|---| | Mobile list | Mobile reader | ## Security and privacy - Mail server addresses are set by the administrator; users only enter their e-mail address and password. - Protection against password guessing: per-mailbox and per-address lockouts with growing delays, applied before the mail server is contacted. - Encrypted, revocable sessions with a list of active sessions and devices. - Optional strict browser security headers. - HTML mail is sanitised and shown in an isolated frame. Links open outside the preview, and remote content is blocked by default. - Secrets are never shown in diagnostics. ## Administration and deployment - A single executable with the interface built in, a systemd service and Docker Compose examples. - Databases: SQLite, MySQL/MariaDB or PostgreSQL. Sessions can also be kept in Redis. - Attachment storage on local disk, a shared filesystem (NFS, CephFS, GlusterFS) or S3-compatible storage. - Search with a built-in index or OpenSearch. A cluster mode runs several nodes behind a load balancer. - Health and readiness endpoints, a diagnostics panel for users and an optional, protected diagnostics endpoint for administrators. - Features can be switched on and off: filters, OpenPGP, multi-account, diagnostics, About page. - A helper script imports contacts and identities from Roundcube. See the [README](../README.md) for configuration, [Storage and search](STORAGE_SEARCH_OPERATIONS.md) and [System diagnostics](SYSTEM_DIAGNOSTICS.md). ## Known limitations - No CalDAV or CardDAV synchronisation yet. Calendar invitations cannot be answered from RustBox, and recurring events are stored but not expanded. - No password-change integration and no IMAP shared-folder (ACL) management. - Notifications work while RustBox is open in a browser tab. - The current status of every area is tracked in [Implementation status](IMPLEMENTATION_STATUS.md). ![About](screenshots/about.png)