Skip to content

Overview

Stalwart supports several database and object-storage backends. The choice of backend depends primarily on the scale and topology of the deployment.

The following table summarises which backend is available for each store type:

Data storeBlob storeSearch storeIn-memory store
RocksDB✅✅✅✅
FoundationDB✅✅✅✅
PostgreSQL✅✅✅✅
MySQL / MariaDB✅✅✅✅
SQLite✅✅✅✅
S3/MinIO✅
Azure Blob Storage✅
Filesystem✅
ElasticSearch✅
Meilisearch✅
Redis✅

Backend support is compiled into the Stalwart binary. Switching to backends such as FoundationDB therefore requires running a different binary built with the corresponding feature enabled.

Each store (data, blob, search, in-memory) is configured through its own singleton object: DataStore, BlobStore, SearchStore, and InMemoryStore. These objects are multi-variant: changing backend means selecting a different variant on the corresponding object, without restructuring the rest of the configuration.