diff --git a/Dockerfile b/Dockerfile index e5d6cac5..8d45f4ca 100644 --- a/Dockerfile +++ b/Dockerfile @@ -71,7 +71,7 @@ RUN curl -s https://letsencrypt.org/certs/lets-encrypt-x1-cross-signed.pem > /et curl -s https://letsencrypt.org/certs/lets-encrypt-x2-cross-signed.pem > /etc/ssl/certs/lets-encrypt-x2-cross-signed.pem # Start-mailserver script -ADD target/bin/generate-ssl-certificate target/bin/generate-dkim-config target/start-mailserver.sh /usr/local/bin/ +ADD target/bin/generate-ssl-certificate target/bin/generate-dkim-config target/bin/addmailuser target/bin/delmailuser target/start-mailserver.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/* EXPOSE 25 587 143 993 110 995 4190 diff --git a/target/bin/addmailuser b/target/bin/addmailuser new file mode 100755 index 00000000..c9b1ff78 --- /dev/null +++ b/target/bin/addmailuser @@ -0,0 +1,29 @@ +#!/bin/bash + +DATABASE=/tmp/docker-mailserver/postfix-accounts.cf + +function usage { + echo Usage: addmailuser [password] + exit 1 +} + +if [ ! -z "$1" ]; then + USER=$1 + if [ ! -z "$(grep $USER -i $DATABASE)" ]; then + echo "User already exists" + exit 1 + fi + if [ ! -z "$2" ]; then + PASS=$2 + else + read -s -p "Enter Password: " PASS + if [ -z "$PASS" ]; then + echo "Password can't be empty" + exit 1 + fi + fi + ENTRY=$(echo "$USER|$(doveadm pw -s SHA512-CRYPT -u $USER -p $PASS)") + echo "$ENTRY" >> $DATABASE +else + usage +fi diff --git a/target/bin/delmailuser b/target/bin/delmailuser new file mode 100755 index 00000000..dc471b43 --- /dev/null +++ b/target/bin/delmailuser @@ -0,0 +1,16 @@ +#!/bin/bash + +DATABASE=/tmp/docker-mailserver/postfix-accounts.cf + +function usage { + echo "Usage: delmailuser " + exit 1 +} + +if [ ! -z "$1" ]; then + USER=$1 + ENTRIES=$(grep "$USER" -vi $DATABASE) + echo "$ENTRIES" > $DATABASE +else + usage +fi diff --git a/test/tests.bats b/test/tests.bats index b92de66a..3cf8bde1 100644 --- a/test/tests.bats +++ b/test/tests.bats @@ -466,3 +466,23 @@ run docker exec mail_pop3 /bin/bash -c "nc -z 0.0.0.0 4190" [ "$status" -ne 0 ] } + +# +# accounts +# + +@test "checking accounts: user3 should have been added to /tmp/docker-mailserver/postfix-accounts.cf" { + docker exec mail /bin/sh -c "addmailuser user3@domain.tld mypassword" + + run docker exec mail /bin/sh -c "grep user3@domain.tld -i /tmp/docker-mailserver/postfix-accounts.cf" + [ "$status" -eq 0 ] + [ ! -z "$output" ] +} + +@test "checking accounts: user3 should have been removed from /tmp/docker-mailserver/postfix-accounts.cf" { + docker exec mail /bin/sh -c "delmailuser user3@domain.tld" + + run docker exec mail /bin/sh -c "grep user3@domain.tld -i /tmp/docker-mailserver/postfix-accounts.cf" + [ "$status" -eq 1 ] + [ -z "$output" ] +}