91 lines
3.5 KiB
Bash
91 lines
3.5 KiB
Bash
#!/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 <domain>"
|
|
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 "========================================================" |