diff --git a/set-policyd-spf-config-for-listserver.sh b/set-policyd-spf-config-for-listserver.sh new file mode 100755 index 0000000..1fe587c --- /dev/null +++ b/set-policyd-spf-config-for-listserver.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash +set -euo pipefail + +CONF="/etc/postfix-policyd-spf-python/policyd-spf.conf" +BACKUP="${CONF}.$(date +%Y%m%d-%H%M%S).bak" + +if [[ ! -f "$CONF" ]]; then + echo "ERROR: Config not found: $CONF" >&2 + exit 1 +fi + +cp -a -- "$CONF" "$BACKUP" + +ensure_kv() { + local key="$1" + local value="$2" + + # Prüfen ob es eine AKTIVE (nicht auskommentierte) Zeile gibt + if grep -Eq "^[[:space:]]*${key}[[:space:]]*=" "$CONF"; then + # Nur erste aktive Zeile ersetzen + sed -ri "0,/^[[:space:]]*${key}[[:space:]]*=.*/s//${key} = ${value}/" "$CONF" + else + # Anfügen mit Leerzeile + Kommentar + cat >>"$CONF" <