diff --git a/.travis.yml b/.travis.yml index bae6d04f..b1eb2d10 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,10 +12,17 @@ python: install: - pip install -r tests/requirements.txt -script: +before_script: - docker-compose -f tests/build.yml build + +script: # test.py, test name and timeout between start and tests. - python tests/compose/test.py core 1 + - python tests/compose/test.py fetchmail 1 + - travis_wait python tests/compose/test.py filters 10 + - python tests/compose/test.py rainloop 1 + - python tests/compose/test.py roundcube 1 + - python tests/compose/test.py webdav 1 deploy: provider: script diff --git a/tests/compose/core/core.yml b/tests/compose/core/docker-compose.yml similarity index 75% rename from tests/compose/core/core.yml rename to tests/compose/core/docker-compose.yml index d85388a4..47c5f179 100644 --- a/tests/compose/core/core.yml +++ b/tests/compose/core/docker-compose.yml @@ -9,13 +9,17 @@ services: # External dependencies redis: image: redis:alpine + restart: always volumes: - "/mailu/redis:/data" # Core services front: - image: mailu/nginx:master + image: ${DOCKER_ORG:-mailu}/nginx:${MAILU_VERSION:-master} + restart: always env_file: mailu.env + logging: + driver: json-file ports: - "127.0.0.1:80:80" - "::1:80:80" @@ -37,10 +41,10 @@ services: - "::1:993:993" volumes: - "/mailu/certs:/certs" - admin: - image: mailu/admin:master + image: ${DOCKER_ORG:-mailu}/admin:${MAILU_VERSION:-master} + restart: always env_file: mailu.env volumes: - "/mailu/data:/data" @@ -49,7 +53,8 @@ services: - redis imap: - image: mailu/dovecot:master + image: ${DOCKER_ORG:-mailu}/dovecot:${MAILU_VERSION:-master} + restart: always env_file: mailu.env volumes: - "/mailu/mail:/mail" @@ -58,16 +63,17 @@ services: - front smtp: - image: mailu/postfix:master + image: ${DOCKER_ORG:-mailu}/postfix:${MAILU_VERSION:-master} + restart: always env_file: mailu.env volumes: - "/mailu/overrides:/overrides" depends_on: - front - # Optional services antispam: - image: mailu/rspamd:master + image: ${DOCKER_ORG:-mailu}/rspamd:${MAILU_VERSION:-master} + restart: always env_file: mailu.env volumes: - "/mailu/filter:/var/lib/rspamd" @@ -76,7 +82,8 @@ services: depends_on: - front + # Optional services + # Webmail - diff --git a/tests/compose/mailu.env b/tests/compose/core/mailu.env similarity index 96% rename from tests/compose/mailu.env rename to tests/compose/core/mailu.env index 74c87118..b243adcc 100644 --- a/tests/compose/mailu.env +++ b/tests/compose/core/mailu.env @@ -18,16 +18,13 @@ #VERSION=master # Set to a randomly generated 16 bytes string -SECRET_KEY=1DS36JPBRGPM5JUC +SECRET_KEY=DY8PPWQXCFV84N4K # Address where listening ports should bind # This variables are now set directly in `docker-compose.yml by the setup utility # PUBLIC_IPV4= 127.0.0.1 (default: 127.0.0.1) # PUBLIC_IPV6= ::1 (default: ::1) -# Subnet -SUBNET=192.168.0.0/24 - # Main mail domain DOMAIN=mailu.io @@ -38,7 +35,7 @@ HOSTNAMES=mail.mailu.io POSTMASTER=admin # Choose how secure connections will behave (value: letsencrypt, cert, notls, mail, mail-letsencrypt) -TLS_FLAVOR=cert +TLS_FLAVOR=letsencrypt # Authentication rate limit (per source IP address) AUTH_RATELIMIT=10/minute;1000/hour @@ -123,7 +120,7 @@ WEBSITE=https://mailu.io # 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=json-file # Docker-compose project name, this will prepended to containers names. COMPOSE_PROJECT_NAME=mailu diff --git a/tests/compose/rainloop/rainloop.yml b/tests/compose/fetchmail/docker-compose.yml similarity index 63% rename from tests/compose/rainloop/rainloop.yml rename to tests/compose/fetchmail/docker-compose.yml index 29011eeb..6612dc25 100644 --- a/tests/compose/rainloop/rainloop.yml +++ b/tests/compose/fetchmail/docker-compose.yml @@ -9,13 +9,17 @@ services: # External dependencies redis: image: redis:alpine + restart: always volumes: - "/mailu/redis:/data" # Core services front: - image: mailu/nginx:master + image: ${DOCKER_ORG:-mailu}/nginx:${MAILU_VERSION:-master} + restart: always env_file: mailu.env + logging: + driver: json-file ports: - "127.0.0.1:80:80" - "::1:80:80" @@ -37,10 +41,10 @@ services: - "::1:993:993" volumes: - "/mailu/certs:/certs" - admin: - image: mailu/admin:master + image: ${DOCKER_ORG:-mailu}/admin:${MAILU_VERSION:-master} + restart: always env_file: mailu.env volumes: - "/mailu/data:/data" @@ -49,7 +53,8 @@ services: - redis imap: - image: mailu/dovecot:master + image: ${DOCKER_ORG:-mailu}/dovecot:${MAILU_VERSION:-master} + restart: always env_file: mailu.env volumes: - "/mailu/mail:/mail" @@ -58,27 +63,31 @@ services: - front smtp: - image: mailu/postfix:master + image: ${DOCKER_ORG:-mailu}/postfix:${MAILU_VERSION:-master} + restart: always env_file: mailu.env volumes: - "/mailu/overrides:/overrides" depends_on: - front + antispam: + image: ${DOCKER_ORG:-mailu}/rspamd:${MAILU_VERSION:-master} + restart: always + env_file: mailu.env + volumes: + - "/mailu/filter:/var/lib/rspamd" + - "/mailu/dkim:/dkim" + - "/mailu/overrides/rspamd:/etc/rspamd/override.d" + depends_on: + - front + # Optional services - + fetchmail: + image: ${DOCKER_ORG:-mailu}/fetchmail:${MAILU_VERSION:-master} + restart: always + env_file: mailu.env # Webmail - webmail: - image: mailu/rainloop:master - env_file: mailu.env - volumes: - - "/mailu/webmail:/data" - depends_on: - - imap - - resolver - dns: - - 192.168.0.254 - diff --git a/tests/compose/fetchmail/fetchmail.yml b/tests/compose/fetchmail/fetchmail.yml deleted file mode 100644 index 8f40ba19..00000000 --- a/tests/compose/fetchmail/fetchmail.yml +++ /dev/null @@ -1,77 +0,0 @@ -# This file is auto-generated by the Mailu configuration wizard. -# Please read the documentation before attempting any change. -# Generated for compose flavor - -version: '3.6' - -services: - - # External dependencies - redis: - image: redis:alpine - volumes: - - "/mailu/redis:/data" - - # Core services - front: - image: mailu/nginx:master - env_file: mailu.env - ports: - - "127.0.0.1:80:80" - - "::1:80:80" - - "127.0.0.1:443:443" - - "::1:443:443" - - "127.0.0.1:25:25" - - "::1:25:25" - - "127.0.0.1:465:465" - - "::1:465:465" - - "127.0.0.1:587:587" - - "::1:587:587" - - "127.0.0.1:110:110" - - "::1:110:110" - - "127.0.0.1:995:995" - - "::1:995:995" - - "127.0.0.1:143:143" - - "::1:143:143" - - "127.0.0.1:993:993" - - "::1:993:993" - volumes: - - "/mailu/certs:/certs" - - - admin: - image: mailu/admin:master - env_file: mailu.env - volumes: - - "/mailu/data:/data" - - "/mailu/dkim:/dkim" - depends_on: - - redis - - imap: - image: mailu/dovecot:master - env_file: mailu.env - volumes: - - "/mailu/mail:/mail" - - "/mailu/overrides:/overrides" - depends_on: - - front - - smtp: - image: mailu/postfix:master - env_file: mailu.env - volumes: - - "/mailu/overrides:/overrides" - depends_on: - - front - - # Optional services - - - - fetchmail: - image: mailu/fetchmail:master - env_file: mailu.env - - # Webmail - diff --git a/tests/compose/fetchmail/mailu.env b/tests/compose/fetchmail/mailu.env new file mode 100644 index 00000000..4cea36f7 --- /dev/null +++ b/tests/compose/fetchmail/mailu.env @@ -0,0 +1,139 @@ +# Mailu main configuration file +# +# Generated for compose 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=/mailu + +# Mailu version to run (1.0, 1.1, etc. or master) +#VERSION=master + +# Set to a randomly generated 16 bytes string +SECRET_KEY=PDK7N9UC7FDQ2UWE + +# Address where listening ports should bind +# This variables are now set directly in `docker-compose.yml by the setup utility +# PUBLIC_IPV4= 127.0.0.1 (default: 127.0.0.1) +# PUBLIC_IPV6= ::1 (default: ::1) + +# Main mail domain +DOMAIN=mailu.io + +# Hostnames for this server, separated with comas +HOSTNAMES=mail.mailu.io + +# 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=letsencrypt + +# Authentication rate limit (per source IP address) +AUTH_RATELIMIT=10/minute;1000/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=none + +# Dav server implementation (value: radicale, none) +WEBDAV=none + +# Antivirus solution (value: clamav, none) +#ANTIVIRUS=none + +#Antispam solution +ANTISPAM=none + +################################### +# Mail settings +################################### + +# Message size limit in bytes +# Default: accept messages up to 50MB +MESSAGE_SIZE_LIMIT=50000000 + +# Networks granted relay permissions, make sure that you include your Docker +# internal network (default to 172.17.0.0/16) +RELAYNETS=172.17.0.0/16 + +# 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=admin +DMARC_RUF=admin + + +# 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 the admin interface if enabled +WEB_ADMIN=/admin + +# Path to the webmail if enabled +WEB_WEBMAIL=/webmail + +# Website name +SITENAME=Mailu + +# Linked Website URL +WEBSITE=https://mailu.io + + + +################################### +# 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 + +# 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= \ No newline at end of file diff --git a/tests/compose/filters/docker-compose.yml b/tests/compose/filters/docker-compose.yml new file mode 100644 index 00000000..31e62e72 --- /dev/null +++ b/tests/compose/filters/docker-compose.yml @@ -0,0 +1,95 @@ +# This file is auto-generated by the Mailu configuration wizard. +# Please read the documentation before attempting any change. +# Generated for compose flavor + +version: '3.6' + +services: + + # External dependencies + redis: + image: redis:alpine + restart: always + volumes: + - "/mailu/redis:/data" + + # Core services + front: + image: ${DOCKER_ORG:-mailu}/nginx:${MAILU_VERSION:-master} + restart: always + env_file: mailu.env + logging: + driver: json-file + ports: + - "127.0.0.1:80:80" + - "::1:80:80" + - "127.0.0.1:443:443" + - "::1:443:443" + - "127.0.0.1:25:25" + - "::1:25:25" + - "127.0.0.1:465:465" + - "::1:465:465" + - "127.0.0.1:587:587" + - "::1:587:587" + - "127.0.0.1:110:110" + - "::1:110:110" + - "127.0.0.1:995:995" + - "::1:995:995" + - "127.0.0.1:143:143" + - "::1:143:143" + - "127.0.0.1:993:993" + - "::1:993:993" + volumes: + - "/mailu/certs:/certs" + + admin: + image: ${DOCKER_ORG:-mailu}/admin:${MAILU_VERSION:-master} + restart: always + env_file: mailu.env + volumes: + - "/mailu/data:/data" + - "/mailu/dkim:/dkim" + depends_on: + - redis + + imap: + image: ${DOCKER_ORG:-mailu}/dovecot:${MAILU_VERSION:-master} + restart: always + env_file: mailu.env + volumes: + - "/mailu/mail:/mail" + - "/mailu/overrides:/overrides" + depends_on: + - front + + smtp: + image: ${DOCKER_ORG:-mailu}/postfix:${MAILU_VERSION:-master} + restart: always + env_file: mailu.env + volumes: + - "/mailu/overrides:/overrides" + depends_on: + - front + + antispam: + image: ${DOCKER_ORG:-mailu}/rspamd:${MAILU_VERSION:-master} + restart: always + env_file: mailu.env + volumes: + - "/mailu/filter:/var/lib/rspamd" + - "/mailu/dkim:/dkim" + - "/mailu/overrides/rspamd:/etc/rspamd/override.d" + depends_on: + - front + + # Optional services + antivirus: + image: ${DOCKER_ORG:-mailu}/clamav:${MAILU_VERSION:-master} + restart: always + env_file: mailu.env + volumes: + - "/mailu/filter:/data" + + + + # Webmail diff --git a/tests/compose/filters/mailu.env b/tests/compose/filters/mailu.env new file mode 100644 index 00000000..15fae1fc --- /dev/null +++ b/tests/compose/filters/mailu.env @@ -0,0 +1,139 @@ +# Mailu main configuration file +# +# Generated for compose 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=/mailu + +# Mailu version to run (1.0, 1.1, etc. or master) +#VERSION=master + +# Set to a randomly generated 16 bytes string +SECRET_KEY=IUFE7Z57URZH1ZM1 + +# Address where listening ports should bind +# This variables are now set directly in `docker-compose.yml by the setup utility +# PUBLIC_IPV4= 127.0.0.1 (default: 127.0.0.1) +# PUBLIC_IPV6= ::1 (default: ::1) + +# Main mail domain +DOMAIN=mailu.io + +# Hostnames for this server, separated with comas +HOSTNAMES=mail.mailu.io + +# 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=letsencrypt + +# Authentication rate limit (per source IP address) +AUTH_RATELIMIT=10/minute;1000/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=none + +# Dav server implementation (value: radicale, none) +WEBDAV=none + +# Antivirus solution (value: clamav, none) +#ANTIVIRUS=clamav + +#Antispam solution +ANTISPAM=none + +################################### +# Mail settings +################################### + +# Message size limit in bytes +# Default: accept messages up to 50MB +MESSAGE_SIZE_LIMIT=50000000 + +# Networks granted relay permissions, make sure that you include your Docker +# internal network (default to 172.17.0.0/16) +RELAYNETS=172.17.0.0/16 + +# 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=admin +DMARC_RUF=admin + + +# 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 the admin interface if enabled +WEB_ADMIN=/admin + +# Path to the webmail if enabled +WEB_WEBMAIL=/webmail + +# Website name +SITENAME=Mailu + +# Linked Website URL +WEBSITE=https://mailu.io + + + +################################### +# 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 + +# 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= \ No newline at end of file diff --git a/tests/compose/filters+dns/filters+dns.yml b/tests/compose/rainloop/docker-compose.yml similarity index 68% rename from tests/compose/filters+dns/filters+dns.yml rename to tests/compose/rainloop/docker-compose.yml index 993ed786..730e33d8 100644 --- a/tests/compose/filters+dns/filters+dns.yml +++ b/tests/compose/rainloop/docker-compose.yml @@ -9,13 +9,17 @@ services: # External dependencies redis: image: redis:alpine + restart: always volumes: - "/mailu/redis:/data" # Core services front: - image: mailu/nginx:master + image: ${DOCKER_ORG:-mailu}/nginx:${MAILU_VERSION:-master} + restart: always env_file: mailu.env + logging: + driver: json-file ports: - "127.0.0.1:80:80" - "::1:80:80" @@ -37,17 +41,10 @@ services: - "::1:993:993" volumes: - "/mailu/certs:/certs" - - resolver: - image: mailu/unbound:master - env_file: mailu.env - restart: always - networks: - default: - ipv4_address: 192.168.0.254 admin: - image: mailu/admin:master + image: ${DOCKER_ORG:-mailu}/admin:${MAILU_VERSION:-master} + restart: always env_file: mailu.env volumes: - "/mailu/data:/data" @@ -56,7 +53,8 @@ services: - redis imap: - image: mailu/dovecot:master + image: ${DOCKER_ORG:-mailu}/dovecot:${MAILU_VERSION:-master} + restart: always env_file: mailu.env volumes: - "/mailu/mail:/mail" @@ -65,19 +63,17 @@ services: - front smtp: - image: mailu/postfix:master + image: ${DOCKER_ORG:-mailu}/postfix:${MAILU_VERSION:-master} + restart: always env_file: mailu.env volumes: - "/mailu/overrides:/overrides" depends_on: - front - - resolver - dns: - - 192.168.0.254 - # Optional services antispam: - image: mailu/rspamd:master + image: ${DOCKER_ORG:-mailu}/rspamd:${MAILU_VERSION:-master} + restart: always env_file: mailu.env volumes: - "/mailu/filter:/var/lib/rspamd" @@ -85,35 +81,17 @@ services: - "/mailu/overrides/rspamd:/etc/rspamd/override.d" depends_on: - front - - resolver - dns: - - 192.168.0.254 - antivirus: - image: mailu/clamav:master - env_file: mailu.env - volumes: - - "/mailu/filter:/data" - depends_on: - - resolver - dns: - - 192.168.0.254 + # Optional services # Webmail webmail: - image: mailu/rainloop:master + image: ${DOCKER_ORG:-mailu}/rainloop:${MAILU_VERSION:-master} + restart: always env_file: mailu.env volumes: - "/mailu/webmail:/data" depends_on: - imap - -networks: - default: - driver: bridge - ipam: - driver: default - config: - - subnet: 192.168.0.0/24 diff --git a/tests/compose/rainloop/mailu.env b/tests/compose/rainloop/mailu.env new file mode 100644 index 00000000..7ac75438 --- /dev/null +++ b/tests/compose/rainloop/mailu.env @@ -0,0 +1,139 @@ +# Mailu main configuration file +# +# Generated for compose 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=/mailu + +# Mailu version to run (1.0, 1.1, etc. or master) +#VERSION=master + +# Set to a randomly generated 16 bytes string +SECRET_KEY=QWE7CJZOET9BN4BU + +# Address where listening ports should bind +# This variables are now set directly in `docker-compose.yml by the setup utility +# PUBLIC_IPV4= 127.0.0.1 (default: 127.0.0.1) +# PUBLIC_IPV6= ::1 (default: ::1) + +# Main mail domain +DOMAIN=mailu.io + +# Hostnames for this server, separated with comas +HOSTNAMES=mail.mailu.io + +# 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=letsencrypt + +# Authentication rate limit (per source IP address) +AUTH_RATELIMIT=10/minute;1000/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 + +# Dav server implementation (value: radicale, none) +WEBDAV=none + +# Antivirus solution (value: clamav, none) +#ANTIVIRUS=none + +#Antispam solution +ANTISPAM=none + +################################### +# Mail settings +################################### + +# Message size limit in bytes +# Default: accept messages up to 50MB +MESSAGE_SIZE_LIMIT=50000000 + +# Networks granted relay permissions, make sure that you include your Docker +# internal network (default to 172.17.0.0/16) +RELAYNETS=172.17.0.0/16 + +# 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=admin +DMARC_RUF=admin + + +# 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 the admin interface if enabled +WEB_ADMIN=/admin + +# Path to the webmail if enabled +WEB_WEBMAIL=/webmail + +# Website name +SITENAME=Mailu + +# Linked Website URL +WEBSITE=https://mailu.io + + + +################################### +# 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 + +# 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= \ No newline at end of file diff --git a/tests/compose/roundcube/roundcube.yml b/tests/compose/roundcube/docker-compose.yml similarity index 64% rename from tests/compose/roundcube/roundcube.yml rename to tests/compose/roundcube/docker-compose.yml index c6e46ed9..989f6a67 100644 --- a/tests/compose/roundcube/roundcube.yml +++ b/tests/compose/roundcube/docker-compose.yml @@ -9,13 +9,17 @@ services: # External dependencies redis: image: redis:alpine + restart: always volumes: - "/mailu/redis:/data" # Core services front: - image: mailu/nginx:master + image: ${DOCKER_ORG:-mailu}/nginx:${MAILU_VERSION:-master} + restart: always env_file: mailu.env + logging: + driver: json-file ports: - "127.0.0.1:80:80" - "::1:80:80" @@ -37,10 +41,10 @@ services: - "::1:993:993" volumes: - "/mailu/certs:/certs" - admin: - image: mailu/admin:master + image: ${DOCKER_ORG:-mailu}/admin:${MAILU_VERSION:-master} + restart: always env_file: mailu.env volumes: - "/mailu/data:/data" @@ -49,7 +53,8 @@ services: - redis imap: - image: mailu/dovecot:master + image: ${DOCKER_ORG:-mailu}/dovecot:${MAILU_VERSION:-master} + restart: always env_file: mailu.env volumes: - "/mailu/mail:/mail" @@ -58,27 +63,35 @@ services: - front smtp: - image: mailu/postfix:master + image: ${DOCKER_ORG:-mailu}/postfix:${MAILU_VERSION:-master} + restart: always env_file: mailu.env volumes: - "/mailu/overrides:/overrides" depends_on: - front + antispam: + image: ${DOCKER_ORG:-mailu}/rspamd:${MAILU_VERSION:-master} + restart: always + env_file: mailu.env + volumes: + - "/mailu/filter:/var/lib/rspamd" + - "/mailu/dkim:/dkim" + - "/mailu/overrides/rspamd:/etc/rspamd/override.d" + depends_on: + - front + # Optional services - # Webmail webmail: - image: mailu/roundcube:master + image: ${DOCKER_ORG:-mailu}/roundcube:${MAILU_VERSION:-master} + restart: always env_file: mailu.env volumes: - "/mailu/webmail:/data" depends_on: - imap - - resolver - dns: - - 192.168.0.254 - diff --git a/tests/compose/roundcube/mailu.env b/tests/compose/roundcube/mailu.env new file mode 100644 index 00000000..3c092f15 --- /dev/null +++ b/tests/compose/roundcube/mailu.env @@ -0,0 +1,139 @@ +# Mailu main configuration file +# +# Generated for compose 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=/mailu + +# Mailu version to run (1.0, 1.1, etc. or master) +#VERSION=master + +# Set to a randomly generated 16 bytes string +SECRET_KEY=KXGYDHIHWTS7VRUP + +# Address where listening ports should bind +# This variables are now set directly in `docker-compose.yml by the setup utility +# PUBLIC_IPV4= 127.0.0.1 (default: 127.0.0.1) +# PUBLIC_IPV6= ::1 (default: ::1) + +# Main mail domain +DOMAIN=mailu.io + +# Hostnames for this server, separated with comas +HOSTNAMES=mail.mailu.io + +# 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=letsencrypt + +# Authentication rate limit (per source IP address) +AUTH_RATELIMIT=10/minute;1000/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=roundcube + +# Dav server implementation (value: radicale, none) +WEBDAV=none + +# Antivirus solution (value: clamav, none) +#ANTIVIRUS=none + +#Antispam solution +ANTISPAM=none + +################################### +# Mail settings +################################### + +# Message size limit in bytes +# Default: accept messages up to 50MB +MESSAGE_SIZE_LIMIT=50000000 + +# Networks granted relay permissions, make sure that you include your Docker +# internal network (default to 172.17.0.0/16) +RELAYNETS=172.17.0.0/16 + +# 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=admin +DMARC_RUF=admin + + +# 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 the admin interface if enabled +WEB_ADMIN=/admin + +# Path to the webmail if enabled +WEB_WEBMAIL=/webmail + +# Website name +SITENAME=Mailu + +# Linked Website URL +WEBSITE=https://mailu.io + + + +################################### +# 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 + +# 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= \ No newline at end of file diff --git a/tests/compose/test-script.sh b/tests/compose/test-script.sh deleted file mode 100755 index 0a3c2237..00000000 --- a/tests/compose/test-script.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -containers=( - webmail - imap - smtp - antispam - admin - redis - antivirus - webdav -# fetchmail - front -) - -# Time to sleep in minutes after starting the containers -WAIT=1 - -containers_check() { - status=0 - for container in "${containers[@]}"; do - name="${DOCKER_ORG}_${container}_1" - echo "Checking $name" - docker inspect "$name" | grep '"Status": "running"' || status=1 - done - docker ps -a - return $status -} - -container_logs() { - for container in "${containers[@]}"; do - name="${DOCKER_ORG}_${container}_1" - echo "Showing logs for $name" - docker container logs "$name" - done -} - -clean() { - docker-compose -f tests/compose/run.yml -p $DOCKER_ORG down || exit 1 - rm -fv .env -} - -# Cleanup before callig exit -die() { - clean - exit $1 -} - -for file in tests/compose/*.env ; do - cp $file .env - docker-compose -f tests/compose/run.yml -p $DOCKER_ORG up -d - echo -e "\nSleeping for ${WAIT} minutes" # Clean terminal distortion from docker-compose in travis - travis_wait sleep ${WAIT}m || sleep ${WAIT}m #Fallback sleep for local run - container_logs - containers_check || die 1 - clean -done - diff --git a/tests/compose/test.py b/tests/compose/test.py index 95670e30..dfe07ea8 100755 --- a/tests/compose/test.py +++ b/tests/compose/test.py @@ -7,21 +7,16 @@ from colorama import Fore, Style # Declare variables for service name and sleep time test_name=sys.argv[1] timeout=int(sys.argv[2]) +compose_file="tests/compose/" + test_name + "/docker-compose.yml" client = docker.APIClient(base_url='unix://var/run/docker.sock') containers = [] -# Start up containers -def start(): - os.system("cp mailu.env " + test_name + "/") - os.system("docker-compose -f " + test_name + "/" + test_name + ".yml -p $DOCKER_ORG up -d ") - # Stop containers def stop(exit_code): print_logs() - os.system("docker-compose -f " + test_name + "/" + test_name + ".yml -p $DOCKER_ORG down") - os.system("rm " + test_name +"/mailu.env") + os.system("docker-compose -f " + compose_file + " -p ${DOCKER_ORG:-mailu} down") sys.exit(exit_code) # Sleep for a defined amount of time @@ -79,7 +74,8 @@ def hooks(): elif test_file.endswith(".sh"): os.system("./" + test_name + "/" + test_file) -start() +# Start up containers +os.system("docker-compose -f " + compose_file + " -p ${DOCKER_ORG:-mailu} up -d ") print() sleep() print() diff --git a/tests/compose/webdav/webdav.yml b/tests/compose/webdav/docker-compose.yml similarity index 63% rename from tests/compose/webdav/webdav.yml rename to tests/compose/webdav/docker-compose.yml index b4d222ef..7e28c4cc 100644 --- a/tests/compose/webdav/webdav.yml +++ b/tests/compose/webdav/docker-compose.yml @@ -9,13 +9,17 @@ services: # External dependencies redis: image: redis:alpine + restart: always volumes: - "/mailu/redis:/data" # Core services front: - image: mailu/nginx:master + image: ${DOCKER_ORG:-mailu}/nginx:${MAILU_VERSION:-master} + restart: always env_file: mailu.env + logging: + driver: json-file ports: - "127.0.0.1:80:80" - "::1:80:80" @@ -37,10 +41,10 @@ services: - "::1:993:993" volumes: - "/mailu/certs:/certs" - admin: - image: mailu/admin:master + image: ${DOCKER_ORG:-mailu}/admin:${MAILU_VERSION:-master} + restart: always env_file: mailu.env volumes: - "/mailu/data:/data" @@ -49,7 +53,8 @@ services: - redis imap: - image: mailu/dovecot:master + image: ${DOCKER_ORG:-mailu}/dovecot:${MAILU_VERSION:-master} + restart: always env_file: mailu.env volumes: - "/mailu/mail:/mail" @@ -58,22 +63,33 @@ services: - front smtp: - image: mailu/postfix:master + image: ${DOCKER_ORG:-mailu}/postfix:${MAILU_VERSION:-master} + restart: always env_file: mailu.env volumes: - "/mailu/overrides:/overrides" depends_on: - front + antispam: + image: ${DOCKER_ORG:-mailu}/rspamd:${MAILU_VERSION:-master} + restart: always + env_file: mailu.env + volumes: + - "/mailu/filter:/var/lib/rspamd" + - "/mailu/dkim:/dkim" + - "/mailu/overrides/rspamd:/etc/rspamd/override.d" + depends_on: + - front + # Optional services - webdav: - image: mailu/radicale:master + image: ${DOCKER_ORG:-mailu}/radicale:${MAILU_VERSION:-master} + restart: always env_file: mailu.env volumes: - "/mailu/dav:/data" # Webmail - diff --git a/tests/compose/webdav/mailu.env b/tests/compose/webdav/mailu.env new file mode 100644 index 00000000..acb48abb --- /dev/null +++ b/tests/compose/webdav/mailu.env @@ -0,0 +1,139 @@ +# Mailu main configuration file +# +# Generated for compose 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=/mailu + +# Mailu version to run (1.0, 1.1, etc. or master) +#VERSION=master + +# Set to a randomly generated 16 bytes string +SECRET_KEY=QDHY5C0EME3YBI2W + +# Address where listening ports should bind +# This variables are now set directly in `docker-compose.yml by the setup utility +# PUBLIC_IPV4= 127.0.0.1 (default: 127.0.0.1) +# PUBLIC_IPV6= ::1 (default: ::1) + +# Main mail domain +DOMAIN=mailu.io + +# Hostnames for this server, separated with comas +HOSTNAMES=mail.mailu.io + +# 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=letsencrypt + +# Authentication rate limit (per source IP address) +AUTH_RATELIMIT=10/minute;1000/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=none + +# Dav server implementation (value: radicale, none) +WEBDAV=radicale + +# Antivirus solution (value: clamav, none) +#ANTIVIRUS=none + +#Antispam solution +ANTISPAM=none + +################################### +# Mail settings +################################### + +# Message size limit in bytes +# Default: accept messages up to 50MB +MESSAGE_SIZE_LIMIT=50000000 + +# Networks granted relay permissions, make sure that you include your Docker +# internal network (default to 172.17.0.0/16) +RELAYNETS=172.17.0.0/16 + +# 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=admin +DMARC_RUF=admin + + +# 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 the admin interface if enabled +WEB_ADMIN=/admin + +# Path to the webmail if enabled +WEB_WEBMAIL=/webmail + +# Website name +SITENAME=Mailu + +# Linked Website URL +WEBSITE=https://mailu.io + + + +################################### +# 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 + +# 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= \ No newline at end of file