tests: small adjustments (#3772)

This commit is contained in:
Georg Lauterbach 2024-01-14 23:14:03 +01:00 committed by GitHub
parent f794f65caa
commit 3a142f9726
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 22 additions and 23 deletions

View file

@ -20,7 +20,7 @@ All notable changes to this project will be documented in this file. The format
### Updates ### Updates
- **Tests**: - **Tests**:
- Refactored mail sending ([#3747](https://github.com/docker-mailserver/docker-mailserver/pull/3747)): - Refactored mail sending ([#3747](https://github.com/docker-mailserver/docker-mailserver/pull/3747) & [#3772](https://github.com/docker-mailserver/docker-mailserver/pull/3772)):
- This change is a follow-up to [#3732](https://github.com/docker-mailserver/docker-mailserver/pull/3732) from DMS v13.2. - This change is a follow-up to [#3732](https://github.com/docker-mailserver/docker-mailserver/pull/3732) from DMS v13.2.
- `swaks` version is now the latest from Github releases instead of the Debian package. - `swaks` version is now the latest from Github releases instead of the Debian package.
- `_nc_wrapper`, `_send_mail` and related helpers expect the `.txt` filepath extension again. - `_nc_wrapper`, `_send_mail` and related helpers expect the `.txt` filepath extension again.

View file

@ -1,6 +0,0 @@
From: Docker Mail Server <dockermailserver@external.tld>
To: Existing Local User <user1@localhost.localdomain>
Date: Sat, 22 May 2010 07:43:25 -0400
Subject: Test Message amavis/spam.txt
This is a test mail.
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

View file

@ -141,14 +141,12 @@ function _send_email_and_get_id() {
# Get rid of ${1} so only the arguments for swaks remain # Get rid of ${1} so only the arguments for swaks remain
shift 1 shift 1
local QUEUE_ID
# The unique ID Postfix (and other services) use may be different in length # The unique ID Postfix (and other services) use may be different in length
# on different systems (e.g. amd64 (11) vs aarch64 (10)). Hence, we use a # on different systems. Hence, we use a range to safely capture it.
# range to safely capture it.
local QUEUE_ID_REGEX='[A-Z0-9]{9,12}' local QUEUE_ID_REGEX='[A-Z0-9]{9,12}'
_wait_for_empty_mail_queue_in_container _wait_for_empty_mail_queue_in_container
local OUTPUT=$(_send_email "${@}" --header "Message-Id: ${MID}") _send_email "${@}" --header "Message-Id: ${MID}"
_wait_for_empty_mail_queue_in_container _wait_for_empty_mail_queue_in_container
# We store Postfix's queue ID first # We store Postfix's queue ID first
@ -164,3 +162,12 @@ function _send_email_and_get_id() {
run echo "${ID_ENV_VAR_REF}" run echo "${ID_ENV_VAR_REF}"
assert_line --regexp "^${QUEUE_ID_REGEX}\|${MID}$" assert_line --regexp "^${QUEUE_ID_REGEX}\|${MID}$"
} }
# Send a spam e-mail by utilizing GTUBE.
#
# Extra arguments given to this function will be supplied by `_send_email_and_get_id` directly.
function _send_spam() {
_send_email_and_get_id MAIL_ID_SPAM "${@}" \
--from 'spam@external.tld' \
--body 'XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X'
}

View file

@ -43,20 +43,18 @@ function setup_file() {
_wait_for_service postfix _wait_for_service postfix
_wait_for_smtp_port_in_container _wait_for_smtp_port_in_container
# ref: https://rspamd.com/doc/gtube_patterns.html
local GTUBE_SUFFIX='*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X'
# We will send 4 emails: # We will send 4 emails:
# 1. The first one should pass just fine # 1. The first one should pass just fine
_send_email_and_get_id MAIL_ID_PASS _send_email_and_get_id MAIL_ID_PASS
# 2. The second one should be rejected (GTUBE pattern) # 2. The second one should be rejected (Rspamd-specific GTUBE pattern for rejection)
_send_email_and_get_id MAIL_ID_REJECT --expect-rejection --body "XJS${GTUBE_SUFFIX}" _send_spam --expect-rejection
# 3. The third one should be rejected due to a virus (ClamAV EICAR pattern) # 3. The third one should be rejected due to a virus (ClamAV EICAR pattern)
# shellcheck disable=SC2016 # shellcheck disable=SC2016
_send_email_and_get_id MAIL_ID_VIRUS --expect-rejection \ _send_email_and_get_id MAIL_ID_VIRUS --expect-rejection \
--body 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' --body 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
# 4. The fourth one will receive an added header (GTUBE pattern) # 4. The fourth one will receive an added header (Rspamd-specific GTUBE pattern for adding a spam header)
_send_email_and_get_id MAIL_ID_HEADER --body "YJS${GTUBE_SUFFIX}" # ref: https://rspamd.com/doc/gtube_patterns.html
_send_email_and_get_id MAIL_ID_HEADER --body "YJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X"
_run_in_container cat /var/log/mail.log _run_in_container cat /var/log/mail.log
assert_success assert_success
@ -122,7 +120,7 @@ function teardown_file() { _default_teardown ; }
_service_log_should_contain_string 'rspamd' 'S \(reject\)' _service_log_should_contain_string 'rspamd' 'S \(reject\)'
_service_log_should_contain_string 'rspamd' 'reject "Gtube pattern"' _service_log_should_contain_string 'rspamd' 'reject "Gtube pattern"'
_print_mail_log_for_id "${MAIL_ID_REJECT}" _print_mail_log_for_id "${MAIL_ID_SPAM}"
assert_output --partial 'milter-reject' assert_output --partial 'milter-reject'
assert_output --partial '5.7.1 Gtube pattern' assert_output --partial '5.7.1 Gtube pattern'

View file

@ -95,7 +95,7 @@ function teardown() { _default_teardown ; }
function _should_send_spam_message() { function _should_send_spam_message() {
_wait_for_smtp_port_in_container _wait_for_smtp_port_in_container
_wait_for_tcp_port_in_container 10024 # port 10024 is for Amavis _wait_for_tcp_port_in_container 10024 # port 10024 is for Amavis
_send_email --from 'spam@external.tld' --data 'amavis/spam.txt' _send_spam
} }
function _should_be_received_by_amavis() { function _should_be_received_by_amavis() {

View file

@ -81,7 +81,7 @@ function setup_file() {
_send_email --to bounce-always@localhost.localdomain _send_email --to bounce-always@localhost.localdomain
_send_email --to alias2@localhost.localdomain _send_email --to alias2@localhost.localdomain
# Required for 'rejects spam': # Required for 'rejects spam':
_send_email --from 'spam@external.tld' --data 'amavis/spam.txt' _send_spam
# Required for 'delivers mail to existing account': # Required for 'delivers mail to existing account':
_send_email --header 'Subject: Test Message existing-user1' _send_email --header 'Subject: Test Message existing-user1'