Skip to content

Configuration model

Dispatch keeps almost all settings in the database’s config table, managed through the dashboard and seeded with sensible defaults on first run. By default that’s the bundled SQLite file, or you can point it at a server you already run instead (PostgreSQL, MariaDB/MySQL, or SQL Server) - see Deployment. Only a few bootstrap items live in appsettings.json, because they’re needed before the database is available.

  • ConnectionStrings:DispatchLog - the database connection string (defaults to the bundled SQLite file if omitted).
  • The first-run admin password (seeded once, then stored only as a bcrypt hash in the database).
  • The dashboard TLS certificate path/password (optional; otherwise a self-signed cert is generated).
  • The log directory.

Everything else - ports, allow-lists, provider credentials, retry policy, retention - is in the database’s config table. Secrets there (provider API keys, SMTP passwords, TLS cert password) are encrypted at rest.

  • Connections - the SMTP listener, the HTTP API, and the dashboard (ports, allow-lists, toggles).
  • Relay provider - upstream provider credentials.
  • TLS certificate - the shared cert for SMTP STARTTLS + HTTPS API.
  • Retention & purge - how long history and spool files are kept.
  • SMTP authentication - username/password pairs for SMTP AUTH.
  • Spool - directory and worker count.

See the config key reference for every key, its default, and whether changing it needs a restart.