1 parent
cfc74d9db6
commit
dacdf9c27d
76 files changed
+5209
-741
No files matched your search
@@ -1,4 +1,4 @@
|
||||
# RustBox 0.2.6
|
||||
# RustBox 0.2.8
|
||||
|
||||
RustBox is a webmail derived from `c0h1b4/oxi`. The consumed Oxi revision is recorded in `UPSTREAM_BASE`.
|
||||
|
||||
@@ -34,7 +34,7 @@ rustbox/
|
||||
|
||||
`build.rs` combines the CSS modules from `src/web/css/manifest.txt` and JavaScript modules from `src/web/js/manifest.txt`. Cargo embeds the generated CSS/JS bundles, HTML and SVG sprite in the RustBox executable. There is no standalone source `src/web/app.js`; `src/web/` is the single source of truth and Cargo generates the embedded bundles in `OUT_DIR`.
|
||||
|
||||
## Storage and search in 0.2.6
|
||||
## Storage and search in 0.2.8
|
||||
|
||||
RustBox separates three concerns: SQL metadata, blob storage and search. The SQL engine does **not** decide whether `data_dir` may be used. A single-node PostgreSQL/MySQL deployment may still use filesystem blobs and local Tantivy. In cluster mode, local node state is rejected unless the configured backend is explicitly shared.
|
||||
|
||||
@@ -51,6 +51,8 @@ Search backends:
|
||||
|
||||
In a cluster using shared SQL + S3/shared POSIX + OpenSearch/disabled search + `pgp_enabled=false`, `data_dir` is not required as persistent node state. See `docker/README.md` for ready Compose variants.
|
||||
|
||||
Administrator-only deep runtime diagnostics can be enabled separately under `[diagnostics_endpoint]`. It is disabled and loopback-only by default, supports a network allowlist plus token or Basic Auth, redacts secrets, and probes SQL/Redis/storage/search/session/runtime/security state. See [`docs/SYSTEM_DIAGNOSTICS.md`](docs/SYSTEM_DIAGNOSTICS.md).
|
||||
|
||||
## Configure mail servers
|
||||
|
||||
Mail endpoints are configured by the administrator, not on the login screen. Users enter only email and password.
|
||||
@@ -60,7 +62,10 @@ Edit `config.dev.toml` before the first run:
|
||||
```toml
|
||||
default_theme = "system" # system | dark | light
|
||||
default_interface_skin = "rustbox" # rustbox | gmail | proton | zoho | outlook | fastmail | apple-mail | yahoo | hey | nord | github | gitlab | discord | slack | reddit | notion | ...
|
||||
log_level = "info" # trace | debug | info | warn | error | off; RUST_LOG overrides it
|
||||
log_level = "info" # RustBox app level; dependencies default to WARN. RUST_LOG can override the full filter.
|
||||
# Recommended dev filter: warn,rustbox=debug,tower_http=info
|
||||
# Avoid a global RUST_LOG=debug/info unless diagnosing a dependency: third-party
|
||||
# crates may emit internal filesystem/source paths in verbose records.
|
||||
# Mail hosts may be omitted: IMAP defaults to localhost:993 and SMTP to localhost:587.
|
||||
# imap_host = "localhost"
|
||||
# smtp_host = "localhost"
|
||||
@@ -75,7 +80,7 @@ max_message_size_mb = 50
|
||||
sieve_enabled = true
|
||||
diagnostics_enabled = true
|
||||
about_enabled = true
|
||||
# Adds CSP/frame/referrer/permissions/COOP response headers when enabled.
|
||||
# Adds content-type-aware browser security headers when enabled: full document policy on HTML, private no-store/CORP/anti-framing policy on /api, Referrer-Policy on HTML/CSS, and nosniff broadly.
|
||||
security_headers_enabled = false
|
||||
|
||||
# Optional; defaults to imap_host. Ignored when sieve_enabled=false.
|
||||
@@ -125,10 +130,16 @@ bucket = "rustbox"
|
||||
region = "eu-central-1"
|
||||
# endpoint = "https://s3.example.com" # MinIO/Ceph RGW/etc.
|
||||
|
||||
[sync]
|
||||
interval_secs = 30
|
||||
deep_index_batch_size = 10
|
||||
|
||||
[search]
|
||||
backend = "opensearch"
|
||||
urls = ["https://opensearch.example.com:9200"]
|
||||
required = true
|
||||
# Production-safe default: do not proactively download every full message body.
|
||||
deep_index = false
|
||||
```
|
||||
|
||||
Shared POSIX is also supported without S3:
|
||||
@@ -155,7 +166,7 @@ rustbox search reindex
|
||||
|
||||
Ready Docker examples are in `docker/`: standalone SQLite, PostgreSQL + SILO (S3-compatible) + OpenSearch, and MySQL + NFS + OpenSearch.
|
||||
|
||||
All executable application SQL is centralized by dialect under `src/queries/{sqlite,mysql,pgsql}/queries.rs`. The squashed compatibility baseline remains V046; RustBox 0.2.1 adds runtime migration V047 for attachment checksums/logical blob keys and the durable search outbox. The next migration number is V048. See `migrations/README.md`.
|
||||
All executable application SQL is centralized by dialect under `src/queries/{sqlite,mysql,pgsql}/queries.rs`. The squashed compatibility baseline remains V046; RustBox 0.2.1 adds runtime migration V047 for attachment checksums/logical blob keys and the durable search outbox, while RustBox 0.2.8 adds V048 for monotonic folder-counter generations used by race-safe IMAP counter reconciliation. The next migration number is V049. See `migrations/README.md`.
|
||||
|
||||
|
||||
## Development
|
||||
@@ -224,7 +235,7 @@ Initialize Git after extracting the release archive:
|
||||
```bash
|
||||
git init
|
||||
git add .
|
||||
git commit -m "RustBox 0.2.6 release"
|
||||
git commit -m "RustBox 0.2.8 release"
|
||||
./scripts/setup-upstream.sh
|
||||
```
|
||||
|
||||
|
||||
Reference in new issue
Block a user