senderscore script

greystone

Active Member
Der Server-Score von senderscore.org ist recht wichtig. Es ist eine Punktzahl von 0 - 100. Das scheint von so einigen Maildienstleistern verwendet zu werden. Wenn er zu niedrig ist(<75), dann gibt es mit Sicherheit Probleme beim Versand von E-Mails.

Der Score wird bereitgestellt - falls vorhanden - über einen Reverse-DNS-Lookup, also wie bei blacklists. Die letzte Zahl der zurückgegebenen IP-Adresse ist die Punktzahl.

Hier ein Script mit dem man den Score via Kommandozeile bekommt:

Code:
#!/usr/bin/env bash

# usage: ./senderscore 74.91.28.11

if [ -z "$1" ]
    then
    echo "IP is missing as arguemnt."
    exit
fi

IP=$1
REVERSED="$(echo $IP | awk -F . '{print $4"."$3"."$2"."$1".score.senderscore.com"}')"
LOOKUP="$(dig a $REVERSED +short)"
echo $LOOKUP | awk -F . '{score=$4} END { if(score) {print score} else {print "no-score-returned"}}'


Aufruf

Code:
./senderscore 5.17.217.43
98

Hier gibt's noch ein Monitoring Plugin für Check_MK dafür:

 
Last edited:
Aus dem Beispiel mit dem guten Russen-Server (5.17.217.43) :

Bash:
dig A 43.217.17.5.score.senderscore.com +short
Aber es kommt keine Antwort. Ich hatte mal auch einen anderen Resolver (Cloudflare, Google) getestet.
Genauso erfolglos.
 
@DeaD_EyE:

Die IP-Adresse war nur ein willkürliches Demonstrationsbeispiel für den Aufruf. Wenn Du keine Antwort bekommst, dann hat sender-score.org einfach nicht genügend Informationen für Deinen Server. Im Webinterface wird Dir das dann quittiert mit "Insufficient E-Mails seen". Das bedeutet, dass Du einfach keinen Wert hast, also weder negativen noch positiven Einfluß davon.

Das ist eine echte IP, die ein Ergebnis bringt:

Code:
./senderscore $(dig +short mx2.mailbox.org)
97

Im Übrigen kennt man die Versandserver der einzelnen IPs natürlich nicht unbedingt, weil SMTP-Eingangs und Ausgangsserver bei den Großen vermutlich getrennt sind, entweder auf Server-Ebene oder zumindest auf IP-Ebene.

Ich habe da diverse ips in einem log:

google

Code:
ips="209.85.221.43 209.85.215.173 209.85.160.174 209.85.222.207 209.85.128.45 209.85.221.44 209.85.221.45 209.85.221.48 209.85.214.181 209.85.128.42 209.85.219.45 209.85.166.169 209.85.222.43 209.85.128.44 209.85.221.44 209.85.210.47 209.85.160.172 209.85.221.47 209.85.128.42 209.85.221.48 209.85.210.45 209.85.221.46 209.85.221.41"

for ip in $ips ;do printf "%-15s : %s\n" $ip $(./senderscore $ip);done

209.85.221.43   : 98
209.85.215.173  : 99
209.85.160.174  : 99
209.85.222.207  : 82
209.85.128.45   : 98
209.85.221.45   : 98
209.85.214.181  : 99
209.85.219.45   : 99
209.85.166.169  : 98
209.85.222.43   : 98
209.85.128.44   : 99
209.85.221.44   : 98
209.85.210.47   : 98
209.85.160.172  : 99
209.85.221.47   : 98
209.85.128.42   : 98
209.85.221.48   : 99
209.85.210.45   : 98
209.85.221.46   : 98
209.85.221.41   : 98

t-online

Code:
ips="194.25.134.85 194.25.134.18 194.25.134.20"
for ip in $ips ;do printf "%-15s : %s\n" $ip $(./senderscore $ip);done

194.25.134.85   : 69
194.25.134.18   : 66
194.25.134.20   : 59

microsoft(outlook outbound)

Code:
ips="40.107.21.90 40.92.64.30 40.92.67.26 40.92.90.65 40.92.73.21 40.92.72.28 40.92.68.97 40.92.73.23 40.107.6.69 40.92.70.55 40.92.75.35 40.92.89.96 40.92.23.40"
for ip in $ips ;do printf "%-15s : %s\n" $ip $(./senderscore $ip);done

40.107.21.90    : 98
40.92.64.30     : 84
40.92.67.26     : 86
40.92.90.65     : 76
40.92.73.21     : 70
40.92.72.28     : 89
40.92.68.97     : 88
40.92.73.23     : 77
40.107.6.69     : 98
40.92.70.55     : 97
40.92.75.35     : 73
40.92.89.96     : 86
40.92.23.40     : 98

Das von Dir gepostete Script auf github war meine Vorlage. Ich habe bisher immer nur das Webinterface genutzt, was ehrlich gesagt sehr nervig war. Ich bin jetzt froh, den Weg gefunden zu haben, das per CLI abzufragen, was ich auch hier - wo imho ein guter Platz dafür ist - nochmal weitergeben möchte.
 
Last edited:
Ah, danke. Damit kann ich arbeiten.
Auf meinem Server läuft zwar ein SMTP, aber von dem sind vielleicht 4 E-Mails versendet worden.
 
Scheint zu funktionieren.
Ich mache damit später mal weiter und teile den Code auch.


Bash:
# ./senderscore.py mailbox.org
No score for 91.198.250.17
No score for 80.241.60.216
[
    {
        "ip": "80.241.60.212",
        "score": "37"
    },
    {
        "ip": "80.241.60.215",
        "score": "97"
    }
]


# ./senderscore.py heise.de
[
    {
        "ip": "193.99.145.50",
        "score": "96"
    }
]
 
Back
Top