diff --git a/install_postfix_advanced.sh b/install_postfix_advanced.sh index a4ba981..8745065 100755 --- a/install_postfix_advanced.sh +++ b/install_postfix_advanced.sh @@ -3616,41 +3616,58 @@ fi _file="/etc/postfix/header_checks.pcre" echononl " Create file '$_file' used for header replacing" if [[ ! -f "$_file" ]]; then - cat << EOF > "$_file" + cat << 'EOF' > "$_file" # --- -# - Replace headers +# - Header Checks - /etc/postfix/header_checks # --- +# +# Ziel: offensichtlich kaputte RFC-Header ablehnen (wenig False Positives) -# - Replace recieved from -#/^Received: from (.* \\([-._[:alnum:]]+ \\[[.[:digit:]]{7,15}\\]\\)).*?([[:space:]]+).*\\(Authenticated sender: ([^)]+)\\)(.*)/ REPLACE Received: from [127.0.0.1] (localhost [127.0.0.1])\$2(Authenticated sender: \$3)\$4 +######################################## +# A) Kaputter From:-Header +######################################## + +# 1) From: ist leer +/^From:\s*$/ REJECT Invalid From header (empty) - Spamschutzregel FROM-1001 + +# 2) Mehr als ein '@' im From:-Header -> syntaktisch kaputt +/^From:.*@.*@/ REJECT Invalid From header (multiple @) - Spamschutzregel FROM-1002 -# --- -# - Ignore Headers -# --- +# 3) Mehrere Mailboxen durch Komma getrennt (wie: Die@..., Lions@..., ...) +# (Legitime Fälle nutzen i.d.R. Display-Namen/Group-Syntax; dieses Muster ist in Spam sehr häufig) +/^From:\s*[^<>,]+@[^,]+,\s*[^<>,]+@/ REJECT Invalid From header (multiple mailboxes) - Spamschutzregel FROM-1003 -#/^\s*User-Agent/ IGNORE -#/^\s*X-Enigmail/ IGNORE -#/^\s*X-Mailer/ IGNORE -#/^\s*X-Originating-IP/ IGNORE +# 4) Typische kaputte UTF-8-Fragmente +/^From:.*\xC3\xA2/ REJECT Invalid UTF-8 in From header - Spamschutzregel FROM-1004 -# --- -# - Reject / Discard headers -# --- +######################################## +# B) Optional: sehr spezifische lokale Blacklist +######################################## -/^To:.*<>/ REJECT Possible SPAM Blank email address To: header - Header-Spamschutzregel T0-1001 +#/^Reply-To: .+\@inx1and1\..+/ REJECT Possible spam (local pattern) -/\(envelope-from <>\)/ REJECT Possible SPAM - Header-Spamschutzregel RECIEV-1001 -/^Reply-To: .+\@inx1and1\..+/ REJECT Possible SPAM - Header-Spamschutzregel REPLY-1001 +######################################## +# C) Warn +######################################## -/^From:.*<>/ REJECT Possible SPAM - Header-Spamschutzregel FROM-1001 +# Date-Rejects sind oft zu aggressiv -> wenn nötig: lieber taggen oder loggen statt reject +/^Date: .* 19[0-9][0-9]/ WARN Date far in the past Header-Spamschutzregel DATE-1001 +/^Date: .* 200[0-9]/ WARN Date far in the past Header-Spamschutzregel DATE-1002 +/^Date: .* 201[0-9]/ WARN Date far in the past Header-Spamschutzregel DATE-1003 + + + +######################################## +# Bemerkungen +######################################## + +# (envelope-from <>) nicht pauschal rejecten: +# echte DSNs/Bounces haben legitimerweise MAIL FROM: <> +#/\(envelope-from <>\)/ REJECT Null envelope-from -/^Date: .* 19[0-9][0-9]/ REJECT Date from the past. Fix your system clock. - Header-Spamschutzregel DATE-1001 -/^Date: .* 200[0-9]/ REJECT Date from the past. Fix your system clock. - Header-Spamschutzregel DATE-1002 -/^Date: .* 201[0-9]/ REJECT Date from the past. Fix your system clock. - Header-Spamschutzregel DATE-1003 -/^Date: .* 2020/ REJECT Date from the past. Fix your system clock. - Header-Spamschutzregel DATE-1004 EOF if [[ $? -eq 0 ]] ; then echo_ok