Merge branch 'feat-test-suite' into feat-setup
This commit is contained in:
@@ -6,12 +6,17 @@ addons:
|
|||||||
- docker-ce
|
- docker-ce
|
||||||
env:
|
env:
|
||||||
- VERSION=$TRAVIS_BRANCH
|
- VERSION=$TRAVIS_BRANCH
|
||||||
|
language: python
|
||||||
|
python:
|
||||||
|
- "3.6"
|
||||||
|
install:
|
||||||
|
- pip install -r tests/requirements.txt
|
||||||
|
|
||||||
script:
|
script:
|
||||||
# Default to mailu for DOCKER_ORG
|
# Default to mailu for DOCKER_ORG
|
||||||
- if [ -z "$DOCKER_ORG" ]; then export DOCKER_ORG="mailu"; fi
|
- if [ -z "$DOCKER_ORG" ]; then export DOCKER_ORG="mailu"; fi
|
||||||
- docker-compose -f tests/build.yml build
|
- docker-compose -f tests/build.yml build
|
||||||
- tests/compose/test-script.sh
|
- python tests/compose/test.py
|
||||||
|
|
||||||
deploy:
|
deploy:
|
||||||
provider: script
|
provider: script
|
||||||
|
|||||||
82
tests/compose/core/core.yml
Normal file
82
tests/compose/core/core.yml
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
# 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
|
||||||
|
antispam:
|
||||||
|
image: mailu/rspamd:master
|
||||||
|
env_file: mailu.env
|
||||||
|
volumes:
|
||||||
|
- "/mailu/filter:/var/lib/rspamd"
|
||||||
|
- "/mailu/dkim:/dkim"
|
||||||
|
- "/mailu/overrides/rspamd:/etc/rspamd/override.d"
|
||||||
|
depends_on:
|
||||||
|
- front
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Webmail
|
||||||
|
|
||||||
77
tests/compose/fetchmail/fetchmail.yml
Normal file
77
tests/compose/fetchmail/fetchmail.yml
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
# 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
|
||||||
|
|
||||||
119
tests/compose/filters+dns/filters+dns.yml
Normal file
119
tests/compose/filters+dns/filters+dns.yml
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
# 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"
|
||||||
|
|
||||||
|
resolver:
|
||||||
|
image: mailu/unbound:master
|
||||||
|
env_file: mailu.env
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
ipv4_address: 192.168.0.254
|
||||||
|
|
||||||
|
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
|
||||||
|
- resolver
|
||||||
|
dns:
|
||||||
|
- 192.168.0.254
|
||||||
|
|
||||||
|
# Optional services
|
||||||
|
antispam:
|
||||||
|
image: mailu/rspamd:master
|
||||||
|
env_file: mailu.env
|
||||||
|
volumes:
|
||||||
|
- "/mailu/filter:/var/lib/rspamd"
|
||||||
|
- "/mailu/dkim:/dkim"
|
||||||
|
- "/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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Webmail
|
||||||
|
webmail:
|
||||||
|
image: mailu/rainloop:master
|
||||||
|
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
|
||||||
@@ -1,31 +1,38 @@
|
|||||||
# Mailu main configuration file
|
# Mailu main configuration file
|
||||||
#
|
#
|
||||||
# Most configuration variables can be modified through the Web interface,
|
# Generated for compose flavor
|
||||||
# these few settings must however be configured before starting the mail
|
#
|
||||||
# server and require a restart upon change.
|
# 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
|
# Common configuration variables
|
||||||
###################################
|
###################################
|
||||||
|
|
||||||
# Set this to the path where Mailu data and configuration is stored
|
# Set this to the path where Mailu data and configuration is stored
|
||||||
ROOT=/mailu
|
# 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)
|
# Mailu version to run (1.0, 1.1, etc. or master)
|
||||||
#VERSION=master
|
#VERSION=master
|
||||||
|
|
||||||
# Set to a randomly generated 16 bytes string
|
# Set to a randomly generated 16 bytes string
|
||||||
SECRET_KEY=ChangeMeChangeMe
|
SECRET_KEY=1DS36JPBRGPM5JUC
|
||||||
|
|
||||||
# Address where listening ports should bind
|
# Address where listening ports should bind
|
||||||
BIND_ADDRESS4=127.0.0.1
|
# This variables are now set directly in `docker-compose.yml by the setup utility
|
||||||
#BIND_ADDRESS6=::1
|
# 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
|
# Main mail domain
|
||||||
DOMAIN=mailu.io
|
DOMAIN=mailu.io
|
||||||
|
|
||||||
# Hostnames for this server, separated with comas
|
# Hostnames for this server, separated with comas
|
||||||
HOSTNAMES=mail.mailu.io,alternative.mailu.io,yetanother.mailu.io
|
HOSTNAMES=mail.mailu.io
|
||||||
|
|
||||||
# Postmaster local part (will append the main mail domain)
|
# Postmaster local part (will append the main mail domain)
|
||||||
POSTMASTER=admin
|
POSTMASTER=admin
|
||||||
@@ -44,7 +51,7 @@ DISABLE_STATISTICS=False
|
|||||||
###################################
|
###################################
|
||||||
|
|
||||||
# Expose the admin interface (value: true, false)
|
# Expose the admin interface (value: true, false)
|
||||||
ADMIN=false
|
ADMIN=true
|
||||||
|
|
||||||
# Choose which webmail to run if any (values: roundcube, rainloop, none)
|
# Choose which webmail to run if any (values: roundcube, rainloop, none)
|
||||||
WEBMAIL=none
|
WEBMAIL=none
|
||||||
@@ -53,7 +60,10 @@ WEBMAIL=none
|
|||||||
WEBDAV=none
|
WEBDAV=none
|
||||||
|
|
||||||
# Antivirus solution (value: clamav, none)
|
# Antivirus solution (value: clamav, none)
|
||||||
ANTIVIRUS=none
|
#ANTIVIRUS=none
|
||||||
|
|
||||||
|
#Antispam solution
|
||||||
|
ANTISPAM=none
|
||||||
|
|
||||||
###################################
|
###################################
|
||||||
# Mail settings
|
# Mail settings
|
||||||
@@ -65,7 +75,7 @@ MESSAGE_SIZE_LIMIT=50000000
|
|||||||
|
|
||||||
# Networks granted relay permissions, make sure that you include your Docker
|
# Networks granted relay permissions, make sure that you include your Docker
|
||||||
# internal network (default to 172.17.0.0/16)
|
# internal network (default to 172.17.0.0/16)
|
||||||
RELAYNETS=172.16.0.0/12
|
RELAYNETS=172.17.0.0/16
|
||||||
|
|
||||||
# Will relay all outgoing mails if configured
|
# Will relay all outgoing mails if configured
|
||||||
RELAYHOST=
|
RELAYHOST=
|
||||||
@@ -74,18 +84,12 @@ RELAYHOST=
|
|||||||
FETCHMAIL_DELAY=600
|
FETCHMAIL_DELAY=600
|
||||||
|
|
||||||
# Recipient delimiter, character used to delimiter localpart from custom address part
|
# Recipient delimiter, character used to delimiter localpart from custom address part
|
||||||
# e.g. localpart+custom@domain;tld
|
|
||||||
RECIPIENT_DELIMITER=+
|
RECIPIENT_DELIMITER=+
|
||||||
|
|
||||||
# DMARC rua and ruf email
|
# DMARC rua and ruf email
|
||||||
DMARC_RUA=admin
|
DMARC_RUA=admin
|
||||||
DMARC_RUF=admin
|
DMARC_RUF=admin
|
||||||
|
|
||||||
# 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
|
# Maildir Compression
|
||||||
# choose compression-method, default: none (value: bz2, gz)
|
# choose compression-method, default: none (value: bz2, gz)
|
||||||
@@ -109,12 +113,7 @@ SITENAME=Mailu
|
|||||||
# Linked Website URL
|
# Linked Website URL
|
||||||
WEBSITE=https://mailu.io
|
WEBSITE=https://mailu.io
|
||||||
|
|
||||||
# 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
|
# Advanced settings
|
||||||
@@ -127,14 +126,17 @@ WEBSITE=https://mailu.io
|
|||||||
LOG_DRIVER=json-file
|
LOG_DRIVER=json-file
|
||||||
|
|
||||||
# Docker-compose project name, this will prepended to containers names.
|
# Docker-compose project name, this will prepended to containers names.
|
||||||
#COMPOSE_PROJECT_NAME=mailu
|
COMPOSE_PROJECT_NAME=mailu
|
||||||
|
|
||||||
# Default password scheme used for newly created accounts and changed passwords
|
# Default password scheme used for newly created accounts and changed passwords
|
||||||
# (value: SHA512-CRYPT, SHA256-CRYPT, MD5-CRYPT, CRYPT)
|
# (value: BLF-CRYPT, SHA512-CRYPT, SHA256-CRYPT, MD5-CRYPT, CRYPT)
|
||||||
PASSWORD_SCHEME=SHA512-CRYPT
|
PASSWORD_SCHEME=BLF-CRYPT
|
||||||
|
|
||||||
# Header to take the real ip from
|
# 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)
|
# 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=
|
||||||
84
tests/compose/rainloop/rainloop.yml
Normal file
84
tests/compose/rainloop/rainloop.yml
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
# 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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Webmail
|
||||||
|
webmail:
|
||||||
|
image: mailu/rainloop:master
|
||||||
|
env_file: mailu.env
|
||||||
|
volumes:
|
||||||
|
- "/mailu/webmail:/data"
|
||||||
|
depends_on:
|
||||||
|
- imap
|
||||||
|
- resolver
|
||||||
|
dns:
|
||||||
|
- 192.168.0.254
|
||||||
|
|
||||||
84
tests/compose/roundcube/roundcube.yml
Normal file
84
tests/compose/roundcube/roundcube.yml
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
# 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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Webmail
|
||||||
|
webmail:
|
||||||
|
image: mailu/roundcube:master
|
||||||
|
env_file: mailu.env
|
||||||
|
volumes:
|
||||||
|
- "/mailu/webmail:/data"
|
||||||
|
depends_on:
|
||||||
|
- imap
|
||||||
|
- resolver
|
||||||
|
dns:
|
||||||
|
- 192.168.0.254
|
||||||
|
|
||||||
@@ -1,101 +0,0 @@
|
|||||||
version: '2'
|
|
||||||
|
|
||||||
services:
|
|
||||||
|
|
||||||
front:
|
|
||||||
image: $DOCKER_ORG/nginx:$VERSION
|
|
||||||
restart: 'no'
|
|
||||||
env_file: $PWD/.env
|
|
||||||
logging:
|
|
||||||
driver: $LOG_DRIVER
|
|
||||||
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"
|
|
||||||
volumes:
|
|
||||||
- "$ROOT/certs:/certs"
|
|
||||||
|
|
||||||
redis:
|
|
||||||
image: redis:alpine
|
|
||||||
restart: 'no'
|
|
||||||
volumes:
|
|
||||||
- "$ROOT/redis:/data"
|
|
||||||
|
|
||||||
imap:
|
|
||||||
image: $DOCKER_ORG/dovecot:$VERSION
|
|
||||||
restart: 'no'
|
|
||||||
env_file: $PWD/.env
|
|
||||||
volumes:
|
|
||||||
- "$ROOT/data:/data"
|
|
||||||
- "$ROOT/mail:/mail"
|
|
||||||
- "$ROOT/overrides:/overrides"
|
|
||||||
depends_on:
|
|
||||||
- front
|
|
||||||
|
|
||||||
smtp:
|
|
||||||
image: $DOCKER_ORG/postfix:$VERSION
|
|
||||||
restart: 'no'
|
|
||||||
env_file: $PWD/.env
|
|
||||||
volumes:
|
|
||||||
- "$ROOT/data:/data"
|
|
||||||
- "$ROOT/overrides:/overrides"
|
|
||||||
depends_on:
|
|
||||||
- front
|
|
||||||
|
|
||||||
antispam:
|
|
||||||
image: $DOCKER_ORG/rspamd:$VERSION
|
|
||||||
restart: 'no'
|
|
||||||
env_file: $PWD/.env
|
|
||||||
volumes:
|
|
||||||
- "$ROOT/filter:/var/lib/rspamd"
|
|
||||||
- "$ROOT/dkim:/dkim"
|
|
||||||
- "$ROOT/overrides/rspamd:/etc/rspamd/override.d"
|
|
||||||
depends_on:
|
|
||||||
- front
|
|
||||||
|
|
||||||
antivirus:
|
|
||||||
image: $DOCKER_ORG/$ANTIVIRUS:$VERSION
|
|
||||||
restart: 'no'
|
|
||||||
env_file: $PWD/.env
|
|
||||||
volumes:
|
|
||||||
- "$ROOT/filter:/data"
|
|
||||||
|
|
||||||
webdav:
|
|
||||||
image: $DOCKER_ORG/$WEBDAV:$VERSION
|
|
||||||
restart: 'no'
|
|
||||||
env_file: $PWD/.env
|
|
||||||
volumes:
|
|
||||||
- "$ROOT/dav:/data"
|
|
||||||
|
|
||||||
admin:
|
|
||||||
image: $DOCKER_ORG/admin:$VERSION
|
|
||||||
restart: 'no'
|
|
||||||
env_file: $PWD/.env
|
|
||||||
volumes:
|
|
||||||
- "$ROOT/data:/data"
|
|
||||||
- "$ROOT/dkim:/dkim"
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
||||||
depends_on:
|
|
||||||
- redis
|
|
||||||
|
|
||||||
webmail:
|
|
||||||
image: "$DOCKER_ORG/$WEBMAIL:$VERSION"
|
|
||||||
restart: 'no'
|
|
||||||
env_file: $PWD/.env
|
|
||||||
volumes:
|
|
||||||
- "$ROOT/webmail:/data"
|
|
||||||
depends_on:
|
|
||||||
- imap
|
|
||||||
|
|
||||||
fetchmail:
|
|
||||||
image: $DOCKER_ORG/fetchmail:$VERSION
|
|
||||||
restart: 'no'
|
|
||||||
env_file: $PWD/.env
|
|
||||||
volumes:
|
|
||||||
- "$ROOT/data:/data"
|
|
||||||
92
tests/compose/test.py
Executable file
92
tests/compose/test.py
Executable file
@@ -0,0 +1,92 @@
|
|||||||
|
import sys
|
||||||
|
import os
|
||||||
|
import time
|
||||||
|
import docker
|
||||||
|
from colorama import Fore, Style
|
||||||
|
|
||||||
|
# Declare variables for service name and sleep time
|
||||||
|
test_name=sys.argv[1]
|
||||||
|
timeout=int(sys.argv[2])
|
||||||
|
|
||||||
|
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")
|
||||||
|
sys.exit(exit_code)
|
||||||
|
|
||||||
|
# Sleep for a defined amount of time
|
||||||
|
def sleep():
|
||||||
|
print(Fore.LIGHTMAGENTA_EX + "Sleeping for " + str(timeout) + "m" + Style.RESET_ALL)
|
||||||
|
time.sleep(timeout*60)
|
||||||
|
|
||||||
|
def health_checks():
|
||||||
|
exit_code = 0
|
||||||
|
#Iterating trough all containers dictionary
|
||||||
|
for container in client.containers(all=True):
|
||||||
|
#Perform "docker container inspect" on container based on container ID and save output to a dictionary
|
||||||
|
container_inspect = client.inspect_container(container['Id']) #Dict
|
||||||
|
|
||||||
|
if "Health" in container_inspect['State'].keys():
|
||||||
|
if container_inspect['State']['Health']['Status'] == "healthy":
|
||||||
|
print(Fore.GREEN + "Health status for " + container_inspect['Name'].replace("/", "") + " : " + Fore.CYAN + container_inspect['State']['Health']['Status'] + Style.RESET_ALL)
|
||||||
|
if container_inspect['State']['Health']['Status'] != "healthy":
|
||||||
|
print(Fore.RED + "Container " + container_inspect['Name'].replace("/", "") + " is " + Fore.YELLOW + container_inspect['State']['Health']['Status']
|
||||||
|
+ Fore.RED + ", FailingStreak: " + Fore.YELLOW + str(container_inspect['State']['Health']['FailingStreak'])
|
||||||
|
+ Fore.RED + ", Log: " + Fore.YELLOW + str(container_inspect['State']['Health']['Log']) + Style.RESET_ALL)
|
||||||
|
exit_code = 1
|
||||||
|
else:
|
||||||
|
if container_inspect['State']['Status'] == "running":
|
||||||
|
print(Fore.GREEN + "Running status for " + container_inspect['Name'].replace("/", "") + " : " + Fore.BLUE + container_inspect['State']['Status'] + Style.RESET_ALL)
|
||||||
|
if container_inspect['State']['Status'] != "running":
|
||||||
|
print(Fore.RED + "Container " + container_inspect['Name'].replace("/", "") + " state is: " + Fore.YELLOW + container_inspect['State']['Status'] + Style.RESET_ALL)
|
||||||
|
exit_code = 1
|
||||||
|
|
||||||
|
#Saving Id, Name and state to a new dictionary
|
||||||
|
containers_dict = {}
|
||||||
|
containers_dict['Name'] = container_inspect['Name'].replace("/", "")
|
||||||
|
containers_dict['Id'] = container_inspect['Id']
|
||||||
|
containers_dict['State'] = container_inspect['State']
|
||||||
|
|
||||||
|
#Adding the generated dictionary to a list
|
||||||
|
containers.append(containers_dict)
|
||||||
|
|
||||||
|
if exit_code != 0:
|
||||||
|
stop(exit_code)
|
||||||
|
|
||||||
|
def print_logs():
|
||||||
|
print("Printing logs ...")
|
||||||
|
#Iterating through docker container inspect list and print logs
|
||||||
|
for container in containers:
|
||||||
|
print(Fore.LIGHTMAGENTA_EX + "Printing logs for: " + Fore.GREEN + container['Name'] + Style.RESET_ALL)
|
||||||
|
os.system('docker container logs ' + container['Name'])
|
||||||
|
|
||||||
|
#Iterating over hooks in test folder and running them
|
||||||
|
def hooks():
|
||||||
|
print("Running hooks")
|
||||||
|
for test_file in sorted(os.listdir(test_name + "/")):
|
||||||
|
if test_file.endswith(".py"):
|
||||||
|
os.system("python3 " + test_name + "/" + test_file)
|
||||||
|
elif test_file.endswith(".sh"):
|
||||||
|
os.system("./" + test_name + "/" + test_file)
|
||||||
|
|
||||||
|
start()
|
||||||
|
print()
|
||||||
|
sleep()
|
||||||
|
print()
|
||||||
|
os.system("docker ps -a")
|
||||||
|
print()
|
||||||
|
health_checks()
|
||||||
|
print()
|
||||||
|
hooks()
|
||||||
|
print()
|
||||||
|
stop(0)
|
||||||
79
tests/compose/webdav/webdav.yml
Normal file
79
tests/compose/webdav/webdav.yml
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
# 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
|
||||||
|
|
||||||
|
|
||||||
|
webdav:
|
||||||
|
image: mailu/radicale:master
|
||||||
|
env_file: mailu.env
|
||||||
|
volumes:
|
||||||
|
- "/mailu/dav:/data"
|
||||||
|
|
||||||
|
|
||||||
|
# Webmail
|
||||||
|
|
||||||
2
tests/requirements.txt
Normal file
2
tests/requirements.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
docker
|
||||||
|
colorama
|
||||||
Reference in New Issue
Block a user