2019-08-08 22:26:20 +00:00
|
|
|
load 'test_helper/common'
|
|
|
|
|
|
|
|
function setup() {
|
2019-08-08 23:34:04 +00:00
|
|
|
run_setup_file_if_necessary
|
2019-08-08 22:42:37 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function teardown() {
|
2019-08-08 23:34:04 +00:00
|
|
|
run_teardown_file_if_necessary
|
2019-08-08 22:42:37 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function setup_file() {
|
2020-08-24 20:08:11 +00:00
|
|
|
# We use a temporary config directory since we'll be dynamically editing
|
|
|
|
# it with setup.sh.
|
|
|
|
tmp_confdir=$(mktemp -d /tmp/docker-mailserver-config-relay-hosts-XXXXX)
|
2021-06-07 12:58:34 +00:00
|
|
|
cp -a test/config/relay-hosts/* "${tmp_confdir}/"
|
2020-08-24 20:08:11 +00:00
|
|
|
|
2019-08-08 22:42:37 +00:00
|
|
|
docker run -d --name mail_with_relays \
|
2020-11-05 12:32:42 +00:00
|
|
|
-v "${tmp_confdir}":/tmp/docker-mailserver \
|
2020-10-19 11:13:42 +00:00
|
|
|
-v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \
|
2019-08-08 22:26:20 +00:00
|
|
|
-e RELAY_HOST=default.relay.com \
|
|
|
|
-e RELAY_PORT=2525 \
|
|
|
|
-e RELAY_USER=smtp_user \
|
|
|
|
-e RELAY_PASSWORD=smtp_password \
|
|
|
|
--cap-add=SYS_PTRACE \
|
|
|
|
-e PERMIT_DOCKER=host \
|
|
|
|
-e DMS_DEBUG=0 \
|
2020-11-05 12:32:42 +00:00
|
|
|
-h mail.my-domain.com -t "${NAME}"
|
2019-08-08 22:26:20 +00:00
|
|
|
wait_for_finished_setup_in_container mail_with_relays
|
|
|
|
}
|
|
|
|
|
2019-08-08 22:42:37 +00:00
|
|
|
function teardown_file() {
|
|
|
|
docker rm -f mail_with_relays
|
2020-11-05 12:32:42 +00:00
|
|
|
rm -rf "${tmp_confdir}"
|
2019-08-08 22:26:20 +00:00
|
|
|
}
|
|
|
|
|
2019-08-08 23:34:04 +00:00
|
|
|
@test "first" {
|
2020-11-05 12:32:42 +00:00
|
|
|
skip 'this test must come first to reliably identify when to run setup_file'
|
2019-08-08 23:34:04 +00:00
|
|
|
}
|
|
|
|
|
2019-08-08 22:26:20 +00:00
|
|
|
@test "checking relay hosts: default mapping is added from env vars" {
|
2020-08-24 20:08:11 +00:00
|
|
|
run docker exec mail_with_relays grep -e domainone.tld /etc/postfix/relayhost_map
|
2021-06-07 12:58:34 +00:00
|
|
|
assert_output -e '^@domainone.tld[[:space:]]+\[default.relay.com\]:2525$'
|
2020-08-24 20:08:11 +00:00
|
|
|
}
|
|
|
|
|
2020-08-24 20:53:54 +00:00
|
|
|
@test "checking relay hosts: default mapping is added from env vars for virtual user entry" {
|
|
|
|
run docker exec mail_with_relays grep -e domain1.tld /etc/postfix/relayhost_map
|
2021-06-07 12:58:34 +00:00
|
|
|
assert_output -e '^@domain1.tld[[:space:]]+\[default.relay.com\]:2525$'
|
2020-08-24 20:53:54 +00:00
|
|
|
}
|
|
|
|
|
2020-08-24 20:08:11 +00:00
|
|
|
@test "checking relay hosts: default mapping is added from env vars for new user entry" {
|
|
|
|
run docker exec mail_with_relays grep -e domainzero.tld /etc/postfix/relayhost_map
|
|
|
|
assert_output ''
|
|
|
|
run ./setup.sh -c mail_with_relays email add user0@domainzero.tld password123
|
2020-09-19 23:10:05 +00:00
|
|
|
run_until_success_or_timeout 10 docker exec mail_with_relays grep -e domainzero.tld /etc/postfix/relayhost_map
|
2021-06-07 12:58:34 +00:00
|
|
|
assert_output -e '^@domainzero.tld[[:space:]]+\[default.relay.com\]:2525$'
|
2019-08-08 22:26:20 +00:00
|
|
|
}
|
|
|
|
|
2020-08-24 20:53:54 +00:00
|
|
|
@test "checking relay hosts: default mapping is added from env vars for new virtual user entry" {
|
|
|
|
run docker exec mail_with_relays grep -e domain2.tld /etc/postfix/relayhost_map
|
|
|
|
assert_output ''
|
|
|
|
run ./setup.sh -c mail_with_relays alias add user2@domain2.tld user2@domaintwo.tld
|
2020-09-19 23:10:05 +00:00
|
|
|
run_until_success_or_timeout 10 docker exec mail_with_relays grep -e domain2.tld /etc/postfix/relayhost_map
|
2021-06-07 12:58:34 +00:00
|
|
|
assert_output -e '^@domain2.tld[[:space:]]+\[default.relay.com\]:2525$'
|
2020-08-24 20:53:54 +00:00
|
|
|
}
|
|
|
|
|
2019-08-08 22:26:20 +00:00
|
|
|
@test "checking relay hosts: custom mapping is added from file" {
|
2020-08-24 20:08:11 +00:00
|
|
|
run docker exec mail_with_relays grep -e domaintwo.tld /etc/postfix/relayhost_map
|
2021-06-07 12:58:34 +00:00
|
|
|
assert_output -e '^@domaintwo.tld[[:space:]]+\[other.relay.com\]:587$'
|
2019-08-08 22:26:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@test "checking relay hosts: ignored domain is not added" {
|
2020-08-24 20:08:11 +00:00
|
|
|
run docker exec mail_with_relays grep -e domainthree.tld /etc/postfix/relayhost_map
|
|
|
|
assert_failure 1
|
|
|
|
assert_output ''
|
2019-08-08 22:26:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@test "checking relay hosts: auth entry is added" {
|
2020-08-24 20:08:11 +00:00
|
|
|
run docker exec mail_with_relays /bin/sh -c 'cat /etc/postfix/sasl_passwd | grep -e "^@domaintwo.tld\s\+smtp_user_2:smtp_password_2" | wc -l'
|
2019-08-08 22:26:20 +00:00
|
|
|
assert_success
|
2020-08-24 20:08:11 +00:00
|
|
|
assert_output 1
|
2019-08-08 22:26:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@test "checking relay hosts: default auth entry is added" {
|
2020-08-24 20:08:11 +00:00
|
|
|
run docker exec mail_with_relays /bin/sh -c 'cat /etc/postfix/sasl_passwd | grep -e "^\[default.relay.com\]:2525\s\+smtp_user:smtp_password" | wc -l'
|
2019-08-08 22:26:20 +00:00
|
|
|
assert_success
|
2020-08-24 20:08:11 +00:00
|
|
|
assert_output 1
|
2019-08-08 23:34:04 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@test "last" {
|
2020-11-05 12:32:42 +00:00
|
|
|
skip 'this test is only there to reliably mark the end for the teardown_file'
|
2020-08-24 20:08:11 +00:00
|
|
|
}
|