mirror of
https://github.com/Mailu/Mailu.git
synced 2024-12-14 10:53:30 +02:00
86b4242f82
886: Ipv6 support r=mergify[bot] a=muhlemmer ## What type of PR? (Feature, enhancement, bug-fix, documentation) -> A bit of everything ## What does this PR do? Document how to use ipv6nat. This, however triggers some kind of flaky behavior with the Docker DNS resolver, resulting in lookup failures between containers. So all resolving needs to be done during container startup/configuration. In order not to pollute every single start.py file, we've created a small library called [Mailu/MailuStart](https://github.com/Mailu/MailuStart). As an addition, this library also defines the template generation function, including its logging facility. Note: `docker-compose.yml` downgrade is necessary, as IPv6 settings are not supported by the Docker Compose file format 3 😞 ### Related issue(s) Supersedes PR #844 - Fixes #827 - Hopefully helps with #829 and #834 ## No backport yet This PR directly imports MailuStart from git. This makes it a bit more simple to implement on the short term an do some testing and probably some future improvements. When everything is proved stable, we will create a proper PyPi package with versioning and consider back porting. ## Prerequistes Before we can consider review and merge, please make sure the following list is done and checked. If an entry in not applicable, you can check it or remove it from the list. - [x] In case of feature or enhancement: documentation updated accordingly - [x] Unless it's docs or a minor change: place entry in the [changelog](CHANGELOG.md), under the latest un-released version. Co-authored-by: Ionut Filip <ionut.philip@gmail.com> Co-authored-by: Tim Möhlmann <muhlemmer@gmail.com>
188 lines
5.8 KiB
Bash
188 lines
5.8 KiB
Bash
# Mailu main configuration file
|
|
#
|
|
# Generated for {{ flavor }} flavor
|
|
#
|
|
# This file is autogenerated by the configuration management wizard.
|
|
# For a detailed list of configuration variables, see the documentation at
|
|
# https://mailu.io
|
|
|
|
###################################
|
|
# Common configuration variables
|
|
###################################
|
|
|
|
# Set this to the path where Mailu data and configuration is stored
|
|
# This variable is now set directly in `docker-compose.yml by the setup utility
|
|
# ROOT={{ root }}
|
|
|
|
# Mailu version to run (1.0, 1.1, etc. or master)
|
|
#VERSION={{ version }}
|
|
|
|
# Set to a randomly generated 16 bytes string
|
|
SECRET_KEY={{ secret(16) }}
|
|
|
|
# Address where listening ports should bind
|
|
# This variables are now set directly in `docker-compose.yml by the setup utility
|
|
# PUBLIC_IPV4= {{ bind4 }} (default: 127.0.0.1)
|
|
# PUBLIC_IPV6= {{ bind6 }} (default: ::1)
|
|
|
|
# Subnet of the docker network. This should not conflict with any networks to which your system is connected. (Internal and external!)
|
|
SUBNET={{ subnet }}
|
|
{% if ipv6_enabled %}
|
|
SUBNET6={{ subnet6 }}
|
|
{% endif %}
|
|
|
|
# Main mail domain
|
|
DOMAIN={{ domain }}
|
|
|
|
# Hostnames for this server, separated with comas
|
|
HOSTNAMES={{ hostnames }}
|
|
|
|
# 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={{ tls_flavor }}
|
|
|
|
# Authentication rate limit (per source IP address)
|
|
{% if auth_ratelimit_pm > '0' and auth_ratelimit_ph > '0' %}
|
|
AUTH_RATELIMIT={{ auth_ratelimit_pm }}/minute;{{ auth_ratelimit_ph }}/hour
|
|
{% endif %}
|
|
|
|
# Opt-out of statistics, replace with "True" to opt out
|
|
DISABLE_STATISTICS={{ disable_statistics or 'False' }}
|
|
|
|
###################################
|
|
# Optional features
|
|
###################################
|
|
|
|
# Expose the admin interface (value: true, false)
|
|
ADMIN={{ admin_enabled or 'false' }}
|
|
|
|
# Choose which webmail to run if any (values: roundcube, rainloop, none)
|
|
WEBMAIL={{ webmail_type }}
|
|
|
|
# Dav server implementation (value: radicale, none)
|
|
WEBDAV={{ webdav_enabled or 'none' }}
|
|
|
|
# Antivirus solution (value: clamav, none)
|
|
#ANTIVIRUS={{ antivirus_enabled or 'none' }}
|
|
|
|
#Antispam solution
|
|
ANTISPAM={{ antispam_enabled or 'none'}}
|
|
|
|
###################################
|
|
# Mail settings
|
|
###################################
|
|
|
|
# Message size limit in bytes
|
|
# Default: accept messages up to 50MB
|
|
# Max attachment size will be 33% smaller
|
|
MESSAGE_SIZE_LIMIT={{ message_size_limit or '50000000' }}
|
|
|
|
# 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={{ relayhost }}
|
|
|
|
# Fetchmail delay
|
|
FETCHMAIL_DELAY={{ fetchmail_delay or '600' }}
|
|
|
|
# Recipient delimiter, character used to delimiter localpart from custom address part
|
|
RECIPIENT_DELIMITER={{ recipient_delimiter or '+' }}
|
|
|
|
# DMARC rua and ruf email
|
|
DMARC_RUA={{ dmarc_rua or 'admin' }}
|
|
DMARC_RUF={{ dmarc_ruf or 'admin' }}
|
|
|
|
# Welcome email, enable and set a topic and body if you wish to send welcome
|
|
# emails to all users.
|
|
WELCOME={{ welcome_enable or 'false' }}
|
|
WELCOME_SUBJECT={{ welcome_subject or 'Welcome to your new email account' }}
|
|
WELCOME_BODY={{ welcome_body or '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={{ compression }}
|
|
# change compression-level, default: 6 (value: 1-9)
|
|
COMPRESSION_LEVEL={{ compression_level }}
|
|
|
|
###################################
|
|
# Web settings
|
|
###################################
|
|
|
|
# Path to redirect / to
|
|
WEBROOT_REDIRECT=/webmail
|
|
|
|
# Path to the admin interface if enabled
|
|
WEB_ADMIN={{ admin_path }}
|
|
|
|
# Path to the webmail if enabled
|
|
{% if webmail_type != 'none' and webmail_path == '' %}
|
|
WEB_WEBMAIL=/
|
|
{% else %}
|
|
WEB_WEBMAIL={{ webmail_path }}
|
|
{% endif %}
|
|
|
|
# Website name
|
|
SITENAME={{ site_name }}
|
|
|
|
# Linked Website URL
|
|
WEBSITE={{ website }}
|
|
|
|
{% if recaptcha_public_key and recaptcha_private_key %}
|
|
# Registration reCaptcha settings (warning, this has some privacy impact)
|
|
# RECAPTCHA_PUBLIC_KEY={{ recaptcha_public_key }}
|
|
# RECAPTCHA_PRIVATE_KEY={{ recaptcha_private_key }}
|
|
{% endif %}
|
|
|
|
{% if domain_registration %}
|
|
# Domain registration (remove to disable)
|
|
DOMAIN_REGISTRATION=true
|
|
{% endif %}
|
|
|
|
###################################
|
|
# 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={{ log_driver or 'json-file' }}
|
|
|
|
# Docker-compose project name, this will prepended to containers names.
|
|
COMPOSE_PROJECT_NAME={{ compose_project_name or 'mailu' }}
|
|
|
|
# Default password scheme used for newly created accounts and changed passwords
|
|
# (value: BLF-CRYPT, SHA512-CRYPT, SHA256-CRYPT, MD5-CRYPT, CRYPT)
|
|
PASSWORD_SCHEME={{ password_scheme or 'BLF-CRYPT' }}
|
|
|
|
# Header to take the real ip from
|
|
REAL_IP_HEADER={{ real_ip_header }}
|
|
|
|
# IPs for nginx set_real_ip_from (CIDR list separated by commas)
|
|
REAL_IP_FROM={{ real_ip_from }}
|
|
|
|
# choose wether mailu bounces (no) or rejects (yes) mail when recipient is unknown (value: yes, no)
|
|
REJECT_UNLISTED_RECIPIENT={{ reject_unlisted_recipient }}
|
|
|
|
# Log level threshold in start.py (value: CRITICAL, ERROR, WARNING, INFO, DEBUG, NOTSET)
|
|
LOG_LEVEL=WARNING
|
|
|
|
###################################
|
|
# Database settings
|
|
###################################
|
|
DB_FLAVOR={{ db_flavor }}
|
|
{% if db_flavor == 'postgresql' and postgresql == 'internal' %}
|
|
DB_PW={{ secret(16) }}
|
|
{% endif %}
|
|
{% if postgresql == 'external' or db_flavor == 'mysql' %}
|
|
DB_USER={{ db_user }}
|
|
DB_PW={{ db_pw }}
|
|
DB_HOST={{ db_url }}
|
|
DB_NAME={{ db_name }}
|
|
{% endif %}
|
|
|