Overview
Stalwart splits storage into four separate stores, each covering a different aspect of server operation. Every store is an independent singleton with its own backend, so the storage technology can be matched to the requirements of each layer (a fast embedded database for metadata, an object-storage service for large blobs, a dedicated search index, and so on).
Data store
The data store holds email metadata, mailbox state, account settings, folders, and most configuration objects. It does not hold raw message bodies, Sieve scripts, or other large binary files; those are managed separately by the blob store so that each layer can be tuned independently.
Blob store
The blob store holds the large binary objects managed by the server: raw email messages, Sieve scripts, and other files. Every blob is addressed by a content hash (BLAKE3) derived from the object's bytes, so two uploads with identical content share a single physical object. This content-addressed model enables straightforward deduplication across users and mailboxes.
Search store
Full-text search (FTS) indexes message bodies, attachments, contacts, and calendar events so that search queries return quickly across large mailboxes. The backend used for full-text indexing is configured independently from the data store, allowing the search engine to be chosen to match query volume, language requirements, and operational constraints.
In-memory store
In-memory data stores (such as Redis) are high-performance databases that keep data entirely in RAM, making read and write operations extremely fast. They are well suited to caching, message brokering, and short-lived state that does not need long-term persistence.
Backends
13 items
Lookup lists
3 items