From dced691bd318c805fa0fe5b8d460a91797db7fea Mon Sep 17 00:00:00 2001 From: MeaTLoTioN Date: Thu, 23 Jun 2022 17:39:36 +0100 Subject: [PATCH] initial commit --- spf_check.sh | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100755 spf_check.sh diff --git a/spf_check.sh b/spf_check.sh new file mode 100755 index 0000000..9aa2255 --- /dev/null +++ b/spf_check.sh @@ -0,0 +1,28 @@ +#!/bin/bash +usage() { + echo "Usage: $(basename $0) {domain.tld} {debug} | debug is optional, accepts true/yes/1 for true and false/no/0 for false (or just don't use)" + exit 1 +} +[[ $# -gt 0 ]] && DOMAIN=$1 || usage +case $2 in + [yY][eE][sS]|[tT][rR][uU][eE]|1) DEBUG=true;; +esac +COUNT=0 +DEPTH=0 +mDEPTH=0 +checkIncludes() { + SPF=$1 + for I in $(dig -t txt $SPF +short|grep -oE "include:.* |ip[4,6]:.* "|sed 's/include://g; s/ip[4,6]://g; s/\"//g'|tr ' ' '\n'); do + [[ $DEBUG ]] && printf "%*s%s %s\n" $(($DEPTH*2)) '' "$I" + if [[ ! ${I} =~ ^[0-9] ]]; then + DEPTH=$(($DEPTH+1)) + mDEPTH=$(($mDEPTH+1)) + checkIncludes $I + fi + COUNT=$(($COUNT+1)) + done + DEPTH=$(($DEPTH-1)) +} +checkIncludes $DOMAIN +[[ $DEBUG ]] && echo +echo "Total: $COUNT (Max lookups: $mDEPTH)"