Configuration
Environment variables control everything. No YAML files, no config directories.
Environment Variables
| Variable | Description | Default |
|---|---|---|
DOMAIN | Your email domain (e.g., mail.example.com) | Required |
POSTGRES_PASSWORD | Database password | Required |
API_SECRET_KEY | Secret for JWT signing and key derivation | Required |
API_PORT | Port for the REST API | 8000 |
SMTP_PORT | Port for inbound SMTP | 25 |
MAX_INBOX_TTL | Maximum inbox lifetime in seconds | 2592000 (30 days) |
MAX_EMAIL_SIZE | Maximum email size in bytes | 10485760 (10 MB) |
WEBHOOK_TIMEOUT | Webhook delivery timeout in seconds | 10 |
Docker Compose Override
To customize ports or resource limits, create a docker-compose.override.yml:
services:
api:
ports:
- "3000:8000"
environment:
- MAX_INBOX_TTL=86400
DNS Configuration
Point your domain's MX record to your server:
yourdomain.com. MX 10 mail.yourdomain.com.
mail.yourdomain.com. A YOUR_SERVER_IP
Optional DNS records for email deliverability:
yourdomain.com. TXT "v=spf1 ip4:YOUR_SERVER_IP ~all"