version: "3.8" networks: proxy: external: true mail: name: mail external: false volumes: letsencrypt: external: true mail-data: name: mail-data mail-state: name: mail-stat mail-logs: name: mail-logs mail-config: name: mail-config services: mailserver: image: mailserver/docker-mailserver:latest container_name: mailserver hostname: mail domainname: steinle-computer.de volumes: - mail-data:/var/mail/ - mail-state:/var/mail-state/ - mail-logs:/var/log/mail/ - mail-config:/tmp/docker-mailserver/ - letsencrypt:/etc/letsencrypt/ restart: always stop_grace_period: 1m cap_add: - NET_ADMIN environment: - ENABLE_FAIL2BAN=1 - SSL_TYPE=letsencrypt - PERMIT_DOCKER=none - ONE_DIR=1 - ENABLE_POSTGREY=1 - ENABLE_CLAMAV=1 - ENABLE_SPAMASSASSIN=1 - SPOOF_PROTECTION=1 - ENABLE_MANAGESIEVE=1 healthcheck: test: "ss --listening --tcp | grep -P 'LISTEN.+:smtp' || exit 1" timeout: 3s retries: 0 networks: - proxy labels: - "traefik.enable=true" - "traefik.tcp.routers.smtp.rule=HostSNI(`*`)" - "traefik.tcp.routers.smtp.entrypoints=smtp" - "traefik.tcp.routers.smtp.service=smtp" - "traefik.tcp.services.smtp.loadbalancer.server.port=25" - "traefik.tcp.services.smtp.loadbalancer.proxyProtocol.version=1" - "traefik.tcp.routers.smtp-ssl.rule=HostSNI(`*`)" - "traefik.tcp.routers.smtp-ssl.tls=false" - "traefik.tcp.routers.smtp-ssl.entrypoints=smtp-ssl" - "traefik.tcp.routers.smtp-ssl.service=smtp-ssl" - "traefik.tcp.services.smtp-ssl.loadbalancer.server.port=465" - "traefik.tcp.services.smtp-ssl.loadbalancer.proxyProtocol.version=1" - "traefik.tcp.routers.imap-ssl.rule=HostSNI(`*`)" - "traefik.tcp.routers.imap-ssl.entrypoints=imap-ssl" - "traefik.tcp.routers.imap-ssl.service=imap-ssl" - "traefik.tcp.services.imap-ssl.loadbalancer.server.port=10993" - "traefik.tcp.services.imap-ssl.loadbalancer.proxyProtocol.version=2" - "traefik.tcp.routers.sieve.rule=HostSNI(`*`)" - "traefik.tcp.routers.sieve.entrypoints=sieve" - "traefik.tcp.routers.sieve.service=sieve" - "traefik.tcp.services.sieve.loadbalancer.server.port=4190"