#!/usr/bin/env bash # Exit if any errors pop up set -e # Array of available domains domains=(${MYVEMAIL_DOMAIN}) domains+=(${MYVEMAIL_ADDMX//,/ }) # Check if postfixadmin db has been installed if [ ! -d /var/lib/mysql/${MYVEMAIL_POSTFIXADMIN_DBNAME}/ ] then echo "Run setup script before proceeding" exit 1 fi # Check if mariadb is active if ! ps aux | grep -q mariadb then mariadbd --user=root --datadir=/var/lib/mysql/ & until mariadb --user=root --database=mysql -e "show tables;" >/dev/null do sleep 1 done fi # Proceed only if postfixadmin db is installed if mariadb --user=root --database=${MYVEMAIL_POSTFIXADMIN_DBNAME} -e "select * from domain;" | grep -q ${MYVEMAIL_DOMAIN} then # Mail account domain echo -e "\e[1;34mChoose an available domain from the following: ${domains[@]}\e[0m" until [ ${MYVEMAIL_ADDUSER_DOMAIN} ] && [[ ${domains[@]} =~ ${MYVEMAIL_ADDUSER_DOMAIN} ]] do read -r -p 'Domain: ' MYVEMAIL_ADDUSER_DOMAIN if [ -z "${MYVEMAIL_ADDUSER_DOMAIN}" ] then echo -e '\n\e[1;31mField cannot be empty, try again\e[0m' elif ! [[ ${domains[@]} =~ ${MYVEMAIL_ADDUSER_DOMAIN} ]] then echo -e '\n\e[1;31mChoose a valid domain\e[0m' fi done # Mail username if [ -z ${MYVEMAIL_MAIL_USER} ] then echo -e '\n\e[1;34mType in your email username\e[0m' until [ ${MYVEMAIL_MAIL_USER} ] do read -r -p 'Username: ' MYVEMAIL_MAIL_USER [ ${MYVEMAIL_MAIL_USER} ] || echo -e '\n\e[1;31mUsername cannot be empty, try again\e[0m' done echo -e '\n\e[1;32mMail user '${MYVEMAIL_MAIL_USER}'@'${MYVEMAIL_ADDUSER_DOMAIN}' has been saved\e[0m\n' fi # Mail account password echo -e '\e[1;34mCreate a password for your mail account\e[0m' until [ "${MYVEMAIL_MAIL_PASS}" = "${MYVEMAIL_MAIL_PASS2}" -a "${MYVEMAIL_MAIL_PASS}" ] do read -s -r -p 'Mail password: ' MYVEMAIL_MAIL_PASS read -s -r -p $'\nVerify mail password: ' MYVEMAIL_MAIL_PASS2 if [ -z "${MYVEMAIL_MAIL_PASS}" ] then echo -e '\n\n\e[1;31mPassword field cannot be empty, try again\e[0m' elif [ "${MYVEMAIL_MAIL_PASS}" != "${MYVEMAIL_MAIL_PASS2}" ] echo -e '\n\n\e[1;31mPasswords did not match, try again\e[0m' then fi done echo -e '\n\n\e[1;32mMail password has been saved\e[0m\n' # Catch-all alias until [[ ${MYVEMAIL_USER_CATCHALL} = [yYnN] ]] do echo -n -e '\e[1;34mWill the user use a catch-all alias?\e[0m ' read -n 1 -r MYVEMAIL_USER_CATCHALL echo echo if ! [[ ${MYVEMAIL_USER_CATCHALL} = [yYnN] ]] then echo -e '\e[1;31mNot a valid answer, type "y" or "n"\e[0m' fi done # Create Postfixadmin mail users bash /usr/share/webapps/postfixadmin/scripts/postfixadmin-cli mailbox add "${MYVEMAIL_MAIL_USER}@${MYVEMAIL_ADDUSER_DOMAIN}" --active --password "${MYVEMAIL_MAIL_PASS}" --password2 "${MYVEMAIL_MAIL_PASS}" -q # Create Postfixadmin mail catch-all alias if [[ ${MYVEMAIL_USER_CATCHALL} = [yY] ]] then bash /usr/share/webapps/postfixadmin/scripts/postfixadmin-cli alias add "*@${MYVEMAIL_ADDUSER_DOMAIN}" --goto "${MYVEMAIL_MAIL_USER}@${MYVEMAIL_ADDUSER_DOMAIN}" --active -q fi else echo "Postfixadmin database does not seem to be installed" echo "Run setup script before proceeding" exit 1 fi