initial
This commit is contained in:
@@ -0,0 +1,166 @@
|
||||
version: "3.9"
|
||||
|
||||
# Define reusable templates for common service settings
|
||||
x-common-service:
|
||||
&common-service
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
TZ: "${TZ:-Etc/UTC}"
|
||||
volumes:
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
|
||||
x-mailserver-service:
|
||||
&mailserver-service
|
||||
<<: *common-service
|
||||
hostname: mail
|
||||
domainname: freedoh.net
|
||||
environment:
|
||||
ENABLE_SPAMASSASSIN: "${ENABLE_SPAMASSASSIN:-1}"
|
||||
ENABLE_CLAMAV: "${ENABLE_CLAMAV:-1}"
|
||||
ENABLE_POP3: "${ENABLE_POP3:-1}"
|
||||
ENABLE_IMAP: "${ENABLE_IMAP:-1}"
|
||||
ENABLE_MANAGESIEVE: "${ENABLE_MANAGESIEVE:-1}"
|
||||
RELAY_HOST: "${RELAY_HOST:-}"
|
||||
POSTMASTER_ADDRESS: "${POSTMASTER_ADDRESS:-postmaster@example.com}"
|
||||
SSL_TYPE: "${SSL_TYPE:-manual}"
|
||||
SSL_CERT_PATH: "/etc/ssl/mail/fullchain.pem"
|
||||
SSL_KEY_PATH: "/etc/ssl/mail/privkey.pem"
|
||||
DKIM_SELECTOR: "${DKIM_SELECTOR:-mail}"
|
||||
DKIM_DOMAIN: "${DKIM_DOMAIN:-freedoh.net}"
|
||||
volumes:
|
||||
- dmsdata:/var/mail
|
||||
- dmsstate:/var/mail-state
|
||||
- dmslogs:/var/log/mail
|
||||
- dmsconfig:/tmp/docker-mailserver
|
||||
- dmscerts:/etc/ssl/mail:ro
|
||||
ports:
|
||||
- "25:25"
|
||||
- "465:465"
|
||||
- "587:587"
|
||||
- "993:993"
|
||||
- "995:995"
|
||||
|
||||
services:
|
||||
# Primary mailserver instance
|
||||
mailserver:
|
||||
<<: *mailserver-service
|
||||
image: mailserver/docker-mailserver:latest
|
||||
container_name: dms
|
||||
profiles:
|
||||
- imap
|
||||
- smtp
|
||||
environment:
|
||||
ENABLE_FAIL2BAN: "0"
|
||||
|
||||
# Fail2Ban-enabled mailserver instance
|
||||
mailserver-fail2ban:
|
||||
<<: *mailserver-service
|
||||
image: mailserver/docker-mailserver:latest
|
||||
container_name: dms
|
||||
profiles:
|
||||
- fail2ban
|
||||
environment:
|
||||
ENABLE_FAIL2BAN: "1"
|
||||
cap_add:
|
||||
- NET_ADMIN # Required for Fail2Ban
|
||||
|
||||
rspamd:
|
||||
<<: *common-service
|
||||
image: rspamd/rspamd
|
||||
container_name: rspamd
|
||||
profiles:
|
||||
- smtp
|
||||
environment:
|
||||
RSPAMD_PASSWORD: "${RSPAMD_PASSWORD:-rspamd_admin_password}"
|
||||
volumes:
|
||||
- rspamd_data:/var/lib/rspamd
|
||||
ports:
|
||||
- "11334:11334"
|
||||
- "11332:11332"
|
||||
command: ["-i", "127.0.0.1"]
|
||||
|
||||
roundcube:
|
||||
<<: *common-service
|
||||
image: roundcube/roundcubemail:latest
|
||||
container_name: roundcube
|
||||
profiles:
|
||||
- imap
|
||||
depends_on:
|
||||
- mailserver
|
||||
environment:
|
||||
ROUNDCUBEMAIL_DEFAULT_HOST: "${ROUNDCUBEMAIL_DEFAULT_HOST:-mail.example.com}"
|
||||
ROUNDCUBEMAIL_SMTP_SERVER: "${ROUNDCUBEMAIL_SMTP_SERVER:-mail.example.com}"
|
||||
ROUNDCUBEMAIL_SMTP_PORT: "${ROUNDCUBEMAIL_SMTP_PORT:-587}"
|
||||
ROUNDCUBEMAIL_PLUGINS: "${ROUNDCUBEMAIL_PLUGINS:-managesieve}"
|
||||
PHP_MEMORY_LIMIT: "${PHP_MEMORY_LIMIT:-256M}"
|
||||
volumes:
|
||||
- roundcube_data:/var/www/html
|
||||
ports:
|
||||
- "8080:80"
|
||||
|
||||
imapsync:
|
||||
<<: *common-service
|
||||
image: gilleslamiral/imapsync
|
||||
container_name: imapsync
|
||||
profiles:
|
||||
- imap
|
||||
command: "sleep infinity"
|
||||
volumes:
|
||||
- imapsync_config:/sync/config
|
||||
- imapsync_logs:/sync/logs
|
||||
|
||||
volumes:
|
||||
dmsdata:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: 'none'
|
||||
o: 'bind'
|
||||
device: '/${BASEDIR}/dms/data/'
|
||||
dmsstate:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: 'none'
|
||||
o: 'bind'
|
||||
device: '/${BASEDIR}/dms/state/'
|
||||
dmslogs:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: 'none'
|
||||
o: 'bind'
|
||||
device: '/${BASEDIR}/dms/logs/'
|
||||
dmsconfig:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: 'none'
|
||||
o: 'bind'
|
||||
device: '/${BASEDIR}/dms/config/'
|
||||
dmscerts:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: 'none'
|
||||
o: 'bind'
|
||||
device: '/${BASEDIR}/dms/certs/'
|
||||
rspamd_data:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: 'none'
|
||||
o: 'bind'
|
||||
device: '/${BASEDIR}/rspamd/data/'
|
||||
roundcube_data:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: 'none'
|
||||
o: 'bind'
|
||||
device: '/${BASEDIR}/roundcube/data/'
|
||||
imapsync_config:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: 'none'
|
||||
o: 'bind'
|
||||
device: '/${BASEDIR}/imapsync/config/'
|
||||
imapsync_logs:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: 'none'
|
||||
o: 'bind'
|
||||
device: '/${BASEDIR}/imapsync/logs/'
|
||||
|
||||
Reference in New Issue
Block a user