This guide covers essential configuration for self-hosted Listmonk installations.
Listmonk uses PostgreSQL exclusively. Configure via config.toml:
[database]
host = "localhost"
port = 5432
user = "listmonk"
password = "your-secure-password"
database = "listmonk"
ssl_mode = "disable"
max_open = 25
max_idle = 25
max_lifetime = "300s"
Configure in config.toml:
[app]
address = "0.0.0.0:9000"
admin_username = "admin"
admin_password = "your-secure-admin-password"
base_url = "https://listmonk.example.com"
enable_public_subscription_page = true
enable_public_archive = true
Configure SMTP in Settings > SMTP or config.toml:
[[smtp]]
enabled = true
host = "smtp.yourprovider.com"
port = 587
auth_protocol = "login"
username = "your-smtp-user"
password = "your-smtp-password"
encryption = "STARTTLS"
from_email = "noreply@example.com"
from_name = "Your Organization"
max_conns = 10
idle_timeout = "45s"
wait_timeout = "5s"
max_msg_retries = 2
Recommended SMTP Providers:
Configure sending rate limits to protect sender reputation:
[app]
max_send_rate = "1000/h" # Adjust based on your SMTP provider
Or in admin panel: Settings > Sending > Max send rate
Configure in Settings > Privacy:
Enable double opt-in for compliance:
Configure bounce webhooks in Settings > Bounces:
[bounces]
enabled = true
webhook = "https://listmonk.example.com/webhook/bounces"
For Amazon SES, configure SNS notifications to post to the bounce webhook URL.
Listmonk provides a REST API. Configure in Settings > Security:
docker logs listmonk or journalctl