#!/bin/bash set -euo pipefail DOMAIN="$1" if [[ -z "$DOMAIN" ]]; then echo "Usage: $0 " exit 1 fi echo "==============================================" echo " ADDING MAIL DOMAIN: $DOMAIN" echo "==============================================" echo "" MAILSERVER_CONTAINER="mailserver" # # STEP 1: create dummy mailbox — required to register domain internally # echo "[1/3] Creating domain presence via dummy account ..." docker exec "$MAILSERVER_CONTAINER" setup email add "dms-domain-init@$DOMAIN" "Init12345" >/dev/null 2>&1 || true # # STEP 2: generate DKIM key # echo "[2/3] Generating DKIM key ..." docker exec "$MAILSERVER_CONTAINER" setup config dkim keysize 2048 domain "$DOMAIN" # # STEP 3: extract DKIM public key (to show user DNS record) # echo "[3/3] Extracting DKIM public key ..." PUBKEY=$(docker exec "$MAILSERVER_CONTAINER" sh -c \ "cat /tmp/docker-mailserver/opendkim/keys/$DOMAIN/mail.txt" 2>/dev/null) if [[ -z "$PUBKEY" ]]; then echo "ERROR: Could not read DKIM key!" exit 1 fi echo "" echo "==============================================" echo " DNS RECORDS TO ADD FOR: $DOMAIN" echo "==============================================" echo "" echo "1) MX record:" echo " $DOMAIN. 50 mail.knusperkerne.de." echo "" echo "2) SPF record:" echo " $DOMAIN. TXT \"v=spf1 mx a:mailsystem.knusperkerne.de ip4:89.58.2.51 -all\"" echo "" echo "3) DKIM record (selector: mail):" echo "" echo "$PUBKEY" echo "" echo "4) DMARC record:" echo " _dmarc.$DOMAIN. TXT \"v=DMARC1; p=quarantine; rua=mailto:postmaster@$DOMAIN\"" echo "" echo "==============================================" echo " Domain setup completed." echo "==============================================" echo ""