From 77a59234a21dcab0a925ba8164441c5116bff4b4 Mon Sep 17 00:00:00 2001 From: Rechi Date: Tue, 24 Feb 2015 21:22:59 +0100 Subject: [PATCH] Check MX Records (#41) --- testssl.sh | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/testssl.sh b/testssl.sh index dc57005..008e4d2 100755 --- a/testssl.sh +++ b/testssl.sh @@ -2575,7 +2575,7 @@ parse_hn_port() { # check if we can connect to port if ! fd_socket; then ignore_no_or_lame "Ignore? " - [ $? -ne 0 ] && exit 3 + [ $? -ne 0 ] && return 3 fi close_socket @@ -2596,6 +2596,7 @@ parse_hn_port() { get_dns_entries() { + IP4=''; IP6='' test4iponly=`printf $NODE | sed -e 's/[0-9]//g' -e 's/\.//g'` if [ "x$test4iponly" == "x" ]; then # only an IPv4 address was supplied IP4=$NODE @@ -2678,6 +2679,32 @@ datebanner() { } +mx_allentries() { + + HOST=$1 + if which dig &> /dev/null; then + MXs=$(dig +short -t MX $HOST | grep '\d ') + elif which host &> /dev/null; then + MXs=$(host -t MX $HOST | grep 'handled by' | sed -e 's/^.*by //' -e 's/\.$//') + elif which nslookup &> /dev/null; then + MXs=$(nslookup -type=MX $HOST 2> /dev/null | grep 'mail exchanger = ' | awk '$5 ~ /[0-9]+/ {print $5 " " $NF}') + else + pr_redln 'No dig, host or nslookup' + exit -1 + fi + + MXs=$(echo "$MXs" | sort -n | sed -e 's/^.* //' -e 's/\.$//') + + if [ -n "$MXs" ] ; then + for MX in $MXs; do + parse_hn_port "$MX:25" 'smtp' && starttls 'smtp' + done + else + pr_magentaln "$HOST has no Mail Server(s)" + fi +} + + ################# main: ################# @@ -2707,6 +2734,10 @@ case "$1" in -b|--banner|-banner|-v|--version|-version) exit 0 ;; + --mx) + mx_allentries $2 + exit $? + ;; -V|--local) initialize_engine # GOST support prettyprint_local "$2"