Fresh repository history for elektrine/elektrine-haraka hosted at https://git.elektrine.com/elektrine/elektrine-haraka.
223 lines
7.1 KiB
YAML
223 lines
7.1 KiB
YAML
services:
|
|
haraka-inbound:
|
|
image: ${HARAKA_IMAGE:-git.elektrine.com/elektrine/elektrine-haraka}:${HARAKA_IMAGE_TAG:-latest}
|
|
ports:
|
|
- "25:25"
|
|
volumes:
|
|
- ../logs:/app/logs
|
|
- ../config:/app/config
|
|
- ../config/dkim:/data/haraka/dkim
|
|
- ../plugins:/app/plugins:ro
|
|
- ../lib:/app/lib:ro
|
|
- ../scripts:/app/scripts:ro
|
|
- ssl-certs:/app/ssl
|
|
environment:
|
|
- NODE_ENV=production
|
|
- HARAKA_ROLE=inbound-mx
|
|
- HARAKA_API_KEY=${HARAKA_API_KEY:-}
|
|
- PHOENIX_API_KEY=${PHOENIX_API_KEY:-}
|
|
- PHOENIX_WEBHOOK_URL=${PHOENIX_WEBHOOK_URL:-}
|
|
- PHOENIX_VERIFY_URL=${PHOENIX_VERIFY_URL:-}
|
|
- PHOENIX_DOMAINS_URL=${PHOENIX_DOMAINS_URL:-}
|
|
- LOCAL_DOMAINS=${LOCAL_DOMAINS:-}
|
|
- REDIS_URL=${REDIS_URL:-redis://redis:6379}
|
|
- ELEKTRINE_QUEUE_NAME=${ELEKTRINE_QUEUE_NAME:-elektrine:inbound}
|
|
- ELEKTRINE_DLQ_NAME=${ELEKTRINE_DLQ_NAME:-elektrine:inbound:dlq}
|
|
- HARAKA_DOMAIN=${HARAKA_DOMAIN:-mail.example.com}
|
|
restart: unless-stopped
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
networks:
|
|
- haraka-network
|
|
- main-app-network
|
|
depends_on:
|
|
- redis
|
|
- clamav
|
|
- spamassassin
|
|
|
|
haraka-submission:
|
|
image: ${HARAKA_IMAGE:-git.elektrine.com/elektrine/elektrine-haraka}:${HARAKA_IMAGE_TAG:-latest}
|
|
volumes:
|
|
- ../logs:/app/logs
|
|
- ../config:/app/config
|
|
- ../config/dkim:/data/haraka/dkim
|
|
- ../plugins:/app/plugins:ro
|
|
- ../lib:/app/lib:ro
|
|
- ../scripts:/app/scripts:ro
|
|
- ssl-certs:/app/ssl
|
|
environment:
|
|
- NODE_ENV=production
|
|
- HARAKA_ROLE=submission
|
|
- HARAKA_API_KEY=${HARAKA_API_KEY:-}
|
|
- PHOENIX_API_KEY=${PHOENIX_API_KEY:-}
|
|
- PHOENIX_VERIFY_URL=${PHOENIX_VERIFY_URL:-}
|
|
- PHOENIX_DOMAINS_URL=${PHOENIX_DOMAINS_URL:-}
|
|
- LOCAL_DOMAINS=${LOCAL_DOMAINS:-}
|
|
- REDIS_URL=${REDIS_URL:-redis://redis:6379}
|
|
- HARAKA_DOMAIN=${HARAKA_DOMAIN:-mail.example.com}
|
|
restart: unless-stopped
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
networks:
|
|
- haraka-network
|
|
- main-app-network
|
|
depends_on:
|
|
- redis
|
|
|
|
haraka-outbound:
|
|
image: ${HARAKA_IMAGE:-git.elektrine.com/elektrine/elektrine-haraka}:${HARAKA_IMAGE_TAG:-latest}
|
|
ports:
|
|
- "127.0.0.1:${HARAKA_HTTP_BIND_PORT:-18080}:8080"
|
|
volumes:
|
|
- ../logs:/app/logs
|
|
- ../config:/app/config
|
|
- ../config/dkim:/data/haraka/dkim
|
|
- ../plugins:/app/plugins:ro
|
|
- ../lib:/app/lib:ro
|
|
- ../scripts:/app/scripts:ro
|
|
- ssl-certs:/app/ssl
|
|
environment:
|
|
- NODE_ENV=production
|
|
- HARAKA_ROLE=outbound-relay
|
|
- HARAKA_API_KEY=${HARAKA_API_KEY:-}
|
|
- PHOENIX_API_KEY=${PHOENIX_API_KEY:-}
|
|
- HARAKA_HTTP_API_KEY=${HARAKA_HTTP_API_KEY:-}
|
|
- PHOENIX_WEBHOOK_URL=${PHOENIX_WEBHOOK_URL:-}
|
|
- PHOENIX_VERIFY_URL=${PHOENIX_VERIFY_URL:-}
|
|
- PHOENIX_DOMAINS_URL=${PHOENIX_DOMAINS_URL:-}
|
|
- LOCAL_DOMAINS=${LOCAL_DOMAINS:-}
|
|
- REDIS_URL=${REDIS_URL:-redis://redis:6379}
|
|
- HARAKA_HTTP_PORT=8080
|
|
- HARAKA_HTTP_HOST=0.0.0.0
|
|
- HARAKA_DOMAIN=${HARAKA_DOMAIN:-mail.example.com}
|
|
restart: unless-stopped
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
networks:
|
|
- haraka-network
|
|
- main-app-network
|
|
depends_on:
|
|
- redis
|
|
|
|
haraka-worker:
|
|
image: ${HARAKA_IMAGE:-git.elektrine.com/elektrine/elektrine-haraka}:${HARAKA_IMAGE_TAG:-latest}
|
|
command: ["node", "/app/scripts/elektrine-worker.js"]
|
|
volumes:
|
|
- ../logs:/app/logs
|
|
- ../config:/app/config
|
|
- ../config/dkim:/data/haraka/dkim
|
|
- ../plugins:/app/plugins:ro
|
|
- ../lib:/app/lib:ro
|
|
- ../scripts:/app/scripts:ro
|
|
environment:
|
|
- NODE_ENV=production
|
|
- HARAKA_ROLE=worker
|
|
- HARAKA_API_KEY=${HARAKA_API_KEY:-}
|
|
- PHOENIX_API_KEY=${PHOENIX_API_KEY:-}
|
|
- PHOENIX_WEBHOOK_URL=${PHOENIX_WEBHOOK_URL:-}
|
|
- PHOENIX_VERIFY_URL=${PHOENIX_VERIFY_URL:-}
|
|
- PHOENIX_DOMAINS_URL=${PHOENIX_DOMAINS_URL:-}
|
|
- LOCAL_DOMAINS=${LOCAL_DOMAINS:-}
|
|
- REDIS_URL=${REDIS_URL:-redis://redis:6379}
|
|
- ELEKTRINE_QUEUE_NAME=${ELEKTRINE_QUEUE_NAME:-elektrine:inbound}
|
|
- ELEKTRINE_DLQ_NAME=${ELEKTRINE_DLQ_NAME:-elektrine:inbound:dlq}
|
|
- WEBHOOK_MAX_RETRIES=${WEBHOOK_MAX_RETRIES:-5}
|
|
- WEBHOOK_RETRY_BASE_MS=${WEBHOOK_RETRY_BASE_MS:-1000}
|
|
restart: unless-stopped
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
networks:
|
|
- haraka-network
|
|
- main-app-network
|
|
depends_on:
|
|
- redis
|
|
|
|
cert-copier:
|
|
image: ${CERT_COPIER_IMAGE:-alpine:3.20}
|
|
volumes:
|
|
- main-caddy-data:/caddy-data:ro
|
|
- ssl-certs:/ssl-certs
|
|
environment:
|
|
- HARAKA_DOMAIN=${HARAKA_DOMAIN:-mail.example.com}
|
|
command: >
|
|
sh -c "
|
|
while true; do
|
|
if [ -f /caddy-data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/wildcard_.elektrine.com/wildcard_.elektrine.com.crt ]; then
|
|
cp /caddy-data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/wildcard_.elektrine.com/wildcard_.elektrine.com.crt /ssl-certs/cert.crt
|
|
cp /caddy-data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/wildcard_.elektrine.com/wildcard_.elektrine.com.key /ssl-certs/cert.key
|
|
chmod 644 /ssl-certs/cert.crt
|
|
chmod 600 /ssl-certs/cert.key
|
|
elif [ -f /caddy-data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/$$HARAKA_DOMAIN/$$HARAKA_DOMAIN.crt ]; then
|
|
cp /caddy-data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/$$HARAKA_DOMAIN/$$HARAKA_DOMAIN.crt /ssl-certs/cert.crt
|
|
cp /caddy-data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/$$HARAKA_DOMAIN/$$HARAKA_DOMAIN.key /ssl-certs/cert.key
|
|
chmod 644 /ssl-certs/cert.crt
|
|
chmod 600 /ssl-certs/cert.key
|
|
fi
|
|
sleep 30
|
|
done
|
|
"
|
|
networks:
|
|
- haraka-network
|
|
restart: unless-stopped
|
|
|
|
redis:
|
|
image: ${REDIS_IMAGE:-redis:7-alpine}
|
|
command:
|
|
- redis-server
|
|
- --appendonly
|
|
- yes
|
|
- --appendfsync
|
|
- everysec
|
|
- --save
|
|
- "900 1"
|
|
- --save
|
|
- "300 10"
|
|
- --save
|
|
- "60 10000"
|
|
ports:
|
|
- "127.0.0.1:6379:6379"
|
|
volumes:
|
|
- redis-data:/data
|
|
restart: unless-stopped
|
|
networks:
|
|
- haraka-network
|
|
|
|
clamav:
|
|
image: ${CLAMAV_IMAGE:-clamav/clamav:stable}
|
|
ports:
|
|
- "127.0.0.1:3310:3310"
|
|
volumes:
|
|
- clamav-data:/var/lib/clamav
|
|
environment:
|
|
- CLAMAV_NO_FRESHCLAM=false
|
|
restart: unless-stopped
|
|
networks:
|
|
- haraka-network
|
|
|
|
spamassassin:
|
|
image: ${SPAMASSASSIN_IMAGE:-dinkel/spamassassin:latest}
|
|
ports:
|
|
- "127.0.0.1:783:783"
|
|
volumes:
|
|
- spamassassin-data:/var/lib/spamassassin
|
|
environment:
|
|
- SA_UPDATE=1
|
|
restart: unless-stopped
|
|
networks:
|
|
- haraka-network
|
|
|
|
networks:
|
|
haraka-network:
|
|
driver: bridge
|
|
main-app-network:
|
|
external: true
|
|
name: ${MAIN_APP_NETWORK:-docker_elektrine_network}
|
|
|
|
volumes:
|
|
main-caddy-data:
|
|
external: true
|
|
name: ${MAIN_CADDY_VOLUME:-elektrine_caddy_data}
|
|
redis-data:
|
|
ssl-certs:
|
|
clamav-data:
|
|
spamassassin-data:
|