author | Alberto Bertogli
<albertito@blitiri.com.ar> 2016-09-25 19:05:21 UTC |
committer | Alberto Bertogli
<albertito@blitiri.com.ar> 2016-10-09 23:51:04 UTC |
parent | 1d3675a13393e95df466d4be5ef4bc0092ba36dc |
test/t-05-null_address/config/chasquid.conf | +13 | -0 |
test/t-05-null_address/config/domains/testserver/aliases | +3 | -0 |
test/t-05-null_address/content | +5 | -0 |
test/t-05-null_address/expected_dsr | +33 | -0 |
test/t-05-null_address/hosts | +1 | -0 |
test/t-05-null_address/msmtprc | +13 | -0 |
test/t-05-null_address/run.sh | +29 | -0 |
test/t-05-null_address/sendmail | +13 | -0 |
test/util/mail_diff | +39 | -1 |
diff --git a/test/t-05-null_address/config/chasquid.conf b/test/t-05-null_address/config/chasquid.conf new file mode 100644 index 0000000..f994c10 --- /dev/null +++ b/test/t-05-null_address/config/chasquid.conf @@ -0,0 +1,13 @@ +hostname: "testserver" + +smtp_address: ":1025" +submission_address: ":1587" +monitoring_address: ":1099" + +mail_delivery_agent_bin: "test-mda" +mail_delivery_agent_args: "%to%" + +data_dir: "../.data" + +suffix_separators: "+-" +drop_characters: "._" diff --git a/test/t-05-null_address/config/domains/testserver/aliases b/test/t-05-null_address/config/domains/testserver/aliases new file mode 100644 index 0000000..0c85b2c --- /dev/null +++ b/test/t-05-null_address/config/domains/testserver/aliases @@ -0,0 +1,3 @@ + +fail: | false + diff --git a/test/t-05-null_address/content b/test/t-05-null_address/content new file mode 100644 index 0000000..911f0dc --- /dev/null +++ b/test/t-05-null_address/content @@ -0,0 +1,5 @@ +From: Mailer daemon <somewhere@horns.com> +Subject: I've come to haunt you + +Muahahahaha + diff --git a/test/t-05-null_address/expected_dsr b/test/t-05-null_address/expected_dsr new file mode 100644 index 0000000..b2c473b --- /dev/null +++ b/test/t-05-null_address/expected_dsr @@ -0,0 +1,33 @@ +From user@testserver +From: Mail Delivery System <postmaster-dsn@testserver> +To: <user@testserver> +Subject: Mail delivery failed: returning message to sender +Message-ID: * +Date: * +X-Failed-Recipients: fail@testserver, +Auto-Submitted: auto-replied + +Delivery to the following recipient(s) failed permanently: + + - fail@testserver + + +----- Technical details ----- + +- "false" (PIPE) failed with error: + exit status 1 + + +----- Original message ----- + +Received: from user user@testserver + by * + (envelope from "user@testserver") + on ; * +Date: * +From: Mailer daemon <somewhere@horns.com> +Subject: I've come to haunt you + +Muahahahaha + + diff --git a/test/t-05-null_address/hosts b/test/t-05-null_address/hosts new file mode 100644 index 0000000..2b9b623 --- /dev/null +++ b/test/t-05-null_address/hosts @@ -0,0 +1 @@ +testserver localhost diff --git a/test/t-05-null_address/msmtprc b/test/t-05-null_address/msmtprc new file mode 100644 index 0000000..91fab60 --- /dev/null +++ b/test/t-05-null_address/msmtprc @@ -0,0 +1,13 @@ +account default + +host testserver +port 1587 + +tls on +tls_trust_file config/domains/testserver/cert.pem + +from user@testserver + +auth on +user user@testserver +password secretpassword diff --git a/test/t-05-null_address/run.sh b/test/t-05-null_address/run.sh new file mode 100755 index 0000000..23c28ca --- /dev/null +++ b/test/t-05-null_address/run.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +set -e +. $(dirname ${0})/../util/lib.sh + +init + +generate_certs_for testserver +add_user testserver user secretpassword + +mkdir -p .logs +chasquid -v=2 --log_dir=.logs --config_dir=config & +wait_until_ready 1025 + + +# Send mail with an empty address (directly, unauthenticated). +nc localhost 1025 < sendmail > /dev/null +wait_for_file .mail/user@testserver +mail_diff content .mail/user@testserver +rm -f .mail/user@testserver + + +# Test that we get mail back for a failed delivery +run_msmtp fail@testserver < content +wait_for_file .mail/user@testserver +mail_diff expected_dsr .mail/user@testserver + + +success diff --git a/test/t-05-null_address/sendmail b/test/t-05-null_address/sendmail new file mode 100644 index 0000000..4b7c677 --- /dev/null +++ b/test/t-05-null_address/sendmail @@ -0,0 +1,13 @@ +EHLO +MAIL FROM: <> +RCPT TO: user@testserver +DATA +From: Mailer daemon <somewhere@horns.com> +Subject: I've come to haunt you + +Muahahahaha + + +. +QUIT + diff --git a/test/util/mail_diff b/test/util/mail_diff index da87547..761073d 100755 --- a/test/util/mail_diff +++ b/test/util/mail_diff @@ -19,11 +19,49 @@ for h, val in expected.items(): print("Header missing: %r" % h) diff = True continue + + if expected[h] == '*': + continue + if msg[h] != val: print("Header %r differs: %r != %r" % (h, val, msg[h])) diff = True -if expected.get_payload() != msg.get_payload(): + +def flexible_eq(expected, got): + """Compare two strings, supporting wildcards. + + This functions compares two strings, but supports wildcards on the + expected string. The following characters have special meaning: + + - ? matches any character. + - * matches anything until the end of the line. + + Returns True if equal (considering wildcards), False otherwise. + """ + posG = 0 + for c in expected: + if posG >= len(got): + return False + + if c == '?': + posG += 1 + continue + if c == '*': + while got[posG] != '\n': + posG += 1 + continue + continue + + if c != got[posG]: + return False + + posG += 1 + + return True + + +if not flexible_eq(expected.get_payload(), msg.get_payload()): diff = True if expected.is_multipart() != msg.is_multipart():