|
@ -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 |