#!/bin/sh set -e # @NOTE: Directories in /var/mail/vhosts/* need to be owned by the UID/GID defined in custom/41-virtual.cf DEFAULTS=/defaults POSTFIX=/etc/postfix CUSTOM=${POSTFIX}/custom INCLUDE_DIR=${POSTFIX}/include NAME="SMTP" function stop { echo "Stopping ${NAME}" postfix stop kill $(cat /run/saslauthd/saslauthd.pid) kill $(cat /run/opendkim/opendkim.pid) } trap 'stop' SIGTERM if [ -z "$@" ]; then if [ -z `hostname -d` ]; then echo "You must start this container with --hostname= specifying a domain name" exit 1 fi # Start some supporting daemons /usr/sbin/saslauthd -m /run/saslauthd -ca shadow /usr/sbin/opendkim -u opendkim -P /run/opendkim/opendkim.pid # Setup our postfix environment if [ -d ${INCLUDE_DIR} ]; then if ls -1 ${INCLUDE_DIR}/*.cf >/dev/null 2>&1; then echo "* Adding to main.cf" echo '##### CUSTOM CONFIGURATION ####' >> ${POSTFIX}/main.cf for i in ${INCLUDE_DIR}/*.cf; do echo "* Adding [${i}] to main.cf" echo "# - ${i}" >> ${POSTFIX}/main.cf cat $i >> ${POSTFIX}/main.cf done echo '##### END CUSTOM CONFIGURATION ####' >> ${POSTFIX}/main.cf fi fi [ ! -f ${CUSTOM}/relay_domains ] && cp ${DEFAULTS}/relay_domains ${CUSTOM}/ postmap -o lmdb:${CUSTOM}/relay_domains [ ! -f ${CUSTOM}/relay_recipient_maps ] && cp ${DEFAULTS}/relay_recipient_maps ${CUSTOM}/ postmap -o lmdb:${CUSTOM}/relay_recipient_maps touch ${CUSTOM}/sasl_passwd postmap -o lmdb:${CUSTOM}/sasl_passwd [ -n "${VIRTUAL_ALIAS_DOMAINS}" ] && sed -i -e "s%#virtual_alias_domains = @VIRTUAL_ALIAS_DOMAINS@%virtual_alias_domains = ${VIRTUAL_ALIAS_DOMAINS}%" ${POSTFIX}/main.cf [ ! -f ${CUSTOM}/virtual_alias_maps ] && cp ${DEFAULTS}/virtual_alias_maps ${CUSTOM}/ postmap -o lmdb:${CUSTOM}/virtual_alias_maps [ -n "${VIRTUAL_DOMAINS}" ] && sed -i -e "s%#virtual_mailbox_domains = @VIRTUAL_DOMAINS@%virtual_mailbox_domains = ${VIRTUAL_DOMAINS}%" ${POSTFIX}/main.cf [ ! -f ${CUSTOM}/virtual_mailbox_maps ] && cp ${DEFAULTS}/virtual_mailbox_maps ${CUSTOM}/ postmap -o lmdb:${CUSTOM}/virtual_mailbox_maps # Create some default LDAP templates if [ -n "${LDAP_SEARCH_BASE}" ]; then sed -i -e "s%^# ldap:% ldap:%" ${POSTFIX}/main.cf if [ ! -f ${CUSTOM}/ldap_virtual_alias_maps ]; then cp ${DEFAULTS}/ldap_virtual_alias_maps ${CUSTOM}/ sed -i -e "s%@THIS_HOST@%${HOSTNAME}%" -e "s%@LDAP_SEARCH_BASE@%${LDAP_SEARCH_BASE}%" ${CUSTOM}/ldap_virtual_alias_maps fi if [ ! -f ${CUSTOM}/ldap_virtual_mailbox_maps ]; then cp ${DEFAULTS}/ldap_virtual_mailbox_maps ${CUSTOM}/ sed -i -e "s%@THIS_HOST@%${HOSTNAME}%" -e "s%@LDAP_SEARCH_BASE@%${LDAP_SEARCH_BASE}%" ${CUSTOM}/ldap_virtual_mailbox_maps fi if [ ! -f ${CUSTOM}/ldap_relay_domains ]; then cp ${DEFAULTS}/ldap_relay_domains ${CUSTOM}/ sed -i -e "s%@THIS_HOST@%${HOSTNAME}%" -e "s%@LDAP_SEARCH_BASE@%${LDAP_SEARCH_BASE}%" ${CUSTOM}/ldap_relay_domains fi if [ ! -f ${CUSTOM}/ldap_relay_recipient_maps ]; then cp ${DEFAULTS}/ldap_relay_recipient_maps ${CUSTOM}/ sed -i -e "s%@THIS_HOST@%${HOSTNAME}%" -e "s%@LDAP_SEARCH_BASE@%${LDAP_SEARCH_BASE}%" ${CUSTOM}/ldap_relay_recipient_maps fi fi newaliases postfix start # Sleep,enabling our SIGTERM to shut us down gracefully (while true; do sleep 3600; done) & wait else exec $@ fi