services: stalwart: image: stalwartlabs/stalwart:latest container_name: stalwart restart: unless-stopped env_file: .env ports: - "25:25" # SMTP (входящая почта) - "465:465" # SMTP over TLS (SMTPS) - "587:587" # SMTP submission (клиенты) - "143:143" # IMAP - "993:993" # IMAP over TLS - "4190:4190" # ManageSieve - "8080:8080" # HTTP: WebAdmin + JMAP + autodiscovery - "443:443" # HTTPS (если не используется внешний reverse proxy) volumes: - ./data/stalwart:/opt/stalwart - ./config/stalwart:/etc/stalwart #- STALWART_RECOVERY_ADMIN=admin:MyStrongPassword123 #- STALWART_RECOVERY_MODE=1 environment: - TZ=${TZ:-UTC} depends_on: rspamd: condition: service_started clamav: condition: service_healthy networks: - mail rspamd: image: rspamd/rspamd:latest container_name: rspamd restart: unless-stopped env_file: .env volumes: - ./config/rspamd:/etc/rspamd/local.d - ./data/rspamd:/var/lib/rspamd networks: - mail # Milter порт 11332 доступен только внутри сети clamav: image: clamav/clamav:stable container_name: clamav restart: unless-stopped env_file: .env volumes: - ./data/clamav/db:/var/lib/clamav - ./data/clamav/run:/run/clamav - ./config/clamav/clamav-milter.conf:/etc/clamav/clamav-milter.conf environment: - CLAMAV_NO_FRESHCLAMD=false - CLAMAV_NO_MILTERD=false - CLAMAV_MILTER_PORT=7357 healthcheck: test: ["CMD", "clamdcheck.sh"] interval: 60s retries: 3 start_period: 120s # ClamAV долго стартует (загрузка сигнатур) networks: - mail roundcube: build: ./config/roundcube #image: roundcube/roundcubemail:latest-apache container_name: roundcube restart: unless-stopped ports: - "8888:80" # веб-интерфейс почты, менять при конфликте volumes: - ./data/roundcube:/var/roundcube/db environment: # IMAP — подключаемся к stalwart внутри сети ROUNDCUBEMAIL_DEFAULT_HOST: "ssl://stalwart" ROUNDCUBEMAIL_DEFAULT_PORT: "993" # SMTP — через STARTTLS ROUNDCUBEMAIL_SMTP_SERVER: "tls://stalwart" ROUNDCUBEMAIL_SMTP_PORT: "587" # Домен по умолчанию — пользователь вводит только логин, домен подставляется ROUNDCUBEMAIL_USERNAME_DOMAIN: "${MAIL_DOMAIN}" # SQLite — не нужна отдельная БД ROUNDCUBEMAIL_DB_TYPE: "sqlite" # Плагины ROUNDCUBEMAIL_PLUGINS: "archive,zipdownload,managesieve" ROUNDCUBEMAIL_SKIN: "elastic" ROUNDCUBEMAIL_UPLOAD_MAX_FILESIZE: "25M" depends_on: - stalwart networks: - mail autoheal: image: willfarrell/autoheal:latest container_name: autoheal restart: unless-stopped environment: - AUTOHEAL_CONTAINER_LABEL=all volumes: - /var/run/docker.sock:/var/run/docker.sock cadvisor: image: gcr.io/cadvisor/cadvisor:latest container_name: cadvisor restart: unless-stopped ports: - "127.0.0.1:8091:8080" volumes: - /:/rootfs:ro - /var/run:/var/run:ro - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro - /dev/disk/:/dev/disk:ro #privileged: true security_opt: - "no-new-privileges:true" networks: - mail networks: mail: name: mail driver: bridge