# RustBox 0.2.0 - packaged production configuration (DEB/RPM) host = "0.0.0.0" port = 3001 environment = "production" data_dir = "/var/lib/rustbox" log_dir = "/var/log/rustbox" log_level = "warn" database_backend = "sqlite" session_backend = "database" cluster_mode = false session_timeout_hours = 72 remember_me_enabled = true remember_me_days = 30 imap_host = "localhost" imap_port = 993 smtp_host = "localhost" smtp_port = 587 tls_enabled = true tls_verify = false max_attachment_size_mb = 50 max_message_size_mb = 100 sieve_port = 4190 sieve_tls_mode = "none" sieve_allow_insecure_auth = true sieve_timeout_secs = 10 default_junk_folder = "Spam" default_theme = "system" default_interface_skin = "apple-mail" trusted_proxies = "127.0.0.1,::1" outgoing_headers = [] pgp_enabled = true pgp_wkd_enabled = true pgp_hkp_enabled = false pgp_hkp_url = "https://keys.openpgp.org" pgp_network_timeout_secs = 10 pgp_max_key_bytes = 1048576 pgp_allow_private_export = true # Blob storage is independent from database_backend. This default preserves the # single-node package behavior. PostgreSQL/MySQL may use this local filesystem # backend too when cluster_mode=false. [storage] backend = "filesystem" path = "/var/lib/rustbox/blobs" shared = false request_timeout_secs = 30 connect_timeout_secs = 5 max_retries = 3 retry_timeout_secs = 60 # Local Tantivy is single-node only. Cluster deployments must use opensearch or disabled. [search] backend = "local_tantivy" path = "/var/lib/rustbox/search" index_prefix = "rustbox" required = false request_timeout_secs = 10 worker_interval_secs = 2 worker_batch_size = 100 worker_max_attempts = 12 # ----------------------------------------------------------------------------- # Cluster example: PostgreSQL + S3-compatible storage + OpenSearch # ----------------------------------------------------------------------------- # database_backend = "pgsql" # database_url = "postgres://rustbox:change-me@db.internal/rustbox" # session_backend = "database" # or redis # session_encryption_key = "BASE64_32_BYTE_KEY" # cluster_mode = true # pgp_enabled = false # # [storage] # backend = "s3" # bucket = "rustbox" # region = "eu-central-1" # endpoint = "https://s3.example.net" # optional for AWS S3 # path_style = false # allow_http = false # request_timeout_secs = 30 # connect_timeout_secs = 5 # max_retries = 3 # retry_timeout_secs = 60 # # [search] # backend = "opensearch" # urls = ["https://opensearch.example.net:9200"] # index_prefix = "rustbox" # required = true # username = "rustbox" # password = "change-me" # worker_interval_secs = 2 # worker_batch_size = 100 # worker_max_attempts = 12 # # In this shape data_dir is not required as persistent node state. # ----------------------------------------------------------------------------- # Cluster blob alternative: shared POSIX/NFS/CephFS/GlusterFS # ----------------------------------------------------------------------------- # [storage] # backend = "filesystem" # path = "/mnt/rustbox-shared" # shared = true # # `shared=true` is an operator assertion that every RustBox node sees the same # filesystem. It is not suitable for local Tantivy; use OpenSearch/disabled search.