80 lines
2.1 KiB
YAML
80 lines
2.1 KiB
YAML
|
|
name: mail
|
|
|
|
services:
|
|
mail:
|
|
container_name: mail
|
|
image: mailserver/docker-mailserver:15.1.0
|
|
restart: unless-stopped
|
|
stop_grace_period: 1m
|
|
hostname: mail.saltaire.com.au
|
|
ports:
|
|
- "25:25" # SMTP (explicit TLS => STARTTLS)
|
|
- "143:143" # IMAP4 (explicit TLS => STARTTLS)
|
|
- "465:465" # ESMTP (implicit TLS)
|
|
- "587:587" # ESMTP (explicit TLS => STARTTLS)
|
|
- "993:993" # IMAP4 (implicit TLS)
|
|
environment:
|
|
ENABLE_FAIL2BAN: 1
|
|
ENABLE_QUOTAS: 0
|
|
|
|
# Rspamd
|
|
ENABLE_RSPAMD: 1
|
|
# ClamAV is compatible with Rspamd
|
|
ENABLE_CLAMAV: 0
|
|
# Rspamd replaces the functionality of these anti-spam services, disable them:
|
|
ENABLE_AMAVIS: 0
|
|
ENABLE_OPENDKIM: 0
|
|
ENABLE_OPENDMARC: 0
|
|
ENABLE_POLICYD_SPF: 0
|
|
ENABLE_POSTGREY: 0
|
|
ENABLE_SPAMASSASSIN: 0
|
|
|
|
# empty => 10240000 (~10 MB)
|
|
POSTFIX_MESSAGE_SIZE_LIMIT: 81920000
|
|
|
|
# Rspamd options
|
|
RSPAMD_GREYLISTING: 1
|
|
RSPAMD_LEARN: 1
|
|
|
|
SPOOF_PROTECTION: 1
|
|
SSL_TYPE: letsencrypt
|
|
|
|
LOG_LEVEL: info
|
|
networks:
|
|
- proxy
|
|
volumes:
|
|
- type: volume
|
|
source: proxy_data
|
|
target: /etc/letsencrypt/live/mail.saltaire.com.au/fullchain.pem
|
|
volume:
|
|
nocopy: true
|
|
subpath: caddy/certificates/acme-v02.api.letsencrypt.org-directory/mail.saltaire.com.au/mail.saltaire.com.au.crt
|
|
- type: volume
|
|
source: proxy_data
|
|
target: /etc/letsencrypt/live/mail.saltaire.com.au/privkey.pem
|
|
volume:
|
|
nocopy: true
|
|
subpath: caddy/certificates/acme-v02.api.letsencrypt.org-directory/mail.saltaire.com.au/mail.saltaire.com.au.key
|
|
- data:/var/mail/
|
|
- logs:/var/log/mail/
|
|
- state:/var/mail-state/
|
|
- /etc/localtime:/etc/localtime:ro
|
|
- ./config/:/tmp/docker-mailserver/
|
|
- ./config/cron/sa-learn:/etc/cron.d/sa-learn
|
|
cap_add:
|
|
- NET_ADMIN
|
|
healthcheck:
|
|
test: "ss --listening --tcp | grep -P 'LISTEN.+:smtp' || exit 1"
|
|
timeout: 3s
|
|
retries: 0
|
|
networks:
|
|
proxy:
|
|
external: true
|
|
volumes:
|
|
data:
|
|
logs:
|
|
state:
|
|
proxy_data:
|
|
external: true
|