diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..482dc03 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,213 @@ +# This file is auto-generated by the Mailu configuration wizard. +# Please read the documentation before attempting any change. +# Generated for compose flavor +# +# This file was reviewed and edited by titzi +# 2020-06-19 + +version: '3.5' + + +networks: + webNet: + external: + name: webNet + backend: + driver: bridge + ipam: + driver: default + config: + - subnet: 192.168.213.0/24 + + +services: + redis: + image: redis:alpine + container_name: redis_mailu + networks: + - backend + restart: unless-stopped + volumes: + - ./_data_/redis:/data + + db_mailu: + image: postgres:13-alpine + container_name: postgres_mailu + restart: unless-stopped + networks: + - backend + environment: + POSTGRES_USER: mailu + POSTGRES_DB: mailu + env_file: + - secret.env + volumes: + - ./_data_/db.postgres:/var/lib/postgresql/data + + resolver: + image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}unbound:${MAILU_VERSION:-1.7} + env_file: mailu.env + restart: unless-stopped + networks: + backend: + ipv4_address: 192.168.213.254 + + front: + image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}nginx:${MAILU_VERSION:-1.7} + networks: + - backend + - webNet + restart: unless-stopped + env_file: + - mailu.env + #- secret.env + logging: + #driver: json-file + driver: journald + expose: + - 80 + ports: + - "25:25" + - "465:465" + - "587:587" + - "110:110" + - "995:995" + - "143:143" + - "993:993" + volumes: + - "./_data_/certs:/certs" + - "./_data_/overrides/nginx:/overrides" + environment: + VIRTUAL_HOST: mailu.ckris.de,mail.ckris.de,smtp.ckris.de,imap.ckris.de + VIRTUAL_PORT: 80 + LETSENCRYPT_HOST: mailu.ckris.de,mail.ckris.de,smtp.ckris.de,imap.ckris.de + LETSENCRYPT_EMAIL: webmaster@ckris.de + LETSENCRYPT_RESTART_CONTAINER: 'true' + #LETSENCRYPT_SINGLE_DOMAIN_CERTS: 'true' + + admin: + image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}admin:${MAILU_VERSION:-1.7} + networks: + - backend + restart: unless-stopped + env_file: + - mailu.env + - secret.env + volumes: + - "./_data_/admin:/data" + - "./_data_/dkim:/dkim" + depends_on: + - redis + - db_mailu + + imap: + image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}dovecot:${MAILU_VERSION:-1.7} + networks: + - backend + restart: unless-stopped + env_file: + - mailu.env + #- secret.env + volumes: + - "./_data_/mail:/mail" + - "./_data_/overrides/dovecot:/overrides" + depends_on: + - front + - db_mailu + - redis + + smtp: + image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}postfix:${MAILU_VERSION:-1.7} + networks: + - backend + restart: unless-stopped + env_file: + - mailu.env + #- secret.env + volumes: + - "./_data_/overrides/postfix:/overrides" + depends_on: + - front + - resolver + - redis + dns: + - 192.168.213.254 + + antispam: + image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}rspamd:${MAILU_VERSION:-1.7} + networks: + - backend + restart: unless-stopped + env_file: + - mailu.env + - secret.env + volumes: + - "./_data_/filter:/var/lib/rspamd" + - "./_data_/dkim:/dkim" + - "./_data_/overrides/rspamd:/etc/rspamd/override.d" + depends_on: + - front + - redis + - resolver + dns: + - 192.168.213.254 + + antivirus: + image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}clamav:${MAILU_VERSION:-1.7} + networks: + - backend + restart: unless-stopped + env_file: + - mailu.env + - secret.env + volumes: + - "./_data_/filter:/data" + depends_on: + - redis + - resolver + - front + dns: + - 192.168.213.254 + + fetchmail: + image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}fetchmail:${MAILU_VERSION:-1.7} + networks: + - backend + restart: unless-stopped + env_file: + - mailu.env + # - secret.env + depends_on: + - resolver + dns: + - 192.168.213.254 + + webmail: + image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}roundcube:${MAILU_VERSION:-1.7} + networks: + - backend + restart: unless-stopped + env_file: + - mailu.env + - secret.env + volumes: + - "./_data_/webmail_roundcube:/data" + depends_on: + - imap + - front + +# mailu rainloop does not suport sieve filter (Server side filtering) yet +# webmail: +# image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}rainloop:${MAILU_VERSION:-1.7} +# networks: +# - backend +# restart: unless-stopped +# env_file: +# - mailu.env +# # - secret.env +# volumes: +# - "./_data_/webmail_rainloop:/data" +# depends_on: +# - imap +# - front +# #command: ["bash", "-c", 'sed -i "/^sieve_allow_raw/s/=.*/= On/" /default.ini; /start.py'] diff --git a/mailu.env b/mailu.env new file mode 100644 index 0000000..eec8a13 --- /dev/null +++ b/mailu.env @@ -0,0 +1,158 @@ +# Mailu main configuration file +# +# This file is autogenerated by the configuration management wizard for compose flavor. +# For a detailed list of configuration variables, see the documentation at +# https://mailu.io +# +# This file was reviewed and edited by titzi +# 2020-06-19 + +################################### +# Common configuration variables +################################### + +# Subnet of the docker network. This should not conflict with any networks to which your system is connected. (Internal and external!) +SUBNET=192.168.213.0/24 + +# Main mail domain +# Reverse DNS Hostmaane must be part of that domain +# Server identification for outgoing mail +DOMAIN=ckris.de + +# Hostnames for this server, separated with comas +# external server will conect to this server using this hostnames +# Need SSL cert, A/AAAA record -> Server IP and MX Record -> at least one of the hostnames +#HOSTNAMES=ckris.de,mail.ckris.de,smtp.ckris.de,imap.ckris.de +HOSTNAMES=mail.ckris.de,smtp.ckris.de,imap.ckris.de + +# Postmaster local part (will append the main mail domain) +POSTMASTER=postmaster + +# Choose how secure connections will behave (value: letsencrypt, cert, notls, mail, mail-letsencrypt) +TLS_FLAVOR=mail +#TLS_FLAVOR=mail-letsencrypt + +# Authentication rate limit (per source IP address) +AUTH_RATELIMIT=10/minute;100/hour + +# Opt-out of statistics, replace with "True" to opt out +DISABLE_STATISTICS=False + +################################### +# Optional features +################################### + +# Expose the admin interface (value: true, false) +ADMIN=true + +# Choose which webmail to run if any (values: roundcube, rainloop, none) +WEBMAIL=rainloop +#WEBMAIL=roundcube +#WEBMAIL=none + +# Dav server implementation (value: radicale, none) +WEBDAV=none + +# Antivirus solution (value: clamav, none) +ANTIVIRUS=clamav + +################################### +# Mail settings +################################### + +# Message size limit in bytes +# Default: accept messages up to 50MB +# Max attachment size will be 33% smaller +# 100MB +MESSAGE_SIZE_LIMIT=100000000 + +# Networks granted relay permissions +# Use this with care, all hosts in this networks will be able to send mail without authentication! +RELAYNETS= + +# Will relay all outgoing mails if configured +RELAYHOST= + +# Fetchmail delay +FETCHMAIL_DELAY=600 + +# Recipient delimiter, character used to delimiter localpart from custom address part +RECIPIENT_DELIMITER=+ + +# DMARC rua and ruf email +DMARC_RUA=postmaster +DMARC_RUF=postmaster + +# Welcome email, enable and set a topic and body if you wish to send welcome +# emails to all users. +WELCOME=false +WELCOME_SUBJECT=Welcome to your new email account +WELCOME_BODY=Welcome to your new email account, if you can read this, then it is configured properly! + +# Maildir Compression +# choose compression-method, default: none (value: bz2, gz) +COMPRESSION= +# change compression-level, default: 6 (value: 1-9) +COMPRESSION_LEVEL= + +################################### +# Web settings +################################### + +# Path to redirect / to +WEBROOT_REDIRECT=/webmail +#WEBROOT_REDIRECT=/config + +# Path to the admin interface if enabled +#WEB_ADMIN=/admin +WEB_ADMIN=/config + +# Path to the webmail if enabled +WEB_WEBMAIL=/webmail + +# Website name +SITENAME=CKris Mail Server + +# Linked Website URL +WEBSITE=https://mailu.ckris.de + + + +################################### +# Advanced settings +################################### + +# Log driver for front service. Possible values: +# json-file (default) +# journald (On systemd platforms, useful for Fail2Ban integration) +# syslog (Non systemd platforms, Fail2Ban integration. Disables `docker-compose log` for front!) +# LOG_DRIVER=json-file +LOG_DRIVER=journald + +# Docker-compose project name, this will prepended to containers names. +COMPOSE_PROJECT_NAME=mailu + +# Default password scheme used for newly created accounts and changed passwords +# (value: BLF-CRYPT, SHA512-CRYPT, SHA256-CRYPT, MD5-CRYPT, CRYPT) +PASSWORD_SCHEME=BLF-CRYPT + +# Header to take the real ip from +REAL_IP_HEADER= + +# IPs for nginx set_real_ip_from (CIDR list separated by commas) +REAL_IP_FROM= + +# choose wether mailu bounces (no) or rejects (yes) mail when recipient is unknown (value: yes, NO) +REJECT_UNLISTED_RECIPIENT= + +# Log level threshold in start.py (value: CRITICAL, ERROR, WARNING, INFO, DEBUG, NOTSET) +LOG_LEVEL=WARNING + +################################### +# Database settings +################################### +#DB_FLAVOR=mysql +DB_FLAVOR=postgresql +DB_USER=mailu +DB_HOST=db_mailu +DB_NAME=mailu