#!/usr/bin/env bash # Abort if an error is encountered set -e # Exit function trap '[ "${?}" -ne 77 ] || exit 77' ERR function die { local reset="\e[0m" local red="\e[0m\e[0;31m" local yellow="\e[0m\e[0;33m" echo -e "${red} Error encountered in the following init script: ${yellow} ${@} ${red} Aborting... ${reset}" exit 77 } # Reset echo | tee /var/log/maillog /etc/postfix/{relaydomains,transportmaps,helo_access,rbl_override} # Postfix echo ${MYVEMAIL_DOMAIN} >/etc/mailname postconf -e "myhostname = ${MYVEMAIL_SUBDOMAIN}.${MYVEMAIL_DOMAIN}" postconf -e "mydestination = \$myhostname, ${MYVEMAIL_SUBDOMAIN}.${MYVEMAIL_DOMAIN}, localhost, localhost.localdomain, localhost" postconf -e "mydomain = ${MYVEMAIL_DOMAIN}" # resolv.conf [ -d /var/spool/postfix/etc/ ] || mkdir /var/spool/postfix/etc/ cp /etc/resolv.conf /var/spool/postfix/etc/resolv.conf # Add primary mail servers to mynetworks if [ ${MYVEMAIL_PRIMARYMX} ] then primarymx+=(${MYVEMAIL_PRIMARYMX//,/ }) postconf -e "$(postconf mynetworks)$(printf ' %s/32' ${primarymx[@]})" fi # Relay setup addmx=(${MYVEMAIL_DOMAIN}) addmx+=(${MYVEMAIL_ADDMX//,/ }) printf '%s OK\n' ${addmx[@]} >/etc/postfix/relaydomains for domain in ${addmx[@]} do echo "${domain} smtp:mail.${domain}:25" | tee -a /etc/postfix/transportmaps >/dev/null echo "${domain} OK" | tee -a /etc/postfix/{helo_access,rbl_override} >/dev/null done # Start postfix postfix start postmap /etc/postfix/relaydomains /etc/postfix/transportmaps /etc/postfix/helo_access /etc/postfix/rbl_override postfix reload # Downtime log install /dev/stdin /usr/local/bin/downtime <<- downtime #!/usr/bin/env bash # Send downtime log to downtime email address echo "From: ${MYVEMAIL_SUBDOMAIN}@${MYVEMAIL_DOMAIN} To: downtime@${MYVEMAIL_DOMAIN} Subject: Monthly downtime log \$(cat /var/log/downtime)" | sendmail downtime@${MYVEMAIL_DOMAIN} # Delete log to start anew echo >/var/log/downtime downtime # Monitor log echo -e "\n\e[1;32mMail service is ready\e[0m\n" tail -f /var/log/maillog