diff --git a/target/start-mailserver.sh b/target/start-mailserver.sh index 07aa378f..d688b51d 100644 --- a/target/start-mailserver.sh +++ b/target/start-mailserver.sh @@ -39,6 +39,7 @@ DEFAULT_VARS["SRS_SENDER_CLASSES"]="${SRS_SENDER_CLASSES:="envelope_sender"}" DEFAULT_VARS["REPORT_RECIPIENT"]="${REPORT_RECIPIENT:="0"}" DEFAULT_VARS["LOGROTATE_INTERVAL"]="${LOGROTATE_INTERVAL:=${REPORT_INTERVAL:-"daily"}}" DEFAULT_VARS["LOGWATCH_INTERVAL"]="${LOGWATCH_INTERVAL:="none"}" +DEFAULT_VARS["EXPLICITLY_DEFINED_SPAMASSASSIN_SPAM_TO_INBOX"]="$( [ -z "${SPAMASSASSIN_SPAM_TO_INBOX}" ] && echo "0" || echo "1" )" # used for backward compatibility DEFAULT_VARS["SPAMASSASSIN_SPAM_TO_INBOX"]="${SPAMASSASSIN_SPAM_TO_INBOX:="0"}" DEFAULT_VARS["MOVE_SPAM_TO_JUNK"]="${MOVE_SPAM_TO_JUNK:="1"}" DEFAULT_VARS["VIRUSMAILS_DELETE_DELAY"]="${VIRUSMAILS_DELETE_DELAY:="7"}" @@ -100,7 +101,7 @@ function register_functions() { if [ "$SMTP_ONLY" != 1 ]; then _register_setup_function "_setup_dovecot" - _register_setup_function "_setup_dovecot_dhparam" + _register_setup_function "_setup_dovecot_dhparam" _register_setup_function "_setup_dovecot_quota" _register_setup_function "_setup_dovecot_local_user" fi @@ -1492,9 +1493,12 @@ function _setup_security_stack() { sed -i "s/\$final_spam_destiny.*=.*$/\$final_spam_destiny = D_PASS;/g" /etc/amavis/conf.d/49-docker-mailserver sed -i "s/\$final_bad_header_destiny.*=.*$/\$final_bad_header_destiny = D_PASS;/g" /etc/amavis/conf.d/49-docker-mailserver else - notify 'warn' "Spam messages WILL NOT BE DELIVERED, you will NOT be notified of ANY message bounced. See SPAMASSASSIN_SPAM_TO_INBOX options." sed -i "s/\$final_spam_destiny.*=.*$/\$final_spam_destiny = D_BOUNCE;/g" /etc/amavis/conf.d/49-docker-mailserver sed -i "s/\$final_bad_header_destiny.*=.*$/\$final_bad_header_destiny = D_BOUNCE;/g" /etc/amavis/conf.d/49-docker-mailserver + + if [ "${DEFAULT_VARS['EXPLICITLY_DEFINED_SPAMASSASSIN_SPAM_TO_INBOX']}" = 0 ]; then + notify 'warn' "Spam messages WILL NOT BE DELIVERED, you will NOT be notified of ANY message bounced. Please define SPAMASSASSIN_SPAM_TO_INBOX explicitly." + fi fi fi diff --git a/test/mail_spam_bounced.bats b/test/mail_spam_bounced.bats index c194b25b..9b0880fc 100644 --- a/test/mail_spam_bounced.bats +++ b/test/mail_spam_bounced.bats @@ -14,18 +14,27 @@ function teardown() { } function setup_file() { - docker run -d --name mail_spam_bounced \ + docker run -d --name mail_spam_bounced_defined \ -v "`pwd`/test/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 + wait_for_finished_setup_in_container mail_spam_bounced_defined + + docker run -d --name mail_spam_bounced_undefined \ + -v "`pwd`/test/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 } function teardown_file() { - docker rm -f mail_spam_bounced + docker rm -f mail_spam_bounced_defined + docker rm -f mail_spam_bounced_undefined } @test "first" { @@ -33,14 +42,27 @@ function teardown_file() { } @test "checking amavis: spam message is bounced" { - run sh -c "docker logs mail_spam_bounced | grep 'Spam messages WILL NOT BE DELIVERED'" + # this warning should only be raised when no explicit value for SPAMASSASSIN_SPAM_TO_INBOX is defined + run sh -c "docker logs mail_spam_bounced_defined | grep 'Spam messages WILL NOT BE DELIVERED'" + assert_failure + + # send a spam message + run docker exec mail_spam_bounced_defined /bin/sh -c "nc 0.0.0.0 25 < /tmp/docker-mailserver-test/email-templates/amavis-spam.txt" + assert_success + + run repeat_until_success_or_timeout 20 sh -c "docker logs mail_spam_bounced_defined | grep 'Blocked SPAM {NoBounceInbound,Quarantined}'" + assert_success +} + +@test "checking amavis: spam message is bounced, undefined SPAMASSASSIN_SPAM_TO_INBOX raise a warning" { + run sh -c "docker logs mail_spam_bounced_undefined | grep 'Spam messages WILL NOT BE DELIVERED'" assert_success # send a spam message - run docker exec mail_spam_bounced /bin/sh -c "nc 0.0.0.0 25 < /tmp/docker-mailserver-test/email-templates/amavis-spam.txt" + run docker exec mail_spam_bounced_defined /bin/sh -c "nc 0.0.0.0 25 < /tmp/docker-mailserver-test/email-templates/amavis-spam.txt" assert_success - run repeat_until_success_or_timeout 20 sh -c "docker logs mail_spam_bounced | grep 'Blocked SPAM {NoBounceInbound,Quarantined}'" + run repeat_until_success_or_timeout 20 sh -c "docker logs mail_spam_bounced_defined | grep 'Blocked SPAM {NoBounceInbound,Quarantined}'" assert_success }