From f6844028763c0e6f43e3fb7462fe7127af26ebb7 Mon Sep 17 00:00:00 2001 From: Niklas Wolber Date: Mon, 13 Feb 2017 17:27:40 +0100 Subject: [PATCH 1/5] Add support recipient delimiters with aliases fixes #442 --- Makefile | 1 + target/postfix/main.cf | 2 +- target/postfix/master.cf | 2 ++ .../existing-alias-recipient-delimiter.txt | 12 ++++++++++++ test/tests.bats | 6 ++++++ 5 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 test/email-templates/existing-alias-recipient-delimiter.txt diff --git a/Makefile b/Makefile index 8eece1f9..cccb1c89 100644 --- a/Makefile +++ b/Makefile @@ -149,6 +149,7 @@ fixtures: docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/docker-mailserver-test/email-templates/amavis-virus.txt" docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/docker-mailserver-test/email-templates/existing-alias-external.txt" docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/docker-mailserver-test/email-templates/existing-alias-local.txt" + docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/docker-mailserver-test/email-templates/existing-alias-recipient-delimiter.txt" docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/docker-mailserver-test/email-templates/existing-user.txt" docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/docker-mailserver-test/email-templates/existing-user-and-cc-local-alias.txt" docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/docker-mailserver-test/email-templates/existing-regexp-alias-external.txt" diff --git a/target/postfix/main.cf b/target/postfix/main.cf index 0a79adc7..d18b718c 100644 --- a/target/postfix/main.cf +++ b/target/postfix/main.cf @@ -58,7 +58,7 @@ smtpd_sasl_local_domain = $myhostname broken_sasl_auth_clients = yes # Mail directory -virtual_transport = lmtp:unix:/var/run/dovecot/lmtp +virtual_transport = dovecot virtual_mailbox_domains = /etc/postfix/vhost virtual_mailbox_maps = texthash:/etc/postfix/vmailbox virtual_alias_maps = texthash:/etc/postfix/virtual diff --git a/target/postfix/master.cf b/target/postfix/master.cf index f043ec48..db98c847 100644 --- a/target/postfix/master.cf +++ b/target/postfix/master.cf @@ -62,6 +62,8 @@ scalemail-backend unix - n n - 2 pipe mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user} +dovecot unix - n n - - pipe + flags=DRhu user=docker:docker argv=/usr/lib/dovecot/deliver -f ${sender} -a ${recipient} -d ${user}@${nexthop} # diff --git a/test/email-templates/existing-alias-recipient-delimiter.txt b/test/email-templates/existing-alias-recipient-delimiter.txt new file mode 100644 index 00000000..9fd2953f --- /dev/null +++ b/test/email-templates/existing-alias-recipient-delimiter.txt @@ -0,0 +1,12 @@ +HELO mail.external.tld +MAIL FROM: user@external.tld +RCPT TO: alias1+test@localhost.localdomain +DATA +From: Docker Mail Server +To: Existing Local Alias +Date: Sat, 22 May 2010 07:43:25 -0400 +Subject: Test Message +This is a test mail. + +. +QUIT \ No newline at end of file diff --git a/test/tests.bats b/test/tests.bats index 1cd3538d..725a6dd7 100644 --- a/test/tests.bats +++ b/test/tests.bats @@ -272,6 +272,12 @@ load 'test_helper/bats-assert/load' assert_output 1 } +@test "checking smtp: delivers mail to existing alias with recipient delimiter" { + run docker exec mail /bin/sh -c "grep 'to=, orig_to=' /var/log/mail/mail.log | grep 'status=sent' | wc -l" + assert_success + assert_output 1 +} + @test "checking smtp: delivers mail to existing catchall" { run docker exec mail /bin/sh -c "grep 'to=, orig_to=' /var/log/mail/mail.log | grep 'status=sent' | wc -l" assert_success From a742b6ac5e9890a71a6b411f8a477c124fd9c451 Mon Sep 17 00:00:00 2001 From: Niklas Wolber Date: Mon, 13 Feb 2017 20:33:03 +0100 Subject: [PATCH 2/5] Adapt existing tests to #442 --- test/tests.bats | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/tests.bats b/test/tests.bats index 725a6dd7..bc4ba012 100644 --- a/test/tests.bats +++ b/test/tests.bats @@ -261,9 +261,9 @@ load 'test_helper/bats-assert/load' } @test "checking smtp: delivers mail to existing account" { - run docker exec mail /bin/sh -c "grep 'postfix/lmtp' /var/log/mail/mail.log | grep 'status=sent' | grep ' Saved)' | wc -l" + run docker exec mail /bin/sh -c "grep 'postfix/pipe' /var/log/mail/mail.log | grep 'status=sent (delivered via dovecot service)' | wc -l" assert_success - assert_output 6 + assert_output 7 } @test "checking smtp: delivers mail to existing alias" { @@ -293,7 +293,7 @@ load 'test_helper/bats-assert/load' @test "checking smtp: user1 should have received 5 mails" { run docker exec mail /bin/sh -c "ls -A /var/mail/localhost.localdomain/user1/new | wc -l" assert_success - assert_output 5 + assert_output 6 } @test "checking smtp: rejects mail to unknown user" { From 0dddee3df18da25be7be5eb8f4717b6bf23ff161 Mon Sep 17 00:00:00 2001 From: Niklas Wolber Date: Mon, 13 Feb 2017 17:27:40 +0100 Subject: [PATCH 3/5] Add support recipient delimiters with aliases fixes #442 --- Makefile | 1 + target/postfix/main.cf | 2 +- target/postfix/master.cf | 2 ++ .../existing-alias-recipient-delimiter.txt | 12 ++++++++++++ test/tests.bats | 6 ++++++ 5 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 test/email-templates/existing-alias-recipient-delimiter.txt diff --git a/Makefile b/Makefile index 8eece1f9..cccb1c89 100644 --- a/Makefile +++ b/Makefile @@ -149,6 +149,7 @@ fixtures: docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/docker-mailserver-test/email-templates/amavis-virus.txt" docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/docker-mailserver-test/email-templates/existing-alias-external.txt" docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/docker-mailserver-test/email-templates/existing-alias-local.txt" + docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/docker-mailserver-test/email-templates/existing-alias-recipient-delimiter.txt" docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/docker-mailserver-test/email-templates/existing-user.txt" docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/docker-mailserver-test/email-templates/existing-user-and-cc-local-alias.txt" docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/docker-mailserver-test/email-templates/existing-regexp-alias-external.txt" diff --git a/target/postfix/main.cf b/target/postfix/main.cf index 0a79adc7..d18b718c 100644 --- a/target/postfix/main.cf +++ b/target/postfix/main.cf @@ -58,7 +58,7 @@ smtpd_sasl_local_domain = $myhostname broken_sasl_auth_clients = yes # Mail directory -virtual_transport = lmtp:unix:/var/run/dovecot/lmtp +virtual_transport = dovecot virtual_mailbox_domains = /etc/postfix/vhost virtual_mailbox_maps = texthash:/etc/postfix/vmailbox virtual_alias_maps = texthash:/etc/postfix/virtual diff --git a/target/postfix/master.cf b/target/postfix/master.cf index f043ec48..db98c847 100644 --- a/target/postfix/master.cf +++ b/target/postfix/master.cf @@ -62,6 +62,8 @@ scalemail-backend unix - n n - 2 pipe mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user} +dovecot unix - n n - - pipe + flags=DRhu user=docker:docker argv=/usr/lib/dovecot/deliver -f ${sender} -a ${recipient} -d ${user}@${nexthop} # diff --git a/test/email-templates/existing-alias-recipient-delimiter.txt b/test/email-templates/existing-alias-recipient-delimiter.txt new file mode 100644 index 00000000..9fd2953f --- /dev/null +++ b/test/email-templates/existing-alias-recipient-delimiter.txt @@ -0,0 +1,12 @@ +HELO mail.external.tld +MAIL FROM: user@external.tld +RCPT TO: alias1+test@localhost.localdomain +DATA +From: Docker Mail Server +To: Existing Local Alias +Date: Sat, 22 May 2010 07:43:25 -0400 +Subject: Test Message +This is a test mail. + +. +QUIT \ No newline at end of file diff --git a/test/tests.bats b/test/tests.bats index 1cd3538d..725a6dd7 100644 --- a/test/tests.bats +++ b/test/tests.bats @@ -272,6 +272,12 @@ load 'test_helper/bats-assert/load' assert_output 1 } +@test "checking smtp: delivers mail to existing alias with recipient delimiter" { + run docker exec mail /bin/sh -c "grep 'to=, orig_to=' /var/log/mail/mail.log | grep 'status=sent' | wc -l" + assert_success + assert_output 1 +} + @test "checking smtp: delivers mail to existing catchall" { run docker exec mail /bin/sh -c "grep 'to=, orig_to=' /var/log/mail/mail.log | grep 'status=sent' | wc -l" assert_success From 99c721fb9111ac8cba89f697ed1543ce644179a2 Mon Sep 17 00:00:00 2001 From: Niklas Wolber Date: Mon, 13 Feb 2017 20:33:03 +0100 Subject: [PATCH 4/5] Adapt existing tests to #442 --- test/tests.bats | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/tests.bats b/test/tests.bats index 725a6dd7..bc4ba012 100644 --- a/test/tests.bats +++ b/test/tests.bats @@ -261,9 +261,9 @@ load 'test_helper/bats-assert/load' } @test "checking smtp: delivers mail to existing account" { - run docker exec mail /bin/sh -c "grep 'postfix/lmtp' /var/log/mail/mail.log | grep 'status=sent' | grep ' Saved)' | wc -l" + run docker exec mail /bin/sh -c "grep 'postfix/pipe' /var/log/mail/mail.log | grep 'status=sent (delivered via dovecot service)' | wc -l" assert_success - assert_output 6 + assert_output 7 } @test "checking smtp: delivers mail to existing alias" { @@ -293,7 +293,7 @@ load 'test_helper/bats-assert/load' @test "checking smtp: user1 should have received 5 mails" { run docker exec mail /bin/sh -c "ls -A /var/mail/localhost.localdomain/user1/new | wc -l" assert_success - assert_output 5 + assert_output 6 } @test "checking smtp: rejects mail to unknown user" { From 9c2bfe0900af89255e417feb7de3285451bcff3d Mon Sep 17 00:00:00 2001 From: Niklas Wolber Date: Fri, 24 Feb 2017 20:02:22 +0100 Subject: [PATCH 5/5] Test with non-default recipient_delimiter --- test/config/postfix-main.cf | 3 ++- test/email-templates/existing-alias-recipient-delimiter.txt | 4 ++-- test/tests.bats | 5 ++++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/test/config/postfix-main.cf b/test/config/postfix-main.cf index 37155392..b582fed0 100644 --- a/test/config/postfix-main.cf +++ b/test/config/postfix-main.cf @@ -1,2 +1,3 @@ +recipient_delimiter = - max_idle = 600s -readme_directory = /tmp +readme_directory = /tmp \ No newline at end of file diff --git a/test/email-templates/existing-alias-recipient-delimiter.txt b/test/email-templates/existing-alias-recipient-delimiter.txt index 9fd2953f..fd2e96d4 100644 --- a/test/email-templates/existing-alias-recipient-delimiter.txt +++ b/test/email-templates/existing-alias-recipient-delimiter.txt @@ -1,9 +1,9 @@ HELO mail.external.tld MAIL FROM: user@external.tld -RCPT TO: alias1+test@localhost.localdomain +RCPT TO: alias1-test@localhost.localdomain DATA From: Docker Mail Server -To: Existing Local Alias +To: Existing Local Alias Date: Sat, 22 May 2010 07:43:25 -0400 Subject: Test Message This is a test mail. diff --git a/test/tests.bats b/test/tests.bats index bc4ba012..737b9d08 100644 --- a/test/tests.bats +++ b/test/tests.bats @@ -273,9 +273,12 @@ load 'test_helper/bats-assert/load' } @test "checking smtp: delivers mail to existing alias with recipient delimiter" { - run docker exec mail /bin/sh -c "grep 'to=, orig_to=' /var/log/mail/mail.log | grep 'status=sent' | wc -l" + run docker exec mail /bin/sh -c "grep 'to=, orig_to=' /var/log/mail/mail.log | grep 'status=sent' | wc -l" assert_success assert_output 1 + + run docker exec mail /bin/sh -c "grep 'to=' /var/log/mail/mail.log | grep 'status=bounced'" + assert_failure } @test "checking smtp: delivers mail to existing catchall" {