mirror of
https://github.com/docker-mailserver/docker-mailserver.git
synced 2024-01-19 02:48:50 +00:00
Testing with real emails
This commit is contained in:
parent
cc1715cb51
commit
03b8614cab
15
Makefile
15
Makefile
|
@ -11,8 +11,8 @@ run:
|
||||||
cp test/accounts.cf postfix/
|
cp test/accounts.cf postfix/
|
||||||
cp test/virtual postfix/
|
cp test/virtual postfix/
|
||||||
# Run container
|
# 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)
|
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 15
|
sleep 10
|
||||||
|
|
||||||
prepare:
|
prepare:
|
||||||
# Reinitialize logs
|
# Reinitialize logs
|
||||||
|
@ -20,11 +20,12 @@ prepare:
|
||||||
|
|
||||||
fixtures:
|
fixtures:
|
||||||
# Sending test mails
|
# Sending test mails
|
||||||
docker exec mail /bin/sh -c 'echo "This is a test mail" | mail -s "TEST-001" user@localhost.localdomain'
|
for file in test/email-templates/*.txt ; do \
|
||||||
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 "nc 0.0.0.0 25 < /tmp/$$file" ; \
|
||||||
docker exec mail /bin/sh -c 'echo "This is a test mail" | mail -s "TEST-003" alias1@localhost.localdomain'
|
done
|
||||||
docker exec mail /bin/sh -c 'echo "This is a test mail" | mail -s "TEST-004" alias2@localhost.localdomain'
|
# Wait for mails to be analyzed
|
||||||
|
sleep 10
|
||||||
|
|
||||||
tests:
|
tests:
|
||||||
# Start tests
|
# Start tests
|
||||||
./test/test.sh
|
/bin/bash ./test/test.sh
|
||||||
|
|
14
test/email-templates/amavis-spam.txt
Normal file
14
test/email-templates/amavis-spam.txt
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
HELO mail.external.tld
|
||||||
|
MAIL FROM: spam@external.tld
|
||||||
|
RCPT TO: user1@localhost.localdomain
|
||||||
|
DATA
|
||||||
|
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
|
||||||
|
This is a test mail.
|
||||||
|
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
|
||||||
|
|
||||||
|
.
|
||||||
|
QUIT
|
||||||
|
|
33
test/email-templates/amavis-virus.txt
Normal file
33
test/email-templates/amavis-virus.txt
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
HELO mail.external.tld
|
||||||
|
MAIL FROM: virus@external.tld
|
||||||
|
RCPT TO: user1@localhost.localdomain
|
||||||
|
DATA
|
||||||
|
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
|
||||||
|
|
||||||
|
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
|
||||||
|
|
12
test/email-templates/existing-alias-external.txt
Normal file
12
test/email-templates/existing-alias-external.txt
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
HELO mail.external.tld
|
||||||
|
MAIL FROM: user@external.tld
|
||||||
|
RCPT TO: alias1@localhost.localdomain
|
||||||
|
DATA
|
||||||
|
From: Docker Mail Server <dockermailserver@external.tld>
|
||||||
|
To: Existing Local User <alias1@localhost.localdomain>
|
||||||
|
Date: Sat, 22 May 2010 07:43:25 -0400
|
||||||
|
Subject: Test Message
|
||||||
|
This is a test mail.
|
||||||
|
|
||||||
|
.
|
||||||
|
QUIT
|
12
test/email-templates/existing-alias-local.txt
Normal file
12
test/email-templates/existing-alias-local.txt
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
HELO mail.external.tld
|
||||||
|
MAIL FROM: user@external.tld
|
||||||
|
RCPT TO: alias2@localhost.localdomain
|
||||||
|
DATA
|
||||||
|
From: Docker Mail Server <dockermailserver@external.tld>
|
||||||
|
To: Existing Local User <alias2@localhost.localdomain>
|
||||||
|
Date: Sat, 22 May 2010 07:43:25 -0400
|
||||||
|
Subject: Test Message
|
||||||
|
This is a test mail.
|
||||||
|
|
||||||
|
.
|
||||||
|
QUIT
|
12
test/email-templates/existing-user.txt
Normal file
12
test/email-templates/existing-user.txt
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
HELO mail.external.tld
|
||||||
|
MAIL FROM: user@external.tld
|
||||||
|
RCPT TO: user1@localhost.localdomain
|
||||||
|
DATA
|
||||||
|
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
|
||||||
|
This is a test mail.
|
||||||
|
|
||||||
|
.
|
||||||
|
QUIT
|
12
test/email-templates/non-existing-user.txt
Normal file
12
test/email-templates/non-existing-user.txt
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
HELO mail.external.tld
|
||||||
|
MAIL FROM: user@external.tld
|
||||||
|
RCPT TO: nouser@localhost.localdomain
|
||||||
|
DATA
|
||||||
|
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
|
||||||
|
This is a test mail.
|
||||||
|
|
||||||
|
.
|
||||||
|
QUIT
|
37
test/test.sh
Normal file → Executable file
37
test/test.sh
Normal file → Executable file
|
@ -1,29 +1,48 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Set up test framework
|
# 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
|
source assert.sh
|
||||||
|
|
||||||
# Testing that services are running
|
# 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/lib/postfix/master'" 0
|
||||||
assert_raises "docker exec mail ps aux --forest | grep '/usr/sbin/saslauthd'" "true"
|
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'" "true"
|
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'" "true"
|
assert_raises "docker exec mail ps aux --forest | grep '/usr/sbin/amavisd-new'" 0
|
||||||
|
|
||||||
# Testing user creation
|
# 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/localhost.localdomain/user1" "cur\nnew\ntmp"
|
||||||
assert "docker exec mail ls -A /var/mail/otherdomain.tld/user2" "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
|
# 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_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" "1"
|
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 '<nouser@localhost.localdomain>: 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=<user1@localhost.localdomain>, orig_to=<alias1@localhost.localdomain>' /var/log/mail.log | grep 'status=sent'" 0
|
||||||
|
|
||||||
|
# Testing that mail is redirected for external alias
|
||||||
|
assert_raises "docker exec mail grep -- '-> <external1@otherdomain.tld>' /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
|
# Testing presence of freshclam CRON
|
||||||
assert "docker exec mail crontab -l" "0 1 * * * /usr/bin/freshclam --quiet"
|
assert "docker exec mail crontab -l" "0 1 * * * /usr/bin/freshclam --quiet"
|
||||||
|
|
||||||
# Testing that log don't display errors
|
# 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 'non-null host address bits in' /var/log/mail.log" 1
|
||||||
assert_raises "docker exec mail grep ': error:' /var/log/mail.log" "false"
|
assert_raises "docker exec mail grep ': error:' /var/log/mail.log" 1
|
||||||
|
|
||||||
# Ending tests
|
# Ending tests
|
||||||
assert_end
|
assert_end
|
||||||
|
|
Loading…
Reference in a new issue