diff --git a/target/bin/addalias b/target/bin/addalias new file mode 100755 index 00000000..7956cff6 --- /dev/null +++ b/target/bin/addalias @@ -0,0 +1,30 @@ +#! /bin/bash + +DATABASE=${DATABASE:-/tmp/docker-mailserver/postfix-virtual.cf} + +EMAIL="$1" +RECIPIENT="$2" + +usage() { + echo "Usage: addalias " +} + +errex() { + echo "$@" 1>&2 + exit 1 +} + +escape() { + echo "${1//./\\.}" +} + +[ -z "$EMAIL" ] && { usage; errex "no email specified"; } + +grep -qi "^$(escape $EMAIL)[a-zA-Z@.\ ]*$(escape $RECIPIENT)" $DATABASE 2>/dev/null && + errex "Alias \"$EMAIL $RECIPIENT\" already exists" + +if grep -qi "^$(escape $EMAIL)" $DATABASE 2>/dev/null; then + sed -i '' "/$EMAIL/s/$/ $RECIPIENT/" $DATABASE + else + echo "$EMAIL $RECIPIENT" >> $DATABASE +fi diff --git a/target/bin/delalias b/target/bin/delalias new file mode 100755 index 00000000..947943aa --- /dev/null +++ b/target/bin/delalias @@ -0,0 +1,30 @@ +#! /bin/bash + +DATABASE=${DATABASE:-/tmp/docker-mailserver/postfix-virtual.cf} + +EMAIL="$1" +RECIPIENT="$2" + +usage() { + echo "Usage: delalias " +} + +errex() { + echo "$@" 1>&2 + exit 1 +} + +escape() { + echo "${1//./\\.}" +} + +[ -z "$EMAIL" ] || [ -z "$RECIPIENT" ] && { usage; errex "No email specifed"; } +[ -s "$DATABASE" ] || exit 0 + +CNT=$(grep "^$EMAIL" $DATABASE | wc -w | awk '{print $1}') + +if [[ $CNT -eq 2 ]]; then + sed -i '' "/^$EMAIL/d" $DATABASE + else + sed -i '' "/^$EMAIL/s/ $RECIPIENT//g" $DATABASE +fi diff --git a/target/bin/listalias b/target/bin/listalias new file mode 100755 index 00000000..4db49e85 --- /dev/null +++ b/target/bin/listalias @@ -0,0 +1,13 @@ +#! /bin/bash + +DATABASE=${DATABASE:-/tmp/docker-mailserver/postfix-virtual.cf} + +errex() { + echo "$@" 1>&2 + exit 1 +} + +[ -f $DATABASE ] || errex "No postfix-virtual.cf file" +[ -s $DATABASE ] || errex "Empty postfix-virtual.cf - no aliases have been added" + +cat $DATABASE