Ich möchte hier kurz ein neues Script vorstellen, welches gleich mehrere Ziele hat.

blockedspam.sh

(1) bietet eine Kurzinfo. DiscardedInbound bedeutet soviel wie "eMail Eingang verworfen". Das heißt also diese eMail wurde nicht an ein eMail Konto geliefert, sondern ignoriert.

Bei (2) werden die definierten Richtlinien ausgegeben. Die definierten Richtlinien sind  in der Admin Oberfläche von ISPConfig eingerichtet. Bei uns werden die X-Spam-Score Zeilen der hereinkommenden eMails durch Amavis modifiert. Das machen etliche eMail Anbieter auch.  Ganz wichtig war nun für mich, leicht zu erkennen, ob auch der Kill Level korrekt funktioniert. Also, ob der score dazu führt, dass die eMail verworfen wird, wenn der Wert hoch genug ist.

Bei (3) sind alle Treffer aus dem mail.log der laufenden Woche aufgelistet. Der Screenshot ist vom Dienstag Nachmittag, hat also nur eine Zeitspanne von reichlich 2,5 Tagen.

In der rechten Spalte ist die für den entsprechenden eMail Konto die ausgewählte Richtlinie.

Im erweiterten Teil findet ihr den Source Code von blockedspam.sh

blockedspam.sh

!/bin/bash
# $Revision: 1.5 $
# 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 ->

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"



No comments

Add Comment

E-Mail addresses will not be displayed and will only be used for E-Mail notifications.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Standard emoticons like :-) and ;-) are converted to images.
BBCode format allowed
Markdown format allowed