Update 2025-04-13_16:21:50

This commit is contained in:
root
2025-04-13 16:21:50 +02:00
commit 37e70e30e8
24 changed files with 985 additions and 0 deletions

65
remove_nonexistent_rules.sh Executable file
View File

@ -0,0 +1,65 @@
#!/bin/zsh
# Script Version: 01
# Description: Removes non-existent rules from SpamAssassin local.cf configuration file.
# Variables
# ========
CONFIG_FILE="/etc/mail/spamassassin/local.cf"
BACKUP_FILE="/etc/mail/spamassassin/local.cf.bak"
TEMP_FILE=$(mktemp /tmp/local.cf.temp.XXXXXX)
# Backup original config
# ========
if ! cp "$CONFIG_FILE" "$BACKUP_FILE"; then
echo "Error: Backup of $CONFIG_FILE to $BACKUP_FILE failed. Aborting." >&2
exit 1
fi
echo "Backup of local.cf saved to $BACKUP_FILE"
# Extract non-existent rules from SpamAssassin lint output
# ========
RULES=$(spamassassin --lint -D 2>&1 | grep 'warning: score set for non-existent rule' | awk '{print $NF}' | sort | uniq)
if [ -z "$RULES" ]; then
echo "No non-existent rules found in the lint output."
rm -f "$TEMP_FILE" # Clean up the temporary file
exit 0
fi
echo "Non-existent rules to be removed:"
echo "$RULES"
# Remove non-existent rules from the config file
# ========
cp "$CONFIG_FILE" "$TEMP_FILE"
while read -r RULE; do
sed -i "/^score\s\+$RULE\b/d" "$TEMP_FILE"
done <<< "$RULES"
# Overwrite the original config
# ========
if mv "$TEMP_FILE" "$CONFIG_FILE"; then
echo "Non-existent rules removed from $CONFIG_FILE"
else
echo "Error: Failed to update $CONFIG_FILE. Aborting." >&2
rm -f "$TEMP_FILE" # Clean up in case of failure
exit 1
fi
# Restart SpamAssassin to apply changes
# ========
echo "Restarting SpamAssassin..."
if systemctl restart spamassassin; then
echo "SpamAssassin restarted successfully."
if ! systemctl is-active --quiet spamassassin; then
echo "Error: SpamAssassin is not active after restart." >&2
exit 1
fi
else
echo "Error: Failed to restart SpamAssassin." >&2
exit 1
fi
exit 0