blockedspam.sh
Zeigt für die email Konten die vom Server abgewiesenen Spam Nachrichten an.
Stichwort DiscardedInbound
#!/bin/bash
# ${Revision}: 1.6 $
# blockedspam.sh
bold=$(tput bold)
normal=$(tput sgr0)
#gelb=$(tput setaf 3)
gruen=$(tput setaf 2)
black=$(tput setaf 0)
echo "${bold}"
echo "blockedspam.sh${normal}"
echo "zeigt für die email Konten die vom Server${bold} abgewiesenen Spam Nachrichten${normal} an."
echo "Stichwort ${gruen} DiscardedInbound ${normal}"
echo "Über ISPConfig ist die eingestellte Richtlinie einstellbar."
echo "Der${bold} Spam Kill Level${normal} muß überschritten werden, dann weist der Server die eMail ab."
echo -n "${bold}"
echo "Tipp: Es kann ein anderes Logfile als Parameter übergeben werden. z.B. blockedspam.sh /var/log/mail.log.1${normal}"
echo
# beste Version:
#grep DiscardedInbound /var/log/mail.log|awk -F ' -> |, ' '/Hits:/ {gsub("Hits:", "\tBlocked with Score:"); gsub("Blocked ", "BLOCKED", $5); printf "%-40s %s\n", $3, $6}'|grep -v size:
echo "${gruen} Hier ist die Übersicht über die in ISPConfig definierten Richtlinien"
echo "${normal}"
echo "select id, policy_name Richtlinie,spam_tag_level,spam_tag2_level,spam_kill_level \
from dbispconfig.spamfilter_policy order by id;"|\
mysql -S /var/run/mysqld/mysqld.sock --table | egrep --color 'Richtlinie|spam_kill_leve|'
echo "${normal}"
###
# die funktion richtlinie holt die
# policy_id für eine email
function richtlinie () {
pure_email=$(echo ${email}|tr -d '<>')
#echo "func: ${email} ${pure_email}"
result="$(echo "SELECT policy_id FROM dbispconfig.spamfilter_users WHERE email = '${pure_email}';" | mysql -S /var/run/mysqld/mysqld.sock --skip-column-names)"
#echo ":${result}:"
if [ -z "${result}" ]; then
echo "0"
else
echo "${result}"
fi
}
logfile="/var/log/mail.log"
#Aufrufparameter prüfen, es kann ein anderes Logfile übergeben werden
if (( $# == 1))
then
if [ -f "$1" ]; then
logfile="$1"
fi
fi
#echo
echo "${gruen} Liste der abgelehnten Spam eMails"
echo "${normal}"
echo -n "${bold}"
printf "%-55s %-40s" "Email-Konto:" "Wenn bei Richtlinie 0 steht, ist keine ausgewählt"
echo "${normal}"
filtered_output=$(grep DiscardedInbound ${logfile} | awk -F ' -> |, ' '/Hits:/ {gsub("Hits:", "\tBlocked with Score:"); gsub("Blocked ", "BLOCKED", $5); printf "%-40s %s\n", $3, $6}' | grep -v size:)
while IFS= read -r line; do
email=$(echo "${line}" | awk '{print $1}') # Extrahiere die Email-Adresse
score=$(echo "${line}" | awk '{print $5}') # Extrahiere den Score
printf "%-55s %-22s %-15s" "${email} " "X-Spam-Score: ${score}" " angewandte Richtlinie "
richtlinie
done <<< "${filtered_output}"
Beispiel: