#!/bin/bash # update_dms_config.sh # Fügt eine neue Domain zur lokalen DMS Konfiguration hinzu: # 1. Ergänzt SRS_EXCLUDE_DOMAINS in docker-compose.yml # 2. Ergänzt Whitelist in smtp_header_checks set -e DOMAIN=$1 DOCKER_COMPOSE_FILE="./docker-compose.yml" HEADER_CHECKS_FILE="./docker-data/dms/config/postfix/smtp_header_checks" if [ -z "$DOMAIN" ]; then echo "Usage: $0 " echo "Example: $0 cielectrical.com" exit 1 fi echo "=== Aktualisiere lokale Konfiguration für $DOMAIN ===" # --------------------------------------------- # 1. Update docker-compose.yml (SRS Exclude) # --------------------------------------------- if [ -f "$DOCKER_COMPOSE_FILE" ]; then echo "-> Prüfe docker-compose.yml..." # Prüfen, ob Domain schon in der Zeile steht if grep -q "SRS_EXCLUDE_DOMAINS=.*$DOMAIN" "$DOCKER_COMPOSE_FILE"; then echo " Domain bereits in SRS_EXCLUDE_DOMAINS vorhanden." else # Backup erstellen cp "$DOCKER_COMPOSE_FILE" "${DOCKER_COMPOSE_FILE}.bak" # sed Magie: Suche Zeile mit SRS_EXCLUDE_DOMAINS, hänge ",domain" am Ende an # Wir nutzen ein Komma als Trenner vor der neuen Domain sed -i "s/SRS_EXCLUDE_DOMAINS=.*/&,$DOMAIN/" "$DOCKER_COMPOSE_FILE" echo " ✅ $DOMAIN zu SRS_EXCLUDE_DOMAINS hinzugefügt." fi else echo "❌ Fehler: $DOCKER_COMPOSE_FILE nicht gefunden!" exit 1 fi # --------------------------------------------- # 2. Update smtp_header_checks (PCRE Whitelist) # --------------------------------------------- if [ -f "$HEADER_CHECKS_FILE" ]; then echo "-> Prüfe smtp_header_checks..." # Domain für Regex escapen (der Punkt muss \. sein) ESCAPED_DOMAIN="${DOMAIN//./\\.}" NEW_LINE="/.*@${ESCAPED_DOMAIN}/ DUNNO" # Prüfen, ob Eintrag existiert if grep -Fq "@$ESCAPED_DOMAIN/" "$HEADER_CHECKS_FILE"; then echo " Domain bereits in smtp_header_checks vorhanden." else # Backup erstellen cp "$HEADER_CHECKS_FILE" "${HEADER_CHECKS_FILE}.bak" # Wir fügen die Zeile oben bei den Whitelists ein (nach dem Kommentar "# 1. EIGENE...") # Oder einfach am Anfang der Datei, falls die Reihenfolge egal ist. # Aber bei PCRE ist Reihenfolge wichtig! Whitelist muss VOR Rewrite stehen. # Strategie: Wir suchen die erste Zeile, die mit /.*@ anfängt und fügen davor ein # Oder wir hängen es einfach oben an einen definierten Marker an. # Einfachste sichere Methode für dein File: Nach dem Kommentarblock einfügen # Wir suchen nach der Zeile mit "1. EIGENE DOMAINS" und fügen 3 Zeilen später ein # Aber sed insert ist tricky. # Bessere Methode: Wir wissen, dass Whitelists ganz oben stehen sollen. # Wir erstellen eine temporäre Datei. # 1. Header (Kommentare) behalten oder neu schreiben? # Wir hängen es einfach GANZ OBEN in die Datei ein (vor alle anderen Regeln), # das ist bei "DUNNO" (Whitelist) immer sicherste Variante. sed -i "1i $NEW_LINE" "$HEADER_CHECKS_FILE" echo " ✅ $DOMAIN zu smtp_header_checks hinzugefügt (ganz oben)." fi else echo "⚠️ Warnung: $HEADER_CHECKS_FILE nicht gefunden. Überspringe." fi echo "========================================================" echo "Konfiguration aktualisiert." echo "HINWEIS: Damit die Änderungen wirksam werden, führen Sie bitte aus:" echo " docker compose up -d --force-recreate" echo "========================================================"