Files
newsletter-hackernews/docker/postfix/entrypoint.sh

91 lines
2.5 KiB
Bash

#!/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