#! /bin/bash # shellcheck disable=SC2094 # shellcheck source=../scripts/helpers/index.sh source /usr/local/bin/helpers/index.sh DATABASE=/tmp/docker-mailserver/dovecot-masters.cf function __usage { printf '%s' "${PURPLE}ADDDOVECOTMASTERUSER${RED}(${YELLOW}8${RED}) ${ORANGE}NAME${RESET} addmasteruser - add a dovecot master user (for POP3/IMAP administration) ${ORANGE}SYNOPSIS${RESET} ./setup.sh dovecot-master add [] ${ORANGE}OPTIONS${RESET} ${BLUE}Generic Program Information${RESET} help Print the usage information. ${ORANGE}EXAMPLES${RESET} ${LWHITE}./setup.sh dovecot-master add test-user${RESET} Add the dovecot master account 'test-user'. You will be prompted to input a password afterwards since no password was supplied. ${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 ; } USERNAME="${1}" shift PASSWD="${*}" [[ -z ${USERNAME} ]] && { __usage ; _exit_with_error 'No username specified' ; } touch "${DATABASE}" _create_lock # Protect config file with lock to avoid race conditions if grep -qi "^$(_escape "${USERNAME}")|" "${DATABASE}" then _exit_with_error "User '${USERNAME}' already exists" fi if [[ -z ${PASSWD} ]] then read -r -s -p "Enter Password: " PASSWD echo [[ -z ${PASSWD} ]] && _exit_with_error "Password must not be empty" fi HASH="$(doveadm pw -s SHA512-CRYPT -u "${USERNAME}" -p "${PASSWD}")" echo "${USERNAME}|${HASH}" >> "${DATABASE}"