From cafb38c379cf0eca542436118803d17f6fdb6577 Mon Sep 17 00:00:00 2001 From: "stephane.david" Date: Fri, 21 Aug 2026 14:42:30 +0200 Subject: [PATCH] First version --- .env | 164 +++++++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 132 ++++++++++++++++++++++++++++++++++++ 2 files changed, 296 insertions(+) create mode 100644 .env create mode 100644 docker-compose.yml diff --git a/.env b/.env new file mode 100644 index 0000000..c02d7eb --- /dev/null +++ b/.env @@ -0,0 +1,164 @@ +# WARNING: this file is being deprecated over the new setup utility, found at https://setup.mailu.io + +# Mailu main configuration file +## Most configuration variables can be modified through the Web interface, +# these few settings must however be configured before starting the mail +# server and require a restart upon change. + +################################### +# Common configuration variables +################################### + +# Set this to the path where Mailu data and configuration is stored +ROOT=/mailu + +# Mailu version to run (1.0, 1.1, etc. or master) +VERSION=master + +# Set to a randomly generated 16 bytes string +SECRET_KEY=claireetstephane + +# Address where listening ports should bind +BIND_ADDRESS4=127.0.0.1 +BIND_ADDRESS6=::1 + +# Subnet of the docker network. This should not conflict with any networks to which your system is connected. (Internal and external!) +SUBNET=172.100.0.0/24 + +# Main mail domain +DOMAIN=sda.zonz + +# Hostnames for this server, separated with commas +HOSTNAMES=mail.sda.zone + +# Postmaster local part (will append the main mail domain) +POSTMASTER=admin + +# Choose how secure connections will behave (value: letsencrypt, cert, notls, mail, mail-letsencrypt) +TLS_FLAVOR=notls + +# Authentication rate limit (per source IP address) +AUTH_RATELIMIT=10/minute + +# Opt-out of statistics, replace with "True" to opt out +DISABLE_STATISTICS=True + +################################### +# Optional features +################################### + +# Expose the admin interface (value: true, false) +ADMIN=true + +# Choose which webmail to run if any (values: roundcube, snappymail, none) +WEBMAIL=roundcube + +# 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 +MESSAGE_SIZE_LIMIT=50000000 + +# Message rate limit for outgoing messages +# This limit is per user +MESSAGE_RATELIMIT=100/day + +# Networks granted relay permissions +# Use this with care, all hosts in this networks will be able to send mail without authentication! +RELAYNETS=192.168.0.10/24,192.168.0.11/24,192.168.0.12/24,192.168.100.0/24 + +# Will relay all outgoing mails if configured +RELAYHOST= + +# Fetchmail delay +FETCHMAIL_DELAY=600 + +# Recipient delimiter, character used to delimiter localpart from custom address part +# e.g. localpart+custom@domain;tld +RECIPIENT_DELIMITER=+ + +# DMARC rua and ruf email +DMARC_RUA=admin +DMARC_RUF=admin + +# Send automated DMARC aggregate reports (requires Rspamd 3.0+) +# Reports are sent daily at 2 AM for the previous day's email traffic +# When enabled, reports will be sent from POSTMASTER@DOMAIN to requesting domains +DMARC_SEND_REPORTS=false + +# 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: gz, bz2, lz4, zstd) +COMPRESSION= +# change compression-level, default: 6 (value: 1-9) +COMPRESSION_LEVEL= + +# IMAP full-text search is enabled by default. Set the following variable to off in order to disable the feature. +# FULL_TEXT_SEARCH=off + +################################### +# Web settings +################################### + +# Path to redirect / to +WEBROOT_REDIRECT=/webmail + +# Path to the admin interface if enabled +WEB_ADMIN=/admin + +# Path to the webmail if enabled +WEB_WEBMAIL=/webmail + +# Website name +SITENAME=SDA.Zone + +# Linked Website URL +WEBSITE=https://sda.zone + +# Registration reCaptcha settings (warning, this has some privacy impact) +# RECAPTCHA_PUBLIC_KEY= +# RECAPTCHA_PRIVATE_KEY= + +# Domain registration, uncomment to enable +# DOMAIN_REGISTRATION=true + +################################### +# Advanced settings +################################### + +# Docker-compose project name, this will prepended to containers names. +COMPOSE_PROJECT_NAME=mailu + +# Number of rounds used by the password hashing scheme +CREDENTIAL_ROUNDS=12 + +# 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 whether 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 + +# If your CPU supports Advanced Vector Extensions +# (AVX2 on x86_64, lrcpc on ARM64), you should consider enabling +# hardened-malloc earlier by uncommenting this +# LD_PRELOAD=/usr/lib/libhardened_malloc.so \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e6e23e3 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,132 @@ +services: + + front: + image: mailu/nginx:$VERSION + restart: always + env_file: .env + logging: + driver: journald + options: + tag: mailu-front + ports: + - "$BIND_ADDRESS4:80:80" + - "$BIND_ADDRESS4:443:443" + - "$BIND_ADDRESS4:110:110" + - "$BIND_ADDRESS4:143:143" + - "$BIND_ADDRESS4:993:993" + - "$BIND_ADDRESS4:995:995" + - "$BIND_ADDRESS4:25:25" + - "$BIND_ADDRESS4:465:465" + - "$BIND_ADDRESS4:587:587" + - "$BIND_ADDRESS6:80:80" + - "$BIND_ADDRESS6:443:443" + - "$BIND_ADDRESS6:110:110" + - "$BIND_ADDRESS6:143:143" + - "$BIND_ADDRESS6:993:993" + - "$BIND_ADDRESS6:995:995" + - "$BIND_ADDRESS6:25:25" + - "$BIND_ADDRESS6:465:465" + - "$BIND_ADDRESS6:587:587" + volumes: + - "$ROOT/certs:/certs" + - "$ROOT/overrides/nginx:/overrides:ro" + + redis: + image: redis:alpine + restart: always + volumes: + - "$ROOT/redis:/data" + + imap: + image: mailu/dovecot:$VERSION + restart: always + env_file: .env + logging: + driver: journald + options: + tag: mailu-imap + volumes: + - "$ROOT/mail:/mail" + - "$ROOT/overrides/dovecot:/overrides:ro" + depends_on: + - front + + smtp: + image: mailu/postfix:$VERSION + restart: always + env_file: .env + logging: + driver: journald + options: + tag: mailu-smtp + volumes: + - "$ROOT/mailqueue:/queue" + - "$ROOT/overrides/postfix:/overrides:ro" + depends_on: + - front + + antispam: + image: mailu/rspamd:$VERSION + restart: always + env_file: .env + logging: + driver: journald + options: + tag: mailu-antispam + volumes: + - "$ROOT/filter:/var/lib/rspamd" + - "$ROOT/dkim:/dkim:ro" + - "$ROOT/overrides/rspamd:/etc/rspamd/override.d:ro" + depends_on: + - front + + antivirus: + image: mailu/$ANTIVIRUS:$VERSION + restart: always + env_file: .env + volumes: + - "$ROOT/filter:/data" + + webdav: + image: mailu/$WEBDAV:$VERSION + restart: always + env_file: .env + volumes: + - "$ROOT/dav:/data" + + admin: + image: mailu/admin:$VERSION + restart: always + env_file: .env + logging: + driver: journald + options: + tag: mailu-admin + volumes: + - "$ROOT/data:/data" + - "$ROOT/dkim:/dkim" + depends_on: + - redis + + webmail: + image: "mailu/$WEBMAIL:$VERSION" + restart: always + env_file: .env + volumes: + - "$ROOT/webmail:/data" + - "$ROOT/overrides/$WEBMAIL:/overrides:ro" + depends_on: + - imap + + fetchmail: + image: mailu/fetchmail:$VERSION + restart: always + env_file: .env + +networks: + default: + driver: bridge + ipam: + driver: default + config: + - subnet: $SUBNET \ No newline at end of file