// Package config loads OpenMail configuration from the environment. // Twelve-factor style: everything via env vars, sane defaults for local dev. package config import ( "os" ) type Config struct { HTTPAddr string // OPENMAIL_HTTP_ADDR, e.g. ":8080" DatabaseURL string // DATABASE_URL, e.g. postgres://user:pass@host:5432/openmail SMTPAddr string // OPENMAIL_SMTP_ADDR, inbound :25 listener AdminToken string // OPENMAIL_ADMIN_TOKEN, bootstrap bearer until DB-backed api_keys land } func Load() Config { return Config{ HTTPAddr: envOr("OPENMAIL_HTTP_ADDR", ":8080"), DatabaseURL: os.Getenv("DATABASE_URL"), SMTPAddr: envOr("OPENMAIL_SMTP_ADDR", ":25"), AdminToken: os.Getenv("OPENMAIL_ADMIN_TOKEN"), } } func envOr(key, def string) string { if v := os.Getenv(key); v != "" { return v } return def }