smtp-check
This commit is contained in:
Executable
+63
@@ -0,0 +1,63 @@
|
||||
#!/bin/bash
|
||||
|
||||
function usage {
|
||||
echo 'usage: <SERVER> [USERNAME PASSWORD]'
|
||||
exit 1
|
||||
}
|
||||
|
||||
function connect_server {
|
||||
openssl s_client -starttls smtp -connect "$server:587" -ign_eof 2>/dev/null <<EOF
|
||||
quit
|
||||
EOF
|
||||
}
|
||||
|
||||
function auth_server {
|
||||
base64=$(echo -ne "\0$username\0$password" | base64)
|
||||
openssl s_client -starttls smtp -connect "$server:587" -ign_eof 2>/dev/null <<EOF
|
||||
ehlo .
|
||||
auth plain $base64
|
||||
quit
|
||||
EOF
|
||||
}
|
||||
|
||||
function check_smtp_connection {
|
||||
echo -n "check smtp server <$server> port 587 ... "
|
||||
if connect_server | grep -q CONNECTED; then
|
||||
echo SUCCESS
|
||||
else
|
||||
echo FAILURE && exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function check_smtp_auth {
|
||||
echo -n "check smtp authentication <$server> port 587 username=<$username> ... "
|
||||
set +e
|
||||
output=$(auth_server)
|
||||
if echo "$output" | grep -q CONNECTED; then
|
||||
if echo "$output" | grep -q "Authentication successful"; then
|
||||
echo OK
|
||||
else
|
||||
echo wrong username or password! && exit 2
|
||||
fi
|
||||
else
|
||||
echo wrong server connection! && exit 1
|
||||
fi
|
||||
set -e
|
||||
}
|
||||
|
||||
### MAIN
|
||||
|
||||
set -Eeuo pipefail
|
||||
|
||||
server=${1:-}
|
||||
username=${2:-}
|
||||
password=${3:-}
|
||||
|
||||
[[ -z "$server" ]] && usage
|
||||
|
||||
if [[ -z "$username" ]]; then
|
||||
check_smtp_connection
|
||||
else
|
||||
[[ -z "$password" ]] && usage
|
||||
check_smtp_auth
|
||||
fi
|
||||
@@ -1,11 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
username=postmaster@mangue-et-solidaire.re
|
||||
password=
|
||||
base64=$(echo -ne "\0$username\0$password" | base64)
|
||||
|
||||
openssl s_client -starttls smtp -connect mail1.zourit.net:587 -ign_eof <<EOF | grep "Authentication successful"
|
||||
ehlo mangue-et-solidaire.re
|
||||
auth plain $base64
|
||||
quit
|
||||
EOF
|
||||
@@ -7,50 +7,49 @@ result=0
|
||||
|
||||
function usage {
|
||||
echo 'usage: <DOMAIN> [ https | 443 | smtps | 587 | pop3 | 993 | imap | 995 | ALL ]'
|
||||
exit -1
|
||||
exit 1
|
||||
}
|
||||
|
||||
function check_ssl {
|
||||
local protocol=$1
|
||||
case $protocol in
|
||||
SMTPS )
|
||||
local extra="-starttls smtp -showcerts"
|
||||
;;
|
||||
SMTPS)
|
||||
local extra="-starttls smtp -showcerts"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo -n "$protocol "
|
||||
|
||||
echo -n "$protocol "
|
||||
|
||||
certificate_info=$(echo | timeout $TIMEOUT openssl s_client $extra -connect $DOMAIN:$2 2>/dev/null)
|
||||
|
||||
issuer=$(echo "$certificate_info" | openssl x509 -noout -text 2>/dev/null | grep Issuer: | cut -d: -f2)
|
||||
date=$( echo "$certificate_info" | openssl x509 -noout -enddate 2>/dev/null | cut -d'=' -f2)
|
||||
date=$(echo "$certificate_info" | openssl x509 -noout -enddate 2>/dev/null | cut -d'=' -f2)
|
||||
date_s=$(date -d "${date}" +%s)
|
||||
now_s=$(date -d now +%s)
|
||||
date_diff=$(( (date_s - now_s) / 86400 ))
|
||||
date_diff=$(((date_s - now_s) / 86400))
|
||||
|
||||
if [[ -z $date ]]; then
|
||||
echo -n "does not respond "
|
||||
echo -ne "\033[31;1m"
|
||||
echo FAILURE
|
||||
(( result += 1 ))
|
||||
((result += 1))
|
||||
elif [[ $date_diff -gt 20 ]]; then
|
||||
echo -n "issuer:$issuer "
|
||||
echo -n "will expire in $date_diff days "
|
||||
echo -ne "\033[32;1m"
|
||||
echo ok
|
||||
elif [[ $date_diff -gt 0 ]];then
|
||||
elif [[ $date_diff -gt 0 ]]; then
|
||||
echo -n "issuer:$issuer "
|
||||
echo -n "will expire in $date_diff days "
|
||||
echo -ne "\033[31;1m"
|
||||
echo WARNING
|
||||
(( result += 1 ))
|
||||
((result += 1))
|
||||
else
|
||||
echo -n "issuer:$issuer "
|
||||
echo -n "has already expired $date_diff ago "
|
||||
echo -ne "\033[31;1m"
|
||||
echo FAILURE
|
||||
(( result += 1 ))
|
||||
((result += 1))
|
||||
fi
|
||||
echo -ne "\033[0m"
|
||||
}
|
||||
@@ -58,23 +57,27 @@ function check_ssl {
|
||||
#MAIN
|
||||
[[ -z "$DOMAIN" ]] && usage
|
||||
case $PROTOCOL in
|
||||
https | 443 )
|
||||
check_ssl HTTPS 443;;
|
||||
smtps | 587 )
|
||||
check_ssl SMTPS 587;;
|
||||
pop3 | 995 )
|
||||
check_ssl POP3 995;;
|
||||
imap | 993 )
|
||||
check_ssl IMAP 993;;
|
||||
all | ALL )
|
||||
check_ssl HTTPS 443
|
||||
check_ssl SMTPS 587
|
||||
check_ssl POP3 995
|
||||
check_ssl IMAP 993
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
;;
|
||||
https | 443)
|
||||
check_ssl HTTPS 443
|
||||
;;
|
||||
smtps | 587)
|
||||
check_ssl SMTPS 587
|
||||
;;
|
||||
pop3 | 995)
|
||||
check_ssl POP3 995
|
||||
;;
|
||||
imap | 993)
|
||||
check_ssl IMAP 993
|
||||
;;
|
||||
all | ALL)
|
||||
check_ssl HTTPS 443
|
||||
check_ssl SMTPS 587
|
||||
check_ssl POP3 995
|
||||
check_ssl IMAP 993
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
|
||||
exit "$result"
|
||||
Reference in New Issue
Block a user