#!/bin/bash set -e # environment variables MAIL_DOMAIN="${MAIL_DOMAIN:-example.com}" MAIL_HOSTNAME="${MAIL_HOSTNAME:-mail.example.com}" DKIM_SELECTOR="${DKIM_SELECTOR:-mail}" echo "Setting up postfix for domain: ${MAIL_DOMAIN}" echo "Hostname: ${MAIL_HOSTNAME}" # configure postfix domain postconf -e "myhostname=${MAIL_HOSTNAME}" postconf -e "mydomain=${MAIL_DOMAIN}" postconf -e "myorigin=\$mydomain" postconf -e "mydestination=\$myhostname, localhost.\$mydomain, localhost" # create OpenDKIM key folder for domain DKIM_KEY_DIR="/etc/opendkim/keys/${MAIL_DOMAIN}" mkdir -p "${DKIM_KEY_DIR}" # generate DKIM keys if they don't exist if [ ! -f "${DKIM_KEY_DIR}/${DKIM_SELECTOR}.private" ]; then echo "Generating DKIM keys for ${MAIL_DOMAIN}..." opendkim-genkey -b 2048 -d "${MAIL_DOMAIN}" -D "${DKIM_KEY_DIR}" -s "${DKIM_SELECTOR}" -v chown -R opendkim:opendkim "${DKIM_KEY_DIR}" chmod 600 "${DKIM_KEY_DIR}/${DKIM_SELECTOR}.private" echo "" echo "============================================" echo "DKIM PUBLIC KEY - ADD THIS TO YOUR DNS:" echo "============================================" echo "Record Type: TXT" echo "Name: ${DKIM_SELECTOR}._domainkey.${MAIL_DOMAIN}" echo "" cat "${DKIM_KEY_DIR}/${DKIM_SELECTOR}.txt" echo "" echo "============================================" echo "" else echo "Using existing DKIM keys" fi # configure OpenDKIM KeyTable cat > /etc/opendkim/KeyTable << EOF ${DKIM_SELECTOR}._domainkey.${MAIL_DOMAIN} ${MAIL_DOMAIN}:${DKIM_SELECTOR}:${DKIM_KEY_DIR}/${DKIM_SELECTOR}.private EOF # configure OpenDKIM SigningTable cat > /etc/opendkim/SigningTable << EOF *@${MAIL_DOMAIN} ${DKIM_SELECTOR}._domainkey.${MAIL_DOMAIN} EOF # configure OpenDKIM TrustedHosts cat > /etc/opendkim/TrustedHosts << EOF 127.0.0.1 localhost ${MAIL_DOMAIN} *.${MAIL_DOMAIN} 172.16.0.0/12 192.168.0.0/16 10.0.0.0/8 EOF # set permissions chown -R opendkim:opendkim /etc/opendkim chmod 600 /etc/opendkim/KeyTable chmod 600 /etc/opendkim/SigningTable # create postfix spool folders mkdir -p /var/spool/postfix/pid chown root:root /var/spool/postfix chown root:root /var/spool/postfix/pid # start OpenDKIM in background echo "Starting OpenDKIM..." opendkim -f & # wait for OpenDKIM to start sleep 2 # copy DNS config to postfix chroot mkdir -p /var/spool/postfix/etc cp /etc/resolv.conf /var/spool/postfix/etc/ cp /etc/services /var/spool/postfix/etc/ cp /etc/hosts /var/spool/postfix/etc/ # start postfix in foreground echo "Starting Postfix..." postfix start-fg