networks: default: driver: overlay clamav: driver: overlay fts_attachments: driver: overlay internal: true oletools: driver: overlay internal: true radicale: driver: overlay webmail: driver: overlay services: admin: image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}admin:${MAILU_VERSION:-2024.06} env_file: stack.env depends_on: - redis - resolver dns: - 192.168.205.254 volumes: - /share/docker_data/mailu3/data:/data - /share/docker_data/mailu3/dkim:/dkim deploy: restart_policy: condition: any placement: constraints: [node.role == manager] antispam: image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}rspamd:${MAILU_VERSION:-2024.06} env_file: stack.env depends_on: - front - redis - oletools - antivirus - resolver dns: - 192.168.205.254 networks: - default - oletools - clamav volumes: - /share/docker_data/mailu3/filter:/var/lib/rspamd - /share/docker_data/mailu3/overrides/rspamd:/overrides:ro deploy: restart_policy: condition: any placement: constraints: [node.role == manager] antivirus: image: ${DOCKER_REGISTRY:-}clamav/clamav-debian:1.2.0-6 networks: - clamav volumes: - /share/docker_data/mailu3/filter/clamav:/var/lib/clamav deploy: restart_policy: condition: any placement: constraints: [node.role == manager] fetchmail: image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}fetchmail:${MAILU_VERSION:-2024.06} env_file: stack.env depends_on: - admin - smtp - imap - resolver dns: - 192.168.205.254 volumes: - /share/docker_data/mailu3/data/fetchmail:/data deploy: restart_policy: condition: any placement: constraints: [node.role == manager] front: image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}nginx:${MAILU_VERSION:-2024.06} env_file: stack.env dns: - 192.168.205.254 networks: - default - webmail - radicale ports: - "8880:80" - "8443:443" - "25:25" - "465:465" - "587:587" - "110:110" - "995:995" - "143:143" - "993:993" - "4190:4190" volumes: - /share/docker_data/mailu3/certs:/certs - /share/docker_data/mailu3/overrides/nginx:/overrides:ro deploy: restart_policy: condition: any placement: constraints: [node.role == manager] fts_attachments: image: ${DOCKER_REGISTRY:-}apache/tika:2.9.2.1-full networks: - fts_attachments deploy: restart_policy: condition: any placement: constraints: [node.role == manager] imap: image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}dovecot:${MAILU_VERSION:-2024.06} env_file: stack.env dns: - 192.168.205.254 networks: - default - fts_attachments volumes: - /share/docker_data/mailu3/mail:/mail - /share/docker_data/mailu3/overrides/dovecot:/overrides:ro deploy: restart_policy: condition: any placement: constraints: [node.role == manager] oletools: image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}oletools:${MAILU_VERSION:-2024.06} networks: - oletools deploy: restart_policy: condition: any placement: constraints: [node.role == manager] redis: image: ${DOCKER_REGISTRY:-}redis:alpine volumes: - /share/docker_data/mailu3/redis:/data deploy: restart_policy: condition: any placement: constraints: [node.role == manager] resolver: image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}unbound:${MAILU_VERSION:-2024.06} env_file: stack.env networks: - default deploy: restart_policy: condition: any placement: constraints: [node.role == manager] smtp: image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}postfix:${MAILU_VERSION:-2024.06} env_file: stack.env dns: - 192.168.205.254 volumes: - /share/docker_data/mailu3/mailqueue:/queue - /share/docker_data/mailu3/overrides/postfix:/overrides:ro deploy: restart_policy: condition: any placement: constraints: [node.role == manager] webdav: image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}radicale:${MAILU_VERSION:-2024.06} networks: - radicale volumes: - /share/docker_data/mailu3/dav:/data deploy: restart_policy: condition: any placement: constraints: [node.role == manager] webmail: image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}webmail:${MAILU_VERSION:-2024.06} env_file: stack.env networks: - webmail volumes: - /share/docker_data/mailu3/webmail:/data - /share/docker_data/mailu3/overrides/roundcube:/overrides:ro deploy: restart_policy: condition: any placement: constraints: [node.role == manager]