mail-server/docker-compose.yml.template
2026-07-01 01:09:32 +03:00

93 lines
2.8 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
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
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:
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
networks:
mail:
name: mail
driver: bridge