#!/usr/bin/env bash set -Eeuo pipefail # Prosess 2: # Importerer alle private DKIM-nøkler fra private/dkim/ til Mailu. # # Leser: # private/dkim/..private.pem # # Skriver: # private/mailu-dkim-import.yml # # Dette scriptet er trygt å publisere. # Importfilen og private nøkler ligger under private/, som skal være i .gitignore. selector="${DKIM_SELECTOR:-mail}" import_file="private/mailu-dkim-import.yml" mapfile -t private_keys < <( find private/dkim -maxdepth 1 -type f -name "*.${selector}.private.pem" | sort ) if [[ ${#private_keys[@]} -eq 0 ]]; then echo "FEIL: Fant ingen private DKIM-nøkler." echo "Forventet filer som:" echo " private/dkim/.${selector}.private.pem" exit 1 fi { echo "domain:" for private_key in "${private_keys[@]}"; do filename="$(basename "$private_key")" domain="${filename%.${selector}.private.pem}" echo " - name: ${domain}" echo " dkim_key: |" sed 's/^/ /' "$private_key" done } > "$import_file" chmod 600 "$import_file" echo "Importfil laget:" echo " $import_file" echo echo "Domener som blir importert:" for private_key in "${private_keys[@]}"; do filename="$(basename "$private_key")" domain="${filename%.${selector}.private.pem}" echo " - $domain" done echo echo "Dry-run mot Mailu:" docker compose exec -T admin flask mailu config-import \ --update \ --dry-run \ --verbose \ - < "$import_file" echo read -r -p "Importere DKIM-nøklene i Mailu nå? Skriv YES: " confirm if [[ "$confirm" != "YES" ]]; then echo "Avbrutt. Ingen endring gjort." exit 1 fi docker compose exec -T admin flask mailu config-import \ --update \ --verbose \ - < "$import_file" echo echo "DKIM-status i Mailu:" docker compose exec -T admin flask mailu config-export domain \ | grep -A5 -E 'name:|dkim_key' echo echo "Restarter relevante Mailu-tjenester hvis de finnes..." services="$(docker compose ps --services)" for svc in admin smtp antispam; do if echo "$services" | grep -qx "$svc"; then docker compose restart "$svc" fi done echo echo "OK: DKIM-nøkler importert til Mailu."