pneumatube/docker-compose.yml

55 lines
2.5 KiB
YAML

# Local test rig for the Postfix -> LMTP -> pneumatube wiring, matching the
# shape of a real deployment: Postfix owns the SMTP side, pneumatube is its
# LMTP delivery backend. This is NOT the recommended production topology —
# a real deployment runs Postfix on the host with real TLS/DNS, not in a
# container (see the project's Postfix wiring notes); this rig has no TLS,
# no abuse limits, and trusts every connecting host (mynetworks=0.0.0.0/0).
#
# Requires PNEUMATUBE_SMOLMAIL_DOMAIN and PNEUMATUBE_SMTP_RELAY_HOST set in
# the environment or a .env file. The gateway's own smolmail account must
# already be registered against that server before pneumatube can run — the
# same bootstrap as any smolmail client, using the mounted sibling checkout
# and ./data as --key/--db:
#
# docker compose run --rm pneumatube \
# uv run /smolmail/smolmail.py --key /data/gateway.key --db /data/gateway.db keygen
# docker compose run --rm pneumatube \
# uv run /smolmail/smolmail.py --key /data/gateway.key --db /data/gateway.db trust <host> <server-key>
# docker compose run --rm pneumatube \
# uv run /smolmail/smolmail.py --key /data/gateway.key --db /data/gateway.db register <user>@<host>
services:
pneumatube:
build: .
volumes:
- ../smolmail:/smolmail:ro
- ./data:/data
environment:
PNEUMATUBE_SMOLMAIL_REPO: /smolmail
PNEUMATUBE_SMOLMAIL_KEY: /data/gateway.key
PNEUMATUBE_SMOLMAIL_DB: /data/gateway.db
PNEUMATUBE_SMOLMAIL_DOMAIN: ${PNEUMATUBE_SMOLMAIL_DOMAIN:?set the smolmail server address}
PNEUMATUBE_EMAIL_DOMAIN: ${PNEUMATUBE_EMAIL_DOMAIN:-gateway.example}
PNEUMATUBE_LISTEN_PROTOCOL: lmtp
PNEUMATUBE_LISTEN_HOST: 0.0.0.0
PNEUMATUBE_LISTEN_PORT: "2424"
PNEUMATUBE_LOOKUP_HOST: 0.0.0.0
PNEUMATUBE_LOOKUP_PORT: "2526"
PNEUMATUBE_SMTP_RELAY_HOST: ${PNEUMATUBE_SMTP_RELAY_HOST:?set an outbound relay host}
PNEUMATUBE_SMTP_RELAY_PORT: ${PNEUMATUBE_SMTP_RELAY_PORT:-587}
PNEUMATUBE_SMTP_RELAY_USER: ${PNEUMATUBE_SMTP_RELAY_USER:-}
PNEUMATUBE_SMTP_RELAY_PASSWORD: ${PNEUMATUBE_SMTP_RELAY_PASSWORD:-}
PNEUMATUBE_SMTP_RELAY_STARTTLS: ${PNEUMATUBE_SMTP_RELAY_STARTTLS:-1}
PNEUMATUBE_GATEWAY_FROM_ADDRESS: ${PNEUMATUBE_GATEWAY_FROM_ADDRESS:-gateway@gateway.example}
postfix:
build: ./docker/postfix
depends_on:
- pneumatube
environment:
POSTFIX_RELAY_DOMAIN: ${PNEUMATUBE_EMAIL_DOMAIN:-gateway.example}
PNEUMATUBE_HOST: pneumatube
PNEUMATUBE_PORT: "2424"
PNEUMATUBE_LOOKUP_PORT: "2526"
ports:
- "2525:25"