smtp-check

This commit is contained in:
pvincent
2024-04-23 22:33:13 +04:00
parent d25d8ab992
commit 72ed035132
3 changed files with 95 additions and 40 deletions
+63
View File
@@ -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