From dab9d59399300ea41623888b0bcbbe3e764cab39 Mon Sep 17 00:00:00 2001 From: Thomas VIAL Date: Mon, 19 Oct 2015 12:06:11 +0200 Subject: [PATCH 01/11] Added tests on error logs --- test/test.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) mode change 100755 => 100644 test/test.sh diff --git a/test/test.sh b/test/test.sh old mode 100755 new mode 100644 index 6cca8dcd..61b621c4 --- a/test/test.sh +++ b/test/test.sh @@ -12,7 +12,7 @@ assert_raises "docker exec mail ps aux --forest | grep '/usr/sbin/amavisd-new'" # Testing user creation assert "docker exec mail ls -A /var/mail/localhost.localdomain/user1" "cur\nnew\ntmp" -assert "docker exec mail ls /var/mail/otherdomain.tld/user2" "cur\nnew\ntmp" +assert "docker exec mail ls -A /var/mail/otherdomain.tld/user2" "cur\nnew\ntmp" # Testing that mail is received for existing user assert_raises "docker exec mail grep 'status=sent (delivered to maildir)' /var/log/mail.log" "false" @@ -21,5 +21,9 @@ assert "docker exec mail ls -A /var/mail/localhost.localdomain/user1/new | wc -l # Testing presence of freshclam CRON assert "docker exec mail crontab -l" "0 1 * * * /usr/bin/freshclam --quiet" +# Testing that log don't display errors +assert_raises "docker exec mail grep 'non-null host address bits in' /var/log/mail.log" "false" +assert_raises "docker exec mail grep ': error:' /var/log/mail.log" "false" + # Ending tests assert_end From 83e44cd9f89639490fcdfb0d7184b664346eaf04 Mon Sep 17 00:00:00 2001 From: Thomas VIAL Date: Mon, 19 Oct 2015 15:41:31 +0200 Subject: [PATCH 02/11] Added netcat --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index ff1c1cb9..f57507cf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ MAINTAINER Thomas VIAL # Packages RUN apt-get update -q --fix-missing RUN apt-get -y upgrade -RUN DEBIAN_FRONTEND=noninteractive apt-get -y install vim postfix sasl2-bin courier-imap courier-imap-ssl courier-authdaemon supervisor gamin amavisd-new spamassassin clamav clamav-daemon libnet-dns-perl libmail-spf-perl pyzor razor arj bzip2 cabextract cpio file gzip nomarch p7zip pax unzip zip zoo rsyslog mailutils +RUN DEBIAN_FRONTEND=noninteractive apt-get -y install vim postfix sasl2-bin courier-imap courier-imap-ssl courier-authdaemon supervisor gamin amavisd-new spamassassin clamav clamav-daemon libnet-dns-perl libmail-spf-perl pyzor razor arj bzip2 cabextract cpio file gzip nomarch p7zip pax unzip zip zoo rsyslog mailutils netcat RUN apt-get autoclean # Configures Saslauthd From 079898cc3a6374503bf016ff2f3df52a1ebc476a Mon Sep 17 00:00:00 2001 From: Thomas VIAL Date: Mon, 19 Oct 2015 15:41:51 +0200 Subject: [PATCH 03/11] Testing with real emails --- Makefile | 15 ++++---- test/email-templates/amavis-spam.txt | 14 +++++++ test/email-templates/amavis-virus.txt | 33 +++++++++++++++++ .../existing-alias-external.txt | 12 ++++++ test/email-templates/existing-alias-local.txt | 12 ++++++ test/email-templates/existing-user.txt | 12 ++++++ test/email-templates/non-existing-user.txt | 12 ++++++ test/test.sh | 37 ++++++++++++++----- 8 files changed, 131 insertions(+), 16 deletions(-) create mode 100644 test/email-templates/amavis-spam.txt create mode 100644 test/email-templates/amavis-virus.txt create mode 100644 test/email-templates/existing-alias-external.txt create mode 100644 test/email-templates/existing-alias-local.txt create mode 100644 test/email-templates/existing-user.txt create mode 100644 test/email-templates/non-existing-user.txt mode change 100644 => 100755 test/test.sh diff --git a/Makefile b/Makefile index c7a0a323..e6a4aaa3 100644 --- a/Makefile +++ b/Makefile @@ -11,8 +11,8 @@ run: cp test/accounts.cf postfix/ cp test/virtual postfix/ # Run container - docker run -d --name mail -v "`pwd`/postfix":/tmp/postfix -v "`pwd`/spamassassin":/tmp/spamassassin -h mail.my-domain.com -t $(NAME):$(VERSION) - sleep 15 + docker run -d --name mail -v "`pwd`/postfix":/tmp/postfix -v "`pwd`/spamassassin":/tmp/spamassassin -v "`pwd`/test":/tmp/test -h mail.my-domain.com -t $(NAME):$(VERSION) + sleep 10 prepare: # Reinitialize logs @@ -20,11 +20,12 @@ prepare: fixtures: # Sending test mails - docker exec mail /bin/sh -c 'echo "This is a test mail" | mail -s "TEST-001" user@localhost.localdomain' - docker exec mail /bin/sh -c 'echo "This is a test mail" | mail -s "TEST-002" nouser@localhost.localdomain' - docker exec mail /bin/sh -c 'echo "This is a test mail" | mail -s "TEST-003" alias1@localhost.localdomain' - docker exec mail /bin/sh -c 'echo "This is a test mail" | mail -s "TEST-004" alias2@localhost.localdomain' + for file in test/email-templates/*.txt ; do \ + docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/$$file" ; \ + done + # Wait for mails to be analyzed + sleep 10 tests: # Start tests - ./test/test.sh + /bin/bash ./test/test.sh diff --git a/test/email-templates/amavis-spam.txt b/test/email-templates/amavis-spam.txt new file mode 100644 index 00000000..15e72b15 --- /dev/null +++ b/test/email-templates/amavis-spam.txt @@ -0,0 +1,14 @@ +HELO mail.external.tld +MAIL FROM: spam@external.tld +RCPT TO: user1@localhost.localdomain +DATA +From: Docker Mail Server +To: Existing Local User +Date: Sat, 22 May 2010 07:43:25 -0400 +Subject: Test Message +This is a test mail. +XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X + +. +QUIT + diff --git a/test/email-templates/amavis-virus.txt b/test/email-templates/amavis-virus.txt new file mode 100644 index 00000000..faa7d898 --- /dev/null +++ b/test/email-templates/amavis-virus.txt @@ -0,0 +1,33 @@ +HELO mail.external.tld +MAIL FROM: virus@external.tld +RCPT TO: user1@localhost.localdomain +DATA +From: Docker Mail Server +To: Existing Local User +Date: Sat, 22 May 2010 07:43:25 -0400 +Subject: Test Message + +Content-type: multipart/mixed; boundary="emailboundary" +MIME-version: 1.0 + +This is a multi-part message in MIME format. +--emailboundary +Content-type: text/plain + +This is the body of the message. + +--emailboundary +Content-type: application/octet-stream +Content-transfer-encoding: base64 + +UEsDBAoAAAAAAOCYuCg8z1FoRAAAAEQAAAAJAAAAZWljYXIuY29tWDVPIVAlQEFQ +WzRcUFpYNTQoUF4pN0NDKTd9JEVJQ0FSLVNUQU5EQVJELUFOVElWSVJVUy1URVNU +LUZJTEUhJEgrSCpQSwECFAAKAAAAAADgmLgoPM9RaEQAAABEAAAACQAAAAAAAAAB +ACAA/4EAAAAAZWljYXIuY29tUEsFBgAAAAABAAEANwAAAGsAAAAAAA== + + +--emailboundary-- + +. +QUIT + diff --git a/test/email-templates/existing-alias-external.txt b/test/email-templates/existing-alias-external.txt new file mode 100644 index 00000000..4ca818da --- /dev/null +++ b/test/email-templates/existing-alias-external.txt @@ -0,0 +1,12 @@ +HELO mail.external.tld +MAIL FROM: user@external.tld +RCPT TO: alias1@localhost.localdomain +DATA +From: Docker Mail Server +To: Existing Local User +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/email-templates/existing-alias-local.txt b/test/email-templates/existing-alias-local.txt new file mode 100644 index 00000000..97321ebe --- /dev/null +++ b/test/email-templates/existing-alias-local.txt @@ -0,0 +1,12 @@ +HELO mail.external.tld +MAIL FROM: user@external.tld +RCPT TO: alias2@localhost.localdomain +DATA +From: Docker Mail Server +To: Existing Local User +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/email-templates/existing-user.txt b/test/email-templates/existing-user.txt new file mode 100644 index 00000000..5a0302f3 --- /dev/null +++ b/test/email-templates/existing-user.txt @@ -0,0 +1,12 @@ +HELO mail.external.tld +MAIL FROM: user@external.tld +RCPT TO: user1@localhost.localdomain +DATA +From: Docker Mail Server +To: Existing Local User +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/email-templates/non-existing-user.txt b/test/email-templates/non-existing-user.txt new file mode 100644 index 00000000..b734d282 --- /dev/null +++ b/test/email-templates/non-existing-user.txt @@ -0,0 +1,12 @@ +HELO mail.external.tld +MAIL FROM: user@external.tld +RCPT TO: nouser@localhost.localdomain +DATA +From: Docker Mail Server +To: Existing Local User +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/test.sh b/test/test.sh old mode 100644 new mode 100755 index 61b621c4..f823316b --- a/test/test.sh +++ b/test/test.sh @@ -1,29 +1,48 @@ #!/bin/bash # Set up test framework -wget -q https://raw.github.com/lehmannro/assert.sh/master/assert.sh +wget -q https://raw.github.com/lehmannro/assert.sh/master/assert.sh -O assert.sh source assert.sh # Testing that services are running -assert_raises "docker exec mail ps aux --forest | grep '/usr/lib/postfix/master'" "true" -assert_raises "docker exec mail ps aux --forest | grep '/usr/sbin/saslauthd'" "true" -assert_raises "docker exec mail ps aux --forest | grep '/usr/sbin/clamd'" "true" -assert_raises "docker exec mail ps aux --forest | grep '/usr/sbin/amavisd-new'" "true" +assert_raises "docker exec mail ps aux --forest | grep '/usr/lib/postfix/master'" 0 +assert_raises "docker exec mail ps aux --forest | grep '/usr/sbin/saslauthd'" 0 +assert_raises "docker exec mail ps aux --forest | grep '/usr/sbin/clamd'" 0 +assert_raises "docker exec mail ps aux --forest | grep '/usr/sbin/amavisd-new'" 0 # Testing user creation +assert "docker exec mail sasldblistusers2" "user1@localhost.localdomain: userPassword\nuser2@otherdomain.tld: userPassword" assert "docker exec mail ls -A /var/mail/localhost.localdomain/user1" "cur\nnew\ntmp" assert "docker exec mail ls -A /var/mail/otherdomain.tld/user2" "cur\nnew\ntmp" +# Testing `vhost` creation +assert "docker exec mail cat /etc/postfix/vhost" "localhost.localdomain\notherdomain.tld" + # Testing that mail is received for existing user -assert_raises "docker exec mail grep 'status=sent (delivered to maildir)' /var/log/mail.log" "false" -assert "docker exec mail ls -A /var/mail/localhost.localdomain/user1/new | wc -l" "1" +assert_raises "docker exec mail grep 'status=sent (delivered to maildir)' /var/log/mail.log" 0 +assert "docker exec mail ls -A /var/mail/localhost.localdomain/user1/new | wc -l | sed -e 's/^[ \t]*//'" "2" + +# Testing that mail is rejected for non existing user +assert_raises "docker exec mail grep ': Recipient address rejected: User unknown in virtual mailbox table' /var/log/mail.log" 0 + +# Testing that mail is received for existing alias +assert_raises "docker exec mail grep 'to=, orig_to=' /var/log/mail.log | grep 'status=sent'" 0 + +# Testing that mail is redirected for external alias +assert_raises "docker exec mail grep -- '-> ' /var/log/mail.log" 0 + +# Testing that a SPAM is rejected +assert_raises "docker exec mail grep 'Blocked SPAM' /var/log/mail.log | grep spam@external.tld" + +# TODO: Testing that a Virus is rejected +assert_raises "docker exec mail grep 'Blocked INFECTED' /var/log/mail.log | grep virus@external.tld" # Testing presence of freshclam CRON assert "docker exec mail crontab -l" "0 1 * * * /usr/bin/freshclam --quiet" # Testing that log don't display errors -assert_raises "docker exec mail grep 'non-null host address bits in' /var/log/mail.log" "false" -assert_raises "docker exec mail grep ': error:' /var/log/mail.log" "false" +assert_raises "docker exec mail grep 'non-null host address bits in' /var/log/mail.log" 1 +assert_raises "docker exec mail grep ': error:' /var/log/mail.log" 1 # Ending tests assert_end From 74452917fb90fd4a257ebb701f20b3ad6e713f97 Mon Sep 17 00:00:00 2001 From: Thomas VIAL Date: Mon, 19 Oct 2015 12:06:11 +0200 Subject: [PATCH 04/11] Added tests on error logs --- test/test.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) mode change 100755 => 100644 test/test.sh diff --git a/test/test.sh b/test/test.sh old mode 100755 new mode 100644 index 6cca8dcd..61b621c4 --- a/test/test.sh +++ b/test/test.sh @@ -12,7 +12,7 @@ assert_raises "docker exec mail ps aux --forest | grep '/usr/sbin/amavisd-new'" # Testing user creation assert "docker exec mail ls -A /var/mail/localhost.localdomain/user1" "cur\nnew\ntmp" -assert "docker exec mail ls /var/mail/otherdomain.tld/user2" "cur\nnew\ntmp" +assert "docker exec mail ls -A /var/mail/otherdomain.tld/user2" "cur\nnew\ntmp" # Testing that mail is received for existing user assert_raises "docker exec mail grep 'status=sent (delivered to maildir)' /var/log/mail.log" "false" @@ -21,5 +21,9 @@ assert "docker exec mail ls -A /var/mail/localhost.localdomain/user1/new | wc -l # Testing presence of freshclam CRON assert "docker exec mail crontab -l" "0 1 * * * /usr/bin/freshclam --quiet" +# Testing that log don't display errors +assert_raises "docker exec mail grep 'non-null host address bits in' /var/log/mail.log" "false" +assert_raises "docker exec mail grep ': error:' /var/log/mail.log" "false" + # Ending tests assert_end From cc1715cb51056eebc0fbd4a79c4848ce29b18a8a Mon Sep 17 00:00:00 2001 From: Thomas VIAL Date: Mon, 19 Oct 2015 15:41:31 +0200 Subject: [PATCH 05/11] Added netcat --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index ff1c1cb9..f57507cf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ MAINTAINER Thomas VIAL # Packages RUN apt-get update -q --fix-missing RUN apt-get -y upgrade -RUN DEBIAN_FRONTEND=noninteractive apt-get -y install vim postfix sasl2-bin courier-imap courier-imap-ssl courier-authdaemon supervisor gamin amavisd-new spamassassin clamav clamav-daemon libnet-dns-perl libmail-spf-perl pyzor razor arj bzip2 cabextract cpio file gzip nomarch p7zip pax unzip zip zoo rsyslog mailutils +RUN DEBIAN_FRONTEND=noninteractive apt-get -y install vim postfix sasl2-bin courier-imap courier-imap-ssl courier-authdaemon supervisor gamin amavisd-new spamassassin clamav clamav-daemon libnet-dns-perl libmail-spf-perl pyzor razor arj bzip2 cabextract cpio file gzip nomarch p7zip pax unzip zip zoo rsyslog mailutils netcat RUN apt-get autoclean # Configures Saslauthd From 03b8614cab971bb3aae11756123a2f484c937ead Mon Sep 17 00:00:00 2001 From: Thomas VIAL Date: Mon, 19 Oct 2015 15:41:51 +0200 Subject: [PATCH 06/11] Testing with real emails --- Makefile | 15 ++++---- test/email-templates/amavis-spam.txt | 14 +++++++ test/email-templates/amavis-virus.txt | 33 +++++++++++++++++ .../existing-alias-external.txt | 12 ++++++ test/email-templates/existing-alias-local.txt | 12 ++++++ test/email-templates/existing-user.txt | 12 ++++++ test/email-templates/non-existing-user.txt | 12 ++++++ test/test.sh | 37 ++++++++++++++----- 8 files changed, 131 insertions(+), 16 deletions(-) create mode 100644 test/email-templates/amavis-spam.txt create mode 100644 test/email-templates/amavis-virus.txt create mode 100644 test/email-templates/existing-alias-external.txt create mode 100644 test/email-templates/existing-alias-local.txt create mode 100644 test/email-templates/existing-user.txt create mode 100644 test/email-templates/non-existing-user.txt mode change 100644 => 100755 test/test.sh diff --git a/Makefile b/Makefile index c7a0a323..e6a4aaa3 100644 --- a/Makefile +++ b/Makefile @@ -11,8 +11,8 @@ run: cp test/accounts.cf postfix/ cp test/virtual postfix/ # Run container - docker run -d --name mail -v "`pwd`/postfix":/tmp/postfix -v "`pwd`/spamassassin":/tmp/spamassassin -h mail.my-domain.com -t $(NAME):$(VERSION) - sleep 15 + docker run -d --name mail -v "`pwd`/postfix":/tmp/postfix -v "`pwd`/spamassassin":/tmp/spamassassin -v "`pwd`/test":/tmp/test -h mail.my-domain.com -t $(NAME):$(VERSION) + sleep 10 prepare: # Reinitialize logs @@ -20,11 +20,12 @@ prepare: fixtures: # Sending test mails - docker exec mail /bin/sh -c 'echo "This is a test mail" | mail -s "TEST-001" user@localhost.localdomain' - docker exec mail /bin/sh -c 'echo "This is a test mail" | mail -s "TEST-002" nouser@localhost.localdomain' - docker exec mail /bin/sh -c 'echo "This is a test mail" | mail -s "TEST-003" alias1@localhost.localdomain' - docker exec mail /bin/sh -c 'echo "This is a test mail" | mail -s "TEST-004" alias2@localhost.localdomain' + for file in test/email-templates/*.txt ; do \ + docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/$$file" ; \ + done + # Wait for mails to be analyzed + sleep 10 tests: # Start tests - ./test/test.sh + /bin/bash ./test/test.sh diff --git a/test/email-templates/amavis-spam.txt b/test/email-templates/amavis-spam.txt new file mode 100644 index 00000000..15e72b15 --- /dev/null +++ b/test/email-templates/amavis-spam.txt @@ -0,0 +1,14 @@ +HELO mail.external.tld +MAIL FROM: spam@external.tld +RCPT TO: user1@localhost.localdomain +DATA +From: Docker Mail Server +To: Existing Local User +Date: Sat, 22 May 2010 07:43:25 -0400 +Subject: Test Message +This is a test mail. +XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X + +. +QUIT + diff --git a/test/email-templates/amavis-virus.txt b/test/email-templates/amavis-virus.txt new file mode 100644 index 00000000..faa7d898 --- /dev/null +++ b/test/email-templates/amavis-virus.txt @@ -0,0 +1,33 @@ +HELO mail.external.tld +MAIL FROM: virus@external.tld +RCPT TO: user1@localhost.localdomain +DATA +From: Docker Mail Server +To: Existing Local User +Date: Sat, 22 May 2010 07:43:25 -0400 +Subject: Test Message + +Content-type: multipart/mixed; boundary="emailboundary" +MIME-version: 1.0 + +This is a multi-part message in MIME format. +--emailboundary +Content-type: text/plain + +This is the body of the message. + +--emailboundary +Content-type: application/octet-stream +Content-transfer-encoding: base64 + +UEsDBAoAAAAAAOCYuCg8z1FoRAAAAEQAAAAJAAAAZWljYXIuY29tWDVPIVAlQEFQ +WzRcUFpYNTQoUF4pN0NDKTd9JEVJQ0FSLVNUQU5EQVJELUFOVElWSVJVUy1URVNU +LUZJTEUhJEgrSCpQSwECFAAKAAAAAADgmLgoPM9RaEQAAABEAAAACQAAAAAAAAAB +ACAA/4EAAAAAZWljYXIuY29tUEsFBgAAAAABAAEANwAAAGsAAAAAAA== + + +--emailboundary-- + +. +QUIT + diff --git a/test/email-templates/existing-alias-external.txt b/test/email-templates/existing-alias-external.txt new file mode 100644 index 00000000..4ca818da --- /dev/null +++ b/test/email-templates/existing-alias-external.txt @@ -0,0 +1,12 @@ +HELO mail.external.tld +MAIL FROM: user@external.tld +RCPT TO: alias1@localhost.localdomain +DATA +From: Docker Mail Server +To: Existing Local User +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/email-templates/existing-alias-local.txt b/test/email-templates/existing-alias-local.txt new file mode 100644 index 00000000..97321ebe --- /dev/null +++ b/test/email-templates/existing-alias-local.txt @@ -0,0 +1,12 @@ +HELO mail.external.tld +MAIL FROM: user@external.tld +RCPT TO: alias2@localhost.localdomain +DATA +From: Docker Mail Server +To: Existing Local User +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/email-templates/existing-user.txt b/test/email-templates/existing-user.txt new file mode 100644 index 00000000..5a0302f3 --- /dev/null +++ b/test/email-templates/existing-user.txt @@ -0,0 +1,12 @@ +HELO mail.external.tld +MAIL FROM: user@external.tld +RCPT TO: user1@localhost.localdomain +DATA +From: Docker Mail Server +To: Existing Local User +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/email-templates/non-existing-user.txt b/test/email-templates/non-existing-user.txt new file mode 100644 index 00000000..b734d282 --- /dev/null +++ b/test/email-templates/non-existing-user.txt @@ -0,0 +1,12 @@ +HELO mail.external.tld +MAIL FROM: user@external.tld +RCPT TO: nouser@localhost.localdomain +DATA +From: Docker Mail Server +To: Existing Local User +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/test.sh b/test/test.sh old mode 100644 new mode 100755 index 61b621c4..f823316b --- a/test/test.sh +++ b/test/test.sh @@ -1,29 +1,48 @@ #!/bin/bash # Set up test framework -wget -q https://raw.github.com/lehmannro/assert.sh/master/assert.sh +wget -q https://raw.github.com/lehmannro/assert.sh/master/assert.sh -O assert.sh source assert.sh # Testing that services are running -assert_raises "docker exec mail ps aux --forest | grep '/usr/lib/postfix/master'" "true" -assert_raises "docker exec mail ps aux --forest | grep '/usr/sbin/saslauthd'" "true" -assert_raises "docker exec mail ps aux --forest | grep '/usr/sbin/clamd'" "true" -assert_raises "docker exec mail ps aux --forest | grep '/usr/sbin/amavisd-new'" "true" +assert_raises "docker exec mail ps aux --forest | grep '/usr/lib/postfix/master'" 0 +assert_raises "docker exec mail ps aux --forest | grep '/usr/sbin/saslauthd'" 0 +assert_raises "docker exec mail ps aux --forest | grep '/usr/sbin/clamd'" 0 +assert_raises "docker exec mail ps aux --forest | grep '/usr/sbin/amavisd-new'" 0 # Testing user creation +assert "docker exec mail sasldblistusers2" "user1@localhost.localdomain: userPassword\nuser2@otherdomain.tld: userPassword" assert "docker exec mail ls -A /var/mail/localhost.localdomain/user1" "cur\nnew\ntmp" assert "docker exec mail ls -A /var/mail/otherdomain.tld/user2" "cur\nnew\ntmp" +# Testing `vhost` creation +assert "docker exec mail cat /etc/postfix/vhost" "localhost.localdomain\notherdomain.tld" + # Testing that mail is received for existing user -assert_raises "docker exec mail grep 'status=sent (delivered to maildir)' /var/log/mail.log" "false" -assert "docker exec mail ls -A /var/mail/localhost.localdomain/user1/new | wc -l" "1" +assert_raises "docker exec mail grep 'status=sent (delivered to maildir)' /var/log/mail.log" 0 +assert "docker exec mail ls -A /var/mail/localhost.localdomain/user1/new | wc -l | sed -e 's/^[ \t]*//'" "2" + +# Testing that mail is rejected for non existing user +assert_raises "docker exec mail grep ': Recipient address rejected: User unknown in virtual mailbox table' /var/log/mail.log" 0 + +# Testing that mail is received for existing alias +assert_raises "docker exec mail grep 'to=, orig_to=' /var/log/mail.log | grep 'status=sent'" 0 + +# Testing that mail is redirected for external alias +assert_raises "docker exec mail grep -- '-> ' /var/log/mail.log" 0 + +# Testing that a SPAM is rejected +assert_raises "docker exec mail grep 'Blocked SPAM' /var/log/mail.log | grep spam@external.tld" + +# TODO: Testing that a Virus is rejected +assert_raises "docker exec mail grep 'Blocked INFECTED' /var/log/mail.log | grep virus@external.tld" # Testing presence of freshclam CRON assert "docker exec mail crontab -l" "0 1 * * * /usr/bin/freshclam --quiet" # Testing that log don't display errors -assert_raises "docker exec mail grep 'non-null host address bits in' /var/log/mail.log" "false" -assert_raises "docker exec mail grep ': error:' /var/log/mail.log" "false" +assert_raises "docker exec mail grep 'non-null host address bits in' /var/log/mail.log" 1 +assert_raises "docker exec mail grep ': error:' /var/log/mail.log" 1 # Ending tests assert_end From e4b9dffb5db16b93bd4905da518fcf561e755897 Mon Sep 17 00:00:00 2001 From: Thomas VIAL Date: Mon, 19 Oct 2015 17:25:47 +0200 Subject: [PATCH 07/11] Testing oneliner on for loop --- Makefile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Makefile b/Makefile index e6a4aaa3..5cb017c4 100644 --- a/Makefile +++ b/Makefile @@ -20,9 +20,7 @@ prepare: fixtures: # Sending test mails - for file in test/email-templates/*.txt ; do \ - docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/$$file" ; \ - done + for file in test/email-templates/*.txt ; do docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/$$file" ; done # Wait for mails to be analyzed sleep 10 From 0959868233925d5eeb9284aae620dbd669abe098 Mon Sep 17 00:00:00 2001 From: Thomas VIAL Date: Mon, 19 Oct 2015 18:01:23 +0200 Subject: [PATCH 08/11] Removed for loop from Makefile --- Makefile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5cb017c4..137f37fc 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,12 @@ prepare: fixtures: # Sending test mails - for file in test/email-templates/*.txt ; do docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/$$file" ; done + docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/amavis-spam.txt" + docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/amavis-virus.txt" + docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/existing-alias-external.txt" + docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/existing-alias-local.txt" + docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/existing-user.txt" + docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/non-existing-user.txt" # Wait for mails to be analyzed sleep 10 From 3949f546751b00110b617db1d2dcf103611c497c Mon Sep 17 00:00:00 2001 From: Thomas VIAL Date: Mon, 19 Oct 2015 18:29:33 +0200 Subject: [PATCH 09/11] Increased sleep time --- Makefile | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 137f37fc..4cbf3c63 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ run: cp test/virtual postfix/ # Run container docker run -d --name mail -v "`pwd`/postfix":/tmp/postfix -v "`pwd`/spamassassin":/tmp/spamassassin -v "`pwd`/test":/tmp/test -h mail.my-domain.com -t $(NAME):$(VERSION) - sleep 10 + sleep 15 prepare: # Reinitialize logs @@ -20,12 +20,13 @@ prepare: fixtures: # Sending test mails - docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/amavis-spam.txt" - docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/amavis-virus.txt" - docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/existing-alias-external.txt" - docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/existing-alias-local.txt" - docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/existing-user.txt" - docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/non-existing-user.txt" + for file in test/email-templates/*.txt ; do docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/$$file" ; done + # docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/amavis-spam.txt" + # docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/amavis-virus.txt" + # docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/existing-alias-external.txt" + # docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/existing-alias-local.txt" + # docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/existing-user.txt" + # docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/non-existing-user.txt" # Wait for mails to be analyzed sleep 10 From a43dab3e2e7602aab7b0c1b7f9c83f89b21e69e5 Mon Sep 17 00:00:00 2001 From: Thomas VIAL Date: Mon, 19 Oct 2015 18:37:06 +0200 Subject: [PATCH 10/11] Removed comments --- Makefile | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Makefile b/Makefile index 4cbf3c63..0e398c07 100644 --- a/Makefile +++ b/Makefile @@ -21,12 +21,6 @@ prepare: fixtures: # Sending test mails for file in test/email-templates/*.txt ; do docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/$$file" ; done - # docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/amavis-spam.txt" - # docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/amavis-virus.txt" - # docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/existing-alias-external.txt" - # docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/existing-alias-local.txt" - # docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/existing-user.txt" - # docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/non-existing-user.txt" # Wait for mails to be analyzed sleep 10 From 465d5de166519a76bb989db551b76127f46bb866 Mon Sep 17 00:00:00 2001 From: Thomas VIAL Date: Mon, 19 Oct 2015 19:37:49 +0200 Subject: [PATCH 11/11] Testing Travis config with nc commands --- Makefile | 7 ++++++- test/test.sh | 0 2 files changed, 6 insertions(+), 1 deletion(-) mode change 100755 => 100644 test/test.sh diff --git a/Makefile b/Makefile index 0e398c07..e049fd92 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,12 @@ prepare: fixtures: # Sending test mails - for file in test/email-templates/*.txt ; do docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/$$file" ; done + docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/amavis-spam.txt" + docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/amavis-virus.txt" + docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/existing-alias-external.txt" + docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/existing-alias-local.txt" + docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/existing-user.txt" + docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/test/email-templates/non-existing-user.txt" # Wait for mails to be analyzed sleep 10 diff --git a/test/test.sh b/test/test.sh old mode 100755 new mode 100644