version: '2.2' services: # External dependencies redis: image: redis:alpine restart: always env_file: mailu.env volumes: - "redis_data:/data" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 1s timeout: 3s retries: 30 logging: driver: journald database: image: mariadb restart: always environment: MYSQL_DATABASE: "mailu" MYSQL_USER: "mailu" MYSQL_PASSWORD: "{{mailu_database_password}}" MYSQL_ROOT_PASSWORD: "{{mailu_database_password}}" MARIADB_AUTO_UPGRADE: "1" volumes: - database:/var/lib/mysql healthcheck: test: "/usr/bin/mysql --user=mailu --password={{mailu_database_password}} --execute \"SHOW DATABASES;\"" interval: 3s timeout: 1s retries: 5 logging: driver: journald # Core services front: image: ghcr.io/mailu/nginx:{{mailu_version}} 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_port}}:{{system_email_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: database: condition: service_healthy admin: image: ghcr.io/mailu/admin:{{mailu_version}} restart: always env_file: mailu.env volumes: - "admin_data:/data" - "dkim:/dkim" depends_on: - front - redis logging: driver: journald imap: image: ghcr.io/mailu/dovecot:{{mailu_version}} restart: always env_file: mailu.env volumes: - "dovecot_mail:/mail" - "/etc/mailu/overrides:/overrides:ro" depends_on: - front logging: driver: journald smtp: image: ghcr.io/mailu/postfix:{{mailu_version}} restart: always env_file: mailu.env volumes: - "/etc/mailu/overrides:/overrides:ro" - "smtp_queue:/queue" depends_on: - front logging: driver: journald oletools: image: ghcr.io/mailu/oletools:{{mailu_version}} hostname: oletools restart: always antispam: image: ghcr.io/mailu/rspamd:{{mailu_version}} restart: always env_file: mailu.env volumes: - "filter:/var/lib/rspamd" - "dkim:/dkim" - "/etc/mailu/overrides/rspamd:/overrides:ro" depends_on: - front - redis - antivirus logging: driver: journald # Optional services antivirus: image: ghcr.io/mailu/clamav:{{mailu_version}} restart: always env_file: mailu.env volumes: - "filter:/data" logging: driver: journald webdav: image: ghcr.io/mailu/radicale:{{mailu_version}} restart: always env_file: mailu.env volumes: - "webdav_data:/data" logging: driver: journald fetchmail: image: ghcr.io/mailu/fetchmail:{{mailu_version}} volumes: - "admin_data:/data" restart: always env_file: mailu.env logging: driver: journald depends_on: - admin - smtp - imap # Webmail webmail: image: ghcr.io/mailu/webmail:{{mailu_version}} restart: always env_file: mailu.env volumes: - "webmail_data:/data" depends_on: - imap - front logging: driver: journald volumes: database: smtp_queue: admin_data: webdav_data: webmail_data: filter: dkim: dovecot_mail: redis_data: networks: default: driver: bridge ipam: driver: default config: - subnet: {{mailu_subnet}}