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