version: '2.2' services: {% include 'templates/docker-redis-service.yml.j2' %} env_file: mailu.env depends_on: - resolver dns: - 192.168.203.254 depends_on: - resolver dns: - 192.168.203.254 networks: - default - webmail - radicale # Core services resolver: image: ghcr.io/mailu/unbound:{{version_mailu}} env_file: mailu.env restart: always networks: default: ipv4_address: 192.168.203.254 logging: driver: journald front: image: ghcr.io/mailu/nginx:{{version_mailu}} restart: always env_file: mailu.env logging: driver: journald ports: - "127.0.0.1:{{ http_port }}:80" - "{{ ip4_address }}:25:25" - "{{ ip4_address }}:465:465" - "{{ ip4_address }}:{{system_email_smtp_port}}:{{system_email_smtp_port}}" - "{{ ip4_address }}:110:110" - "{{ ip4_address }}:995:995" - "{{ ip4_address }}:143:143" - "{{ ip4_address }}:993:993" volumes: - "/etc/mailu/overrides/nginx:/overrides:ro" - "/etc/mailu/certs:/certs" depends_on: resolver: condition: service_started {% if not ( enable_central_database | lower | bool ) %} database: condition: service_healthy {% endif %} networks: - default - webmail - radicale dns: - 192.168.203.254 admin: image: ghcr.io/mailu/admin:{{version_mailu}} restart: always env_file: mailu.env volumes: - "admin_data:/data" - "dkim:/dkim" depends_on: - resolver - front - redis {% if not ( enable_central_database | lower | bool ) %} - database {% endif %} logging: driver: journald dns: - 192.168.203.254 imap: image: ghcr.io/mailu/dovecot:{{version_mailu}} restart: always env_file: mailu.env volumes: - "dovecot_mail:/mail" - "/etc/mailu/overrides:/overrides:ro" depends_on: - front - resolver dns: - 192.168.203.254 logging: driver: journald smtp: image: ghcr.io/mailu/postfix:{{version_mailu}} restart: always env_file: mailu.env volumes: - "/etc/mailu/overrides:/overrides:ro" - "smtp_queue:/queue" depends_on: - front - resolver dns: - 192.168.203.254 logging: driver: journald oletools: image: ghcr.io/mailu/oletools:{{version_mailu}} hostname: oletools restart: always depends_on: - resolver dns: - 192.168.203.254 networks: - noinet antispam: image: ghcr.io/mailu/rspamd:{{version_mailu}} restart: always env_file: mailu.env volumes: - "filter:/var/lib/rspamd" - "dkim:/dkim" - "/etc/mailu/overrides/rspamd:/overrides:ro" depends_on: - front - redis - antivirus - resolver dns: - 192.168.203.254 networks: - default - noinet logging: driver: journald # Optional services antivirus: image: ghcr.io/mailu/clamav:{{version_mailu}} restart: always env_file: mailu.env volumes: - "filter:/data" depends_on: - resolver dns: - 192.168.203.254 logging: driver: journald webdav: image: ghcr.io/mailu/radicale:{{version_mailu}} restart: always env_file: mailu.env volumes: - "webdav_data:/data" logging: driver: journald networks: - radicale depends_on: - resolver dns: - 192.168.203.254 fetchmail: image: ghcr.io/mailu/fetchmail:{{version_mailu}} volumes: - "admin_data:/data" restart: always env_file: mailu.env logging: driver: journald depends_on: - admin - smtp - imap - resolver dns: - 192.168.203.254 webmail: image: ghcr.io/mailu/webmail:{{version_mailu}} restart: always env_file: mailu.env volumes: - "webmail_data:/data" - "/etc/mailu/overrides:/overrides:ro" depends_on: - imap - front - resolver logging: driver: journald networks: - webmail dns: - 192.168.203.254 {% if not ( enable_central_database | lower | bool ) %} {% include 'templates/docker-postgres-service.yml.j2' %} {% endif %} volumes: {% if not ( enable_central_database | lower | bool ) %} database: {% endif %} smtp_queue: admin_data: webdav_data: webmail_data: filter: dkim: dovecot_mail: redis: networks: default: driver: bridge ipam: driver: default config: - subnet: {{mailu_subnet}} radicale: driver: bridge webmail: driver: bridge noinet: driver: bridge internal: true