# Minimal Stalwart Mail configuration for local development and integration tests.
#
# HTTP only — localhost testing, no TLS.
# Two test accounts (alice, bob) for multi-account sync tests.

[server]
hostname = "localhost"

[[server.listener]]
id       = "jmap"
bind     = ["0.0.0.0:8080"]
protocol = "http"

[[server.listener]]
id       = "imap"
bind     = ["0.0.0.0:1430"]
protocol = "imap"

[[server.listener]]
id       = "smtp"
bind     = ["0.0.0.0:1025"]
protocol = "smtp"

[[server.listener]]
id       = "managesieve"
bind     = ["0.0.0.0:4190"]
protocol = "managesieve"

[store."db"]
type = "sqlite"
path = "/tmp/stalwart/data.sqlite"

[storage]
data      = "db"
fts       = "db"
blob      = "db"
lookup    = "db"
directory = "memory"

[tracer."stdout"]
type    = "stdout"
level   = "warn"
ansi    = false
enable  = true

[directory."memory"]
type = "memory"

[[directory."memory".principals]]
class  = "individual"
name   = "alice@example.com"
secret = "secret"
email  = ["alice@example.com"]

[[directory."memory".principals]]
class  = "individual"
name   = "bob@example.com"
secret = "secret"
email  = ["bob@example.com"]

[authentication.fallback-admin]
user   = "admin"
secret = "admin"

# Allow LOGIN/PLAIN on the clear-text dev ports (no TLS in local test env).
# By default Stalwart only advertises PLAIN/LOGIN when is_tls — override that.
[imap.auth]
allow-plain-text = true

[session.auth]
mechanisms = "[plain, login, oauthbearer, xoauth2]"
allow-plain-text = true

# Disable rate limiting for local development/testing.
[authentication.rate-limit]
enable = false
