#! /bin/bash # shellcheck source=../scripts/helpers/index.sh source /usr/local/bin/helpers/index.sh DATABASE='/tmp/docker-mailserver/postfix-virtual.cf' function __usage { printf '%s' "${PURPLE}ADDALIAS${RED}(${YELLOW}8${RED}) ${ORANGE}NAME${RESET} addalias - add an email alias for an existing user ${ORANGE}SYNOPSIS${RESET} ./setup.sh alias add ${ORANGE}OPTIONS${RESET} ${BLUE}Generic Program Information${RESET} help Print the usage information. ${ORANGE}EXAMPLES${RESET} ${LWHITE}./setup.sh alias add alias-for-me@domain.tld admin@domain.tld${RESET} Add the alias alias-for-me@doamin.tld for the existing user admin@domain.tld. ${ORANGE}EXIT STATUS${RESET} Exit status is 0 if command was successful. If wrong arguments are provided or arguments contain errors, the script will exit early with exit status 1. " } [[ ${1:-} == 'help' ]] && { __usage ; exit 0 ; } EMAIL="${1}" RECIPIENT="${2}" [[ -z ${EMAIL} ]] && { __usage ; _exit_with_error 'No alias specified' ; } [[ -z ${RECIPIENT} ]] && { __usage ; _exit_with_error 'No recipient specified' ; } grep \ -qi "^$(_escape "${EMAIL}")[a-zA-Z@.\ ]*$(_escape "${RECIPIENT}")" \ "${DATABASE}" 2>/dev/null && _exit_with_error "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