diff --git a/test/default_relay_host.bats b/test/default_relay_host.bats index e006ed8b..ff39881c 100644 --- a/test/default_relay_host.bats +++ b/test/default_relay_host.bats @@ -1,8 +1,10 @@ load 'test_helper/common' function setup() { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container relay-hosts)" docker run -d --name mail_with_default_relay \ - -v "$(duplicate_config_for_container relay-hosts)":/tmp/docker-mailserver \ + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ -e DEFAULT_RELAY_HOST=default.relay.host.invalid:25 \ --cap-add=SYS_PTRACE \ diff --git a/test/mail_dhparams_default.bats b/test/mail_dhparams_default.bats index ff984576..1444120c 100644 --- a/test/mail_dhparams_default.bats +++ b/test/mail_dhparams_default.bats @@ -21,16 +21,19 @@ function teardown() { } function setup_file() { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container . mail_default_dhparams_both_one_dir)" docker run -d --name mail_default_dhparams_one_dir \ - -v "$(duplicate_config_for_container . mail_default_dhparams_both_one_dir)":/tmp/docker-mailserver \ + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ -e DMS_DEBUG=0 \ -e ONE_DIR=1 \ -h mail.my-domain.com -t ${NAME} wait_for_finished_setup_in_container mail_default_dhparams_one_dir + PRIVATE_CONFIG="$(duplicate_config_for_container . mail_default_dhparams_both_not_one_dir)" docker run -d --name mail_default_dhparams_not_one_dir \ - -v "$(duplicate_config_for_container . mail_default_dhparams_both_not_one_dir)":/tmp/docker-mailserver \ + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ -e DMS_DEBUG=0 \ -e ONE_DIR=0 \ diff --git a/test/mail_dhparams_manual_one_dir.bats b/test/mail_dhparams_manual_one_dir.bats index 5063fa42..56971a86 100644 --- a/test/mail_dhparams_manual_one_dir.bats +++ b/test/mail_dhparams_manual_one_dir.bats @@ -20,8 +20,10 @@ function teardown() { } function setup_file() { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" docker run -d --name mail_manual_dhparams_one_dir \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ -v "$(pwd)/test/test-files/ssl/custom-dhe-params.pem":/var/mail-state/lib-shared/dhparams.pem:ro \ -e DMS_DEBUG=0 \ diff --git a/test/mail_disabled_clamav_spamassassin.bats b/test/mail_disabled_clamav_spamassassin.bats index f05be894..506be7cb 100644 --- a/test/mail_disabled_clamav_spamassassin.bats +++ b/test/mail_disabled_clamav_spamassassin.bats @@ -9,8 +9,10 @@ teardown() { } setup_file() { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" docker run --rm -d --name mail_disabled_clamav_spamassassin \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ -e ENABLE_CLAMAV=0 \ -e ENABLE_SPAMASSASSIN=0 \ diff --git a/test/mail_fail2ban.bats b/test/mail_fail2ban.bats index b764ce2e..f02311a2 100644 --- a/test/mail_fail2ban.bats +++ b/test/mail_fail2ban.bats @@ -9,8 +9,10 @@ function teardown() { } function setup_file() { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" docker run --rm -d --name mail_fail2ban \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ -e ENABLE_FAIL2BAN=1 \ -e POSTSCREEN_ACTION=ignore \ diff --git a/test/mail_fetchmail.bats b/test/mail_fetchmail.bats index d56014f2..90a23f99 100644 --- a/test/mail_fetchmail.bats +++ b/test/mail_fetchmail.bats @@ -9,8 +9,10 @@ function teardown() { } function setup_file() { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" docker run -d --name mail_fetchmail \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ -e ENABLE_FETCHMAIL=1 \ --cap-add=NET_ADMIN \ diff --git a/test/mail_lmtp_ip.bats b/test/mail_lmtp_ip.bats index bfb1c2e0..415739a0 100644 --- a/test/mail_lmtp_ip.bats +++ b/test/mail_lmtp_ip.bats @@ -9,9 +9,12 @@ teardown() { } setup_file() { + local PRIVATE_CONFIG PRIVATE_ETC + PRIVATE_CONFIG="$(duplicate_config_for_container .)" + PRIVATE_ETC="$(duplicate_config_for_container dovecot-lmtp/ mail_lmtp_ip_dovecot-lmtp)" docker run -d --name mail_lmtp_ip \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ - -v "$(duplicate_config_for_container dovecot-lmtp/ mail_lmtp_ip_dovecot-lmtp)":/etc/dovecot \ + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "${PRIVATE_ETC}":/etc/dovecot \ -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ -e ENABLE_POSTFIX_VIRTUAL_TRANSPORT=1 \ -e POSTFIX_DAGENT=lmtp:127.0.0.1:24 \ diff --git a/test/mail_override_hostname.bats b/test/mail_override_hostname.bats index 2e1ea3f3..91fc6799 100644 --- a/test/mail_override_hostname.bats +++ b/test/mail_override_hostname.bats @@ -5,8 +5,10 @@ function setup() { } function setup_file() { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" docker run --rm -d --name mail_override_hostname \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ -e PERMIT_DOCKER=network \ -e DMS_DEBUG=0 \ diff --git a/test/mail_pop3.bats b/test/mail_pop3.bats index b3f8b705..d07514c2 100644 --- a/test/mail_pop3.bats +++ b/test/mail_pop3.bats @@ -9,8 +9,10 @@ function teardown() { } function setup_file() { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" docker run -d --name mail_pop3 \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ -e ENABLE_POP3=1 \ -e DMS_DEBUG=0 \ diff --git a/test/mail_postfix_inet.bats b/test/mail_postfix_inet.bats index 18220438..14977e0a 100644 --- a/test/mail_postfix_inet.bats +++ b/test/mail_postfix_inet.bats @@ -4,80 +4,73 @@ load 'test_helper/common' # --------- # POSTFIX_INET_PROTOCOLS value is set - -function setup() { - run_setup_file_if_necessary -} - -function teardown() { - run_teardown_file_if_necessary -} - -function setup_file() { - docker run -d --name mail_postfix_inet_default \ - -v "$(duplicate_config_for_container . mail_postfix_inet_default)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ - -h mail.my-domain.com -t "${NAME}" - - wait_for_finished_setup_in_container mail_postfix_inet_default - - docker run -d --name mail_postfix_inet_all \ - -v "$(duplicate_config_for_container . mail_postfix_inet_all)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ - -e POSTFIX_INET_PROTOCOLS=all \ - -h mail.my-domain.com -t "${NAME}" - - wait_for_finished_setup_in_container mail_postfix_inet_all - - docker run -d --name mail_postfix_inet_ipv4 \ - -v "$(duplicate_config_for_container . mail_postfix_inet_ipv4)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ - -e POSTFIX_INET_PROTOCOLS=ipv4 \ - -h mail.my-domain.com -t "${NAME}" - - wait_for_finished_setup_in_container mail_postfix_inet_ipv4 - - docker run -d --name mail_postfix_inet_ipv6 \ - -v "$(duplicate_config_for_container . mail_postfix_inet_ipv6)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ - -e POSTFIX_INET_PROTOCOLS=ipv6 \ - -h mail.my-domain.com -t "${NAME}" - - wait_for_finished_setup_in_container mail_postfix_inet_ipv6 -} - -function teardown_file() { - docker rm -f mail_postfix_inet_default - docker rm -f mail_postfix_inet_all - docker rm -f mail_postfix_inet_ipv4 - docker rm -f mail_postfix_inet_ipv6 -} - -@test "first" { - skip 'this test must come first to reliably identify when to run setup_file' -} - @test "checking postfix: inet default" { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container . )" + docker run -d --name mail_postfix_inet_default \ + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -h mail.my-domain.com -t "${NAME}" + + teardown() { docker rm -f mail_postfix_inet_default; } + + wait_for_finished_setup_in_container mail_postfix_inet_default + run docker exec mail_postfix_inet_default postconf inet_protocols assert_output "inet_protocols = all" assert_success } + @test "checking postfix: inet all" { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container . )" + docker run -d --name mail_postfix_inet_all \ + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -e POSTFIX_INET_PROTOCOLS=all \ + -h mail.my-domain.com -t "${NAME}" + + teardown() { docker rm -f mail_postfix_inet_all; } + + wait_for_finished_setup_in_container mail_postfix_inet_all + run docker exec mail_postfix_inet_all postconf inet_protocols assert_output "inet_protocols = all" assert_success } + @test "checking postfix: inet ipv4" { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container . )" + docker run -d --name mail_postfix_inet_ipv4 \ + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -e POSTFIX_INET_PROTOCOLS=ipv4 \ + -h mail.my-domain.com -t "${NAME}" + + teardown() { docker rm -f mail_postfix_inet_ipv4; } + + wait_for_finished_setup_in_container mail_postfix_inet_ipv4 + run docker exec mail_postfix_inet_ipv4 postconf inet_protocols assert_output "inet_protocols = ipv4" assert_success } + @test "checking postfix: inet ipv6" { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container . )" + docker run -d --name mail_postfix_inet_ipv6 \ + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -e POSTFIX_INET_PROTOCOLS=ipv6 \ + -h mail.my-domain.com -t "${NAME}" + + teardown() { docker rm -f mail_postfix_inet_ipv6; } + + wait_for_finished_setup_in_container mail_postfix_inet_ipv6 + run docker exec mail_postfix_inet_ipv6 postconf inet_protocols assert_output "inet_protocols = ipv6" assert_success } - -@test "last" { - skip 'this test is only there to reliably mark the end for the teardown_file' -} diff --git a/test/mail_postscreen.bats b/test/mail_postscreen.bats index e303fbe6..553e763a 100644 --- a/test/mail_postscreen.bats +++ b/test/mail_postscreen.bats @@ -12,12 +12,14 @@ teardown() { } setup_file() { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" docker run -d --name mail_postscreen \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ - -e POSTSCREEN_ACTION=enforce \ - --cap-add=NET_ADMIN \ - -h mail.my-domain.com -t ${NAME} + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -e POSTSCREEN_ACTION=enforce \ + --cap-add=NET_ADMIN \ + -h mail.my-domain.com -t ${NAME} docker run --name mail_postscreen_sender \ -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ diff --git a/test/mail_privacy.bats b/test/mail_privacy.bats index c6d664ba..01949979 100644 --- a/test/mail_privacy.bats +++ b/test/mail_privacy.bats @@ -9,15 +9,17 @@ function teardown() { } function setup_file() { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" docker run -d --name mail_privacy \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ - -e SASL_PASSWD="external-domain.com username:password" \ - -e ENABLE_MANAGESIEVE=1 \ - --cap-add=SYS_PTRACE \ - -e PERMIT_DOCKER=host \ - -e DMS_DEBUG=0 \ - -h mail.my-domain.com -t ${NAME} + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -e SASL_PASSWD="external-domain.com username:password" \ + -e ENABLE_MANAGESIEVE=1 \ + --cap-add=SYS_PTRACE \ + -e PERMIT_DOCKER=host \ + -e DMS_DEBUG=0 \ + -h mail.my-domain.com -t ${NAME} wait_for_amavis_port_in_container mail_privacy wait_for_smtp_port_in_container mail_privacy diff --git a/test/mail_quotas_disabled.bats b/test/mail_quotas_disabled.bats index cbdd2137..13b61de4 100644 --- a/test/mail_quotas_disabled.bats +++ b/test/mail_quotas_disabled.bats @@ -14,12 +14,14 @@ function teardown() { } function setup_file() { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" docker run -d --name mail_no_quotas \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ - -e DMS_DEBUG=0 \ - -e ENABLE_QUOTAS=0 \ - -h mail.my-domain.com -t "${NAME}" + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -e DMS_DEBUG=0 \ + -e ENABLE_QUOTAS=0 \ + -h mail.my-domain.com -t "${NAME}" wait_for_finished_setup_in_container mail_no_quotas } diff --git a/test/mail_smtponly.bats b/test/mail_smtponly.bats index 5ab37274..d8eb7a30 100644 --- a/test/mail_smtponly.bats +++ b/test/mail_smtponly.bats @@ -9,14 +9,16 @@ function teardown() { } function setup_file() { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" docker run --rm -d --name mail_smtponly \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ - -e SMTP_ONLY=1 \ - -e PERMIT_DOCKER=network \ - -e DMS_DEBUG=0 \ - -e OVERRIDE_HOSTNAME=mail.my-domain.com \ - -t ${NAME} + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -e SMTP_ONLY=1 \ + -e PERMIT_DOCKER=network \ + -e DMS_DEBUG=0 \ + -e OVERRIDE_HOSTNAME=mail.my-domain.com \ + -t ${NAME} wait_for_finished_setup_in_container mail_smtponly } diff --git a/test/mail_spam_bounced.bats b/test/mail_spam_bounced.bats index ebe87675..da62e3e3 100644 --- a/test/mail_spam_bounced.bats +++ b/test/mail_spam_bounced.bats @@ -14,20 +14,23 @@ function teardown() { } function setup_file() { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container . mail_spam_bounced_defined)" docker run -d --name mail_spam_bounced_defined \ - -v "$(duplicate_config_for_container . mail_spam_bounced_defined)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ - -e ENABLE_SPAMASSASSIN=1 \ - -e SPAMASSASSIN_SPAM_TO_INBOX=0 \ - -h mail.my-domain.com -t "${NAME}" + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -e ENABLE_SPAMASSASSIN=1 \ + -e SPAMASSASSIN_SPAM_TO_INBOX=0 \ + -h mail.my-domain.com -t "${NAME}" wait_for_finished_setup_in_container mail_spam_bounced_defined + PRIVATE_CONFIG="$(duplicate_config_for_container . mail_spam_bounced_defined)" docker run -d --name mail_spam_bounced_undefined \ - -v "$(duplicate_config_for_container . mail_spam_bounced_defined)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ - -e ENABLE_SPAMASSASSIN=1 \ - -h mail.my-domain.com -t "${NAME}" + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -e ENABLE_SPAMASSASSIN=1 \ + -h mail.my-domain.com -t "${NAME}" wait_for_finished_setup_in_container mail_spam_bounced_undefined } diff --git a/test/mail_spam_junk_folder.bats b/test/mail_spam_junk_folder.bats index c53f7e63..0c2965e4 100644 --- a/test/mail_spam_junk_folder.bats +++ b/test/mail_spam_junk_folder.bats @@ -14,25 +14,28 @@ function teardown() { } function setup_file() { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container . mail_spam_moved_junk)" docker run -d --name mail_spam_moved_junk \ - -v "$(duplicate_config_for_container . mail_spam_moved_junk)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ - -e ENABLE_SPAMASSASSIN=1 \ - -e SPAMASSASSIN_SPAM_TO_INBOX=1 \ - -e MOVE_SPAM_TO_JUNK=1 \ - -e SA_SPAM_SUBJECT="SPAM: " \ - -h mail.my-domain.com -t "${NAME}" + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -e ENABLE_SPAMASSASSIN=1 \ + -e SPAMASSASSIN_SPAM_TO_INBOX=1 \ + -e MOVE_SPAM_TO_JUNK=1 \ + -e SA_SPAM_SUBJECT="SPAM: " \ + -h mail.my-domain.com -t "${NAME}" wait_for_finished_setup_in_container mail_spam_moved_junk + PRIVATE_CONFIG="$(duplicate_config_for_container . mail_spam_moved_new)" docker run -d --name mail_spam_moved_new \ - -v "$(duplicate_config_for_container . mail_spam_moved_new)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ - -e ENABLE_SPAMASSASSIN=1 \ - -e SPAMASSASSIN_SPAM_TO_INBOX=1 \ - -e MOVE_SPAM_TO_JUNK=0 \ - -e SA_SPAM_SUBJECT="SPAM: " \ - -h mail.my-domain.com -t "${NAME}" + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -e ENABLE_SPAMASSASSIN=1 \ + -e SPAMASSASSIN_SPAM_TO_INBOX=1 \ + -e MOVE_SPAM_TO_JUNK=0 \ + -e SA_SPAM_SUBJECT="SPAM: " \ + -h mail.my-domain.com -t "${NAME}" wait_for_finished_setup_in_container mail_spam_moved_new } diff --git a/test/mail_special_use_folders.bats b/test/mail_special_use_folders.bats index 5bbee43b..888b2fce 100644 --- a/test/mail_special_use_folders.bats +++ b/test/mail_special_use_folders.bats @@ -9,8 +9,10 @@ teardown() { } setup_file() { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" docker run -d --name mail_special_use_folders \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ -e SASL_PASSWD="external-domain.com username:password" \ -e ENABLE_CLAMAV=0 \ diff --git a/test/mail_srs_domainname.bats b/test/mail_srs_domainname.bats index 13c482d0..b6f38761 100644 --- a/test/mail_srs_domainname.bats +++ b/test/mail_srs_domainname.bats @@ -1,16 +1,18 @@ load 'test_helper/common' @test "checking SRS: SRS_DOMAINNAME is used correctly" { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container . mail_srs_domainname)" docker run --rm -d --name mail_srs_domainname \ - -v "$(duplicate_config_for_container . mail_srs_domainname)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ - -e PERMIT_DOCKER=network \ - -e DMS_DEBUG=0 \ - -e ENABLE_SRS=1 \ - -e SRS_DOMAINNAME=srs.my-domain.com \ - -e DOMAINNAME=my-domain.com \ - -h unknown.domain.tld \ - -t ${NAME} + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -e PERMIT_DOCKER=network \ + -e DMS_DEBUG=0 \ + -e ENABLE_SRS=1 \ + -e SRS_DOMAINNAME=srs.my-domain.com \ + -e DOMAINNAME=my-domain.com \ + -h unknown.domain.tld \ + -t ${NAME} teardown() { docker rm -f mail_srs_domainname; } @@ -18,15 +20,17 @@ load 'test_helper/common' } @test "checking SRS: DOMAINNAME is handled correctly" { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container . mail_domainname)" docker run --rm -d --name mail_domainname \ - -v "$(duplicate_config_for_container . mail_domainname)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ - -e PERMIT_DOCKER=network \ - -e DMS_DEBUG=0 \ - -e ENABLE_SRS=1 \ - -e DOMAINNAME=my-domain.com \ - -h unknown.domain.tld \ - -t ${NAME} + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -e PERMIT_DOCKER=network \ + -e DMS_DEBUG=0 \ + -e ENABLE_SRS=1 \ + -e DOMAINNAME=my-domain.com \ + -h unknown.domain.tld \ + -t ${NAME} teardown() { docker rm -f mail_domainname; } diff --git a/test/mail_ssl_manual.bats b/test/mail_ssl_manual.bats index a9d0faee..496ebaec 100644 --- a/test/mail_ssl_manual.bats +++ b/test/mail_ssl_manual.bats @@ -9,14 +9,16 @@ function teardown() { } function setup_file() { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" docker run -d --name mail_manual_ssl \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ - -e SSL_TYPE=manual \ - -e SSL_CERT_PATH=/tmp/docker-mailserver/letsencrypt/mail.my-domain.com/fullchain.pem \ - -e SSL_KEY_PATH=/tmp/docker-mailserver/letsencrypt/mail.my-domain.com/privkey.pem \ - -e DMS_DEBUG=0 \ - -h mail.my-domain.com -t ${NAME} + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -e SSL_TYPE=manual \ + -e SSL_CERT_PATH=/tmp/docker-mailserver/letsencrypt/mail.my-domain.com/fullchain.pem \ + -e SSL_KEY_PATH=/tmp/docker-mailserver/letsencrypt/mail.my-domain.com/privkey.pem \ + -e DMS_DEBUG=0 \ + -h mail.my-domain.com -t ${NAME} wait_for_finished_setup_in_container mail_manual_ssl } diff --git a/test/mail_undef_spam_subject.bats b/test/mail_undef_spam_subject.bats index 6cc61314..a12e3dd5 100644 --- a/test/mail_undef_spam_subject.bats +++ b/test/mail_undef_spam_subject.bats @@ -1,33 +1,37 @@ load 'test_helper/common' function setup() { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" docker run -d --name mail_undef_spam_subject \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ -e ENABLE_SPAMASSASSIN=1 \ -e SA_SPAM_SUBJECT="undef" \ -h mail.my-domain.com -t ${NAME} + + PRIVATE_CONFIG="$(duplicate_config_for_container . mail_undef_spam_subject_2)" CONTAINER=$(docker run -d \ - -v "$(duplicate_config_for_container . mail_undef_spam_subject_2)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ - -v "$(pwd)/test/onedir":/var/mail-state \ - -e ENABLE_CLAMAV=1 \ - -e SPOOF_PROTECTION=1 \ - -e ENABLE_SPAMASSASSIN=1 \ - -e REPORT_RECIPIENT=user1@localhost.localdomain \ - -e REPORT_SENDER=report1@mail.my-domain.com \ - -e SA_TAG=-5.0 \ - -e SA_TAG2=2.0 \ - -e SA_KILL=3.0 \ - -e SA_SPAM_SUBJECT="SPAM: " \ - -e VIRUSMAILS_DELETE_DELAY=7 \ - -e ENABLE_SRS=1 \ - -e SASL_PASSWD="external-domain.com username:password" \ - -e ENABLE_MANAGESIEVE=1 \ - --cap-add=SYS_PTRACE \ - -e PERMIT_DOCKER=host \ - -e DMS_DEBUG=0 \ - -h mail.my-domain.com -t ${NAME}) + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -v "$(pwd)/test/onedir":/var/mail-state \ + -e ENABLE_CLAMAV=1 \ + -e SPOOF_PROTECTION=1 \ + -e ENABLE_SPAMASSASSIN=1 \ + -e REPORT_RECIPIENT=user1@localhost.localdomain \ + -e REPORT_SENDER=report1@mail.my-domain.com \ + -e SA_TAG=-5.0 \ + -e SA_TAG2=2.0 \ + -e SA_KILL=3.0 \ + -e SA_SPAM_SUBJECT="SPAM: " \ + -e VIRUSMAILS_DELETE_DELAY=7 \ + -e ENABLE_SRS=1 \ + -e SASL_PASSWD="external-domain.com username:password" \ + -e ENABLE_MANAGESIEVE=1 \ + --cap-add=SYS_PTRACE \ + -e PERMIT_DOCKER=host \ + -e DMS_DEBUG=0 \ + -h mail.my-domain.com -t ${NAME}) wait_for_finished_setup_in_container mail_undef_spam_subject wait_for_finished_setup_in_container "$CONTAINER" } diff --git a/test/mail_with_imap.bats b/test/mail_with_imap.bats index ac16c2c1..1fc51af4 100644 --- a/test/mail_with_imap.bats +++ b/test/mail_with_imap.bats @@ -10,8 +10,10 @@ teardown() { } setup_file() { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" docker run -d --name mail_with_imap \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ -e ENABLE_SASLAUTHD=1 \ -e SASLAUTHD_MECHANISMS=rimap \ diff --git a/test/mail_with_ldap.bats b/test/mail_with_ldap.bats index 098e986a..04a2b33f 100644 --- a/test/mail_with_ldap.bats +++ b/test/mail_with_ldap.bats @@ -17,8 +17,10 @@ function setup_file() { -e LDAP_DOMAIN="localhost.localdomain" \ -h ldap.my-domain.com -t ldap + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" docker run -d --name mail_with_ldap \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ -e ENABLE_LDAP=1 \ -e LDAP_SERVER_HOST=ldap \ diff --git a/test/mail_with_mdbox.bats b/test/mail_with_mdbox.bats index 0ad9361f..7bc28285 100644 --- a/test/mail_with_mdbox.bats +++ b/test/mail_with_mdbox.bats @@ -9,9 +9,11 @@ teardown() { } setup_file() { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" docker run -d --name mail_with_mdbox_format \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ -e SASL_PASSWD="external-domain.com username:password" \ -e ENABLE_CLAMAV=0 \ -e ENABLE_SPAMASSASSIN=0 \ diff --git a/test/mail_with_postgrey.bats b/test/mail_with_postgrey.bats index 247852ae..a7aaf2c3 100644 --- a/test/mail_with_postgrey.bats +++ b/test/mail_with_postgrey.bats @@ -9,16 +9,18 @@ function teardown() { } function setup_file() { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" docker run -d --name mail_with_postgrey \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ - -e ENABLE_POSTGREY=1 \ - -e POSTGREY_DELAY=15 \ - -e POSTGREY_MAX_AGE=35 \ - -e POSTGREY_AUTO_WHITELIST_CLIENTS=5 \ - -e POSTGREY_TEXT="Delayed by postgrey" \ - -e DMS_DEBUG=0 \ - -h mail.my-domain.com -t ${NAME} + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -e ENABLE_POSTGREY=1 \ + -e POSTGREY_DELAY=15 \ + -e POSTGREY_MAX_AGE=35 \ + -e POSTGREY_AUTO_WHITELIST_CLIENTS=5 \ + -e POSTGREY_TEXT="Delayed by postgrey" \ + -e DMS_DEBUG=0 \ + -h mail.my-domain.com -t ${NAME} # using postfix availability as start indicator, this might be insufficient for postgrey wait_for_smtp_port_in_container mail_with_postgrey } diff --git a/test/mail_with_postgrey_disabled_by_default.bats b/test/mail_with_postgrey_disabled_by_default.bats index dc3ae80c..9dec8022 100644 --- a/test/mail_with_postgrey_disabled_by_default.bats +++ b/test/mail_with_postgrey_disabled_by_default.bats @@ -1,11 +1,13 @@ load 'test_helper/common' function setup() { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" CONTAINER=$(docker run -d \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ - -e DMS_DEBUG=0 \ - -h mail.my-domain.com -t ${NAME}) + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -e DMS_DEBUG=0 \ + -h mail.my-domain.com -t ${NAME}) # using postfix availability as start indicator, this might be insufficient for postgrey wait_for_smtp_port_in_container $CONTAINER } diff --git a/test/mail_with_sdbox.bats b/test/mail_with_sdbox.bats index 25589aee..3391bd9b 100644 --- a/test/mail_with_sdbox.bats +++ b/test/mail_with_sdbox.bats @@ -9,9 +9,11 @@ teardown() { } setup_file() { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" docker run -d --name mail_with_sdbox_format \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ -e SASL_PASSWD="external-domain.com username:password" \ -e ENABLE_CLAMAV=0 \ -e ENABLE_SPAMASSASSIN=0 \ diff --git a/test/permit_docker.bats b/test/permit_docker.bats index 400966e3..8d889e06 100644 --- a/test/permit_docker.bats +++ b/test/permit_docker.bats @@ -7,26 +7,29 @@ setup() { # use two networks (default ("bridge") and our custom network) to recreate problematic test case where PERMIT_DOCKER=host would not help # currently we cannot use --network in `docker run` multiple times, it will just use the last one # instead we need to use create, network connect and start (see https://success.docker.com/article/multiple-docker-networks) + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container . mail_smtponly_second_network)" docker create --name mail_smtponly_second_network \ - -v "$(duplicate_config_for_container . mail_smtponly_second_network)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ - -e SMTP_ONLY=1 \ - -e PERMIT_DOCKER=connected-networks \ - -e DMS_DEBUG=0 \ - -e OVERRIDE_HOSTNAME=mail.my-domain.com \ - --network ${NON_DEFAULT_DOCKER_MAIL_NETWORK_NAME} \ - -t ${NAME} - docker network connect ${NON_DEFAULT_DOCKER_MAIL_NETWORK_NAME}2 mail_smtponly_second_network + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -e SMTP_ONLY=1 \ + -e PERMIT_DOCKER=connected-networks \ + -e DMS_DEBUG=0 \ + -e OVERRIDE_HOSTNAME=mail.my-domain.com \ + --network "${NON_DEFAULT_DOCKER_MAIL_NETWORK_NAME}" \ + -t "${NAME}" + docker network connect "${NON_DEFAULT_DOCKER_MAIL_NETWORK_NAME}2" mail_smtponly_second_network docker start mail_smtponly_second_network + PRIVATE_CONFIG="$(duplicate_config_for_container . mail_smtponly_second_network_sender)" docker run -d --name mail_smtponly_second_network_sender \ - -v "$(duplicate_config_for_container . mail_smtponly_second_network_sender)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ - -e SMTP_ONLY=1 \ - -e PERMIT_DOCKER=connected-networks \ - -e DMS_DEBUG=0 \ - -e OVERRIDE_HOSTNAME=mail.my-domain.com \ - --network ${NON_DEFAULT_DOCKER_MAIL_NETWORK_NAME}2 \ - -t ${NAME} + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -e SMTP_ONLY=1 \ + -e PERMIT_DOCKER=connected-networks \ + -e DMS_DEBUG=0 \ + -e OVERRIDE_HOSTNAME=mail.my-domain.com \ + --network "${NON_DEFAULT_DOCKER_MAIL_NETWORK_NAME}2" \ + -t "${NAME}" # wait until postfix is up wait_for_smtp_port_in_container mail_smtponly_second_network diff --git a/test/test_helper.bats b/test/test_helper.bats index d1dcd473..ed6429a9 100644 --- a/test/test_helper.bats +++ b/test/test_helper.bats @@ -98,9 +98,12 @@ load 'test_helper/common' @test "wait_for_finished_setup_in_container" { # variable not local to make visible to teardown + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" CONTAINER_NAME="$(docker run -d --rm \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ - -h mail.my-domain.com -t "${NAME}")" + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -h mail.my-domain.com \ + -t "${NAME}")" teardown() { docker rm -f "${CONTAINER_NAME}"; } # the setup should not be finished immediately after starting @@ -124,10 +127,13 @@ load 'test_helper/common' } @test "container_has_service_running/wait_for_service" { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" # variable not local to make visible to teardown CONTAINER_NAME="$(docker run -d --rm \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ - -h mail.my-domain.com -t "${NAME}")" + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -h mail.my-domain.com \ + -t "${NAME}")" teardown() { docker rm -f "${CONTAINER_NAME}"; } # pick a service that was not started @@ -147,10 +153,13 @@ load 'test_helper/common' } @test "wait_for_changes_to_be_detected_in_container fails when timeout is reached" { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" # variable not local to make visible to teardown CONTAINER_NAME="$(docker run -d --rm \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ - -h mail.my-domain.com -t "${NAME}")" + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -h mail.my-domain.com \ + -t "${NAME}")" teardown() { docker rm -f "${CONTAINER_NAME}"; } # wait for the initial checksum detection to complete @@ -167,10 +176,13 @@ load 'test_helper/common' } @test "wait_for_changes_to_be_detected_in_container succeeds within timeout" { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" # variable not local to make visible to teardown CONTAINER_NAME="$(docker run -d --rm \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ - -h mail.my-domain.com -t "${NAME}")" + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -h mail.my-domain.com \ + -t "${NAME}")" teardown() { docker rm -f "${CONTAINER_NAME}"; } # wait for the initial checksum detection to complete @@ -186,13 +198,16 @@ load 'test_helper/common' } @test "wait_for_empty_mail_queue_in_container fails when timeout reached" { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" # variable not local to make visible to teardown # enable clamav to make message delivery slower, so we can detect it CONTAINER_NAME="$(docker run -d --rm \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ - -e ENABLE_CLAMAV=1 \ - -h mail.my-domain.com -t "${NAME}")" + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -e ENABLE_CLAMAV=1 \ + -h mail.my-domain.com \ + -t "${NAME}")" teardown() { docker rm -f "${CONTAINER_NAME}"; } @@ -211,13 +226,16 @@ load 'test_helper/common' } @test "wait_for_empty_mail_queue_in_container succeeds within timeout" { + local PRIVATE_CONFIG + PRIVATE_CONFIG="$(duplicate_config_for_container .)" # variable not local to make visible to teardown # enable clamav to make message delivery slower, so we can detect it CONTAINER_NAME="$(docker run -d --rm \ - -v "$(duplicate_config_for_container .)":/tmp/docker-mailserver \ - -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ - -e ENABLE_CLAMAV=1 \ - -h mail.my-domain.com -t "${NAME}")" + -v "${PRIVATE_CONFIG}":/tmp/docker-mailserver \ + -v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \ + -e ENABLE_CLAMAV=1 \ + -h mail.my-domain.com \ + -t "${NAME}")" teardown() { docker rm -f "${CONTAINER_NAME}"; }