#!/bin/sh # # Tweak SpamAssassin settings internal_networks trusted_networks set -e exit1() { response="${1:+Error: }${1:-Internal error!}" echo "$response" >&2 exit 1 } firstitem() { file="$1" cat "$file" | grep -v '^#' | sed 's/#.*//' | head -n 1 } items() { file="$1" cat "$file" | grep -v '^#' | sed 's/#.*//' } items_singleline() { perl -0777 -ne 'print join " ",m/^\s*([^#\s]+)/gm' "$1" } addoroverwritewithindents() { set -e file="$1" export token="$2" # provide replacement as STDIN perl -0777 -pi \ -E 'BEGIN{ $s=; chomp $s }'\ -E 's/$ENV{"token"}.*(?:\n\h.*)+\n/$s/m and $seen=1;'\ -E 'END{ unless ($seen) { print $s } }'\ "$file" } REDPILL=$(firstitem "/etc/local-ORG/redpill") redpilldir="/etc/local-$REDPILL/" REALMS="$(items "$redpilldir/realms")" REALM="$(cat /etc/local-ORG/realm || dnsdomainname | tr '[a-z]' '[A-Z]')" for realm in $REALMS; do realmdir="$redpilldir/$realm" [ -d "$realmdir" ] || continue mailnets=$(items_singleline "$realmdir/mailnetworks") #' if [ "$REALM" = "$realm" ]; then ournets="${ournets:+$ournets }$mailnets" [ ! -f "$realmdir/localnetworks" ] || ournets="${ournets:+$ournets }$(items "$realmdir/localnetworks")" else redpillnets="${redpillnets:+$redpillnets }$mailnets" redpillhosts="${redpillhosts:+$redpillhosts }$(items "$realmdir/mailhost")" fi done echo "FIXME: Add these to /etc/spamassassin/local.cf:" echo "internal_networks $ournets" echo "trusted_networks $ournets $redpillnets" echo "whitelist_bounce_relays $redpillhosts"