123 lines
3.6 KiB
Plaintext
123 lines
3.6 KiB
Plaintext
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:
|
|
- "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
|
|
networks:
|
|
- mail
|
|
|
|
networks:
|
|
mail:
|
|
name: mail
|
|
driver: bridge
|