This guide uses Docker Compose to run Postorius as part of the Mailman 3 suite with PostgreSQL backend.
lists.example.com)mkdir -p /opt/mailman && cd /opt/mailman
Create docker-compose.yml for the full Mailman 3 stack:
services:
mailman-web:
image: maxking/mailman-web:latest
container_name: mailman-web
restart: unless-stopped
ports:
- "8080:80"
environment:
- SERVE_FROM_DOMAIN=lists.example.com
- HYPERKITTY_API_KEY=generate-a-random-key-here
- MAILMAN_ADMIN_USER=admin
- MAILMAN_ADMIN_EMAIL=admin@example.com
- SECRET_KEY=generate-a-long-random-secret-key
- DATABASE_URL=postgresql://mailman:ChangeMe123!@db:5432/mailman
volumes:
- mailman-web-data:/opt/mailman-web-data
depends_on:
- db
- mailman-core
mailman-core:
image: maxking/mailman-core:latest
container_name: mailman-core
restart: unless-stopped
environment:
- DATABASE_URL=postgresql://mailman:ChangeMe123!@db:5432/mailmandb
- HYPERKITTY_API_KEY=generate-a-random-key-here
volumes:
- mailman-core-data:/opt/mailman-core-data
depends_on:
- db
db:
image: postgres:15
container_name: mailman-db
restart: unless-stopped
environment:
- POSTGRES_DB=mailman
- POSTGRES_USER=mailman
- POSTGRES_PASSWORD=ChangeMe123!
volumes:
- db_data:/var/lib/postgresql/data
volumes:
mailman-web-data:
mailman-core-data:
db_data:
Generate secure random keys:
# HyperKitty API key
openssl rand -hex 32
# Django secret key
openssl rand -base64 64
Update the docker-compose.yml with these values.
docker compose up -d
docker exec -it mailman-web python3 manage.py createsuperuser
http://your-server:8080 in a browsermaxking/mailman-web (includes Postorius + HyperKitty)maxking/postorius (Postorius only)Any questions?
Feel free to contact us. Find all contact information on our contact page.