diff --git a/docs/content/config/security/mail_crypt.md b/docs/content/config/security/mail_crypt.md index 463e91f6..a53b3736 100644 --- a/docs/content/config/security/mail_crypt.md +++ b/docs/content/config/security/mail_crypt.md @@ -24,8 +24,8 @@ Official Dovecot documentation: https://doc.dovecot.org/configuration_manual/mai # Enables mail_crypt for all services (imap, pop3, etc) mail_plugins = $mail_plugins mail_crypt plugin { - mail_crypt_global_private_key = /usr/lib/dovecot/sieve-global/after/spam_to_junk.sieve << EOF require ["fileinto","special-use"]; diff --git a/target/scripts/startup/setup.d/security/rspamd.sh b/target/scripts/startup/setup.d/security/rspamd.sh index bc2e936f..859fec16 100644 --- a/target/scripts/startup/setup.d/security/rspamd.sh +++ b/target/scripts/startup/setup.d/security/rspamd.sh @@ -223,20 +223,26 @@ function __rspamd__setup_learning() { readonly SIEVE_PIPE_BIN_DIR ln -s "$(type -f -P rspamc)" "${SIEVE_PIPE_BIN_DIR}/rspamc" - sedfile -i -E 's|(mail_plugins =.*)|\1 imap_sieve|' /etc/dovecot/conf.d/20-imap.conf - sedfile -i -E '/^}/d' /etc/dovecot/conf.d/90-sieve.conf + sedfile -i -E 's|^( *imap_sieve =).*|\1 yes|g' /etc/dovecot/conf.d/20-imap.conf cat >>/etc/dovecot/conf.d/90-sieve.conf << EOF - # From anywhere to Junk - imapsieve_mailbox1_name = Junk - imapsieve_mailbox1_causes = COPY APPEND - imapsieve_mailbox1_before = file:${SIEVE_PIPE_BIN_DIR}/learn-spam.sieve +mailbox Junk { + sieve_script learn_spam { + cause = append copy + driver = file + name = Learn Spam + path = ${SIEVE_PIPE_BIN_DIR}/learn-spam.sieve + type = before + } +} - # From Junk to Inbox - imapsieve_mailbox2_name = INBOX - imapsieve_mailbox2_from = Junk - imapsieve_mailbox2_causes = COPY APPEND - imapsieve_mailbox2_before = file:${SIEVE_PIPE_BIN_DIR}/learn-ham.sieve +imapsieve_from Junk { + sieve_script learn_ham { + cause = append copy + name = Learn Ham + path = ${SIEVE_PIPE_BIN_DIR}/learn-ham.sieve + type = before + } } EOF diff --git a/test/config/rspamd_full/user-patches.sh b/test/config/rspamd_full/user-patches.sh index 56906064..712fc841 100644 --- a/test/config/rspamd_full/user-patches.sh +++ b/test/config/rspamd_full/user-patches.sh @@ -12,5 +12,4 @@ echo 'gtube_patterns = "all"' >>/etc/rspamd/local.d/options.inc # Sieve scripts are executed so Rspamd is trained when using # `RSPAMD_LEARN=1`. echo 'mail_debug = yes' >>/etc/dovecot/dovecot.conf -sed -i -E '/^}/d' /etc/dovecot/conf.d/90-sieve.conf -echo -e '\n sieve_trace_debug = yes\n}' >>/etc/dovecot/conf.d/90-sieve.conf +echo 'sieve_trace_debug = yes' >>/etc/dovecot/conf.d/90-sieve.conf diff --git a/test/tests/parallel/set1/dovecot/quotas_disabled.bats b/test/tests/parallel/set1/dovecot/quotas_disabled.bats index bc9aa5bc..05917340 100644 --- a/test/tests/parallel/set1/dovecot/quotas_disabled.bats +++ b/test/tests/parallel/set1/dovecot/quotas_disabled.bats @@ -14,10 +14,10 @@ function teardown_file() { _default_teardown ; } @test "(Dovecot) quota plugin is disabled" { _run_in_container_bash_and_filter_output 'cat /etc/dovecot/conf.d/10-mail.conf' - refute_output --partial 'quota' + refute_output --partial 'quota = yes' _run_in_container_bash_and_filter_output 'cat /etc/dovecot/conf.d/20-imap.conf' - refute_output --partial 'imap_quota' + refute_output --partial 'imap_quota = yes' _run_in_container_bash "[[ -f /etc/dovecot/conf.d/90-quota.conf ]]" assert_failure diff --git a/test/tests/parallel/set1/spam_virus/rspamd_full.bats b/test/tests/parallel/set1/spam_virus/rspamd_full.bats index e5c63c6e..c1df3e2c 100644 --- a/test/tests/parallel/set1/spam_virus/rspamd_full.bats +++ b/test/tests/parallel/set1/spam_virus/rspamd_full.bats @@ -140,7 +140,7 @@ function teardown_file() { _default_teardown ; } _service_log_should_contain_string 'rspamd' 'S (no action)' _print_mail_log_for_msgid 'rspamd-test-email-pass' - assert_output --partial "stored mail into mailbox 'INBOX'" + assert_output --partial 'saved mail to INBOX' _count_files_in_directory_in_container /var/mail/localhost.localdomain/user1/new/ 3 } @@ -154,7 +154,7 @@ function teardown_file() { _default_teardown ; } assert_output --partial '5.7.1 Gtube pattern' _print_mail_log_for_msgid 'dms-test-email-spam' - refute_output --partial "stored mail into mailbox 'INBOX'" + refute_output --partial 'saved mail to INBOX' assert_failure _count_files_in_directory_in_container /var/mail/localhost.localdomain/user1/new/ 3 @@ -169,7 +169,7 @@ function teardown_file() { _default_teardown ; } assert_output --partial '5.7.1 ClamAV FOUND VIRUS "Eicar-Signature"' _print_mail_log_for_msgid 'dms-test-email-spam' - refute_output --partial "stored mail into mailbox 'INBOX'" + refute_output --partial 'saved mail to INBOX' assert_failure _count_files_in_directory_in_container /var/mail/localhost.localdomain/user1/new/ 3 @@ -259,7 +259,7 @@ function teardown_file() { _default_teardown ; } _service_log_should_contain_string 'rspamd' 'rewrite subject "Gtube pattern"' _print_mail_log_for_msgid 'rspamd-test-email-rewrite_subject' - assert_output --partial "stored mail into mailbox 'INBOX'" + assert_output --partial 'saved mail to INBOX' # check that the inbox contains the subject-rewritten e-mail _run_in_container_bash "grep --fixed-strings 'Subject: *** SPAM ***' /var/mail/localhost.localdomain/user1/new/*" @@ -284,7 +284,7 @@ function teardown_file() { _default_teardown ; } _file_exists_in_container "/usr/lib/dovecot/sieve-pipe/${FILE}" done - _run_in_container grep 'mail_plugins.*imap_sieve' /etc/dovecot/conf.d/20-imap.conf + _run_in_container grep -F 'imap_sieve = yes' /etc/dovecot/conf.d/20-imap.conf assert_success local SIEVE_CONFIG_FILE='/etc/dovecot/conf.d/90-sieve.conf' _run_in_container grep 'sieve_plugins.*sieve_imapsieve' "${SIEVE_CONFIG_FILE}" diff --git a/test/tests/parallel/set1/tls/manual.bats b/test/tests/parallel/set1/tls/manual.bats index c082d6ed..eb3473de 100644 --- a/test/tests/parallel/set1/tls/manual.bats +++ b/test/tests/parallel/set1/tls/manual.bats @@ -61,19 +61,19 @@ function teardown_file() { _default_teardown ; } _run_in_container grep '^ssl_key =' "${DOVECOT_CONFIG_SSL}" assert_success - assert_output "ssl_key = <${PRIMARY_KEY}" + assert_output "ssl_key = ${PRIMARY_KEY}" _run_in_container grep '^ssl_cert =' "${DOVECOT_CONFIG_SSL}" assert_success - assert_output "ssl_cert = <${PRIMARY_CERT}" + assert_output "ssl_cert = ${PRIMARY_CERT}" _run_in_container grep '^ssl_alt_key =' "${DOVECOT_CONFIG_SSL}" assert_success - assert_output "ssl_alt_key = <${FALLBACK_KEY}" + assert_output "ssl_alt_key = ${FALLBACK_KEY}" _run_in_container grep '^ssl_alt_cert =' "${DOVECOT_CONFIG_SSL}" assert_success - assert_output "ssl_alt_cert = <${FALLBACK_CERT}" + assert_output "ssl_alt_cert = ${FALLBACK_CERT}" } @test "manual configuration copied files correctly " {