diff --git a/tests/test_mail.py b/tests/test_mail.py
index e0848fdd97fd7557c0b3068f217525a4be69b047..50a304329332b854208428afdcd837d0f44dcf7a 100755
--- a/tests/test_mail.py
+++ b/tests/test_mail.py
@@ -17,8 +17,11 @@ DEF = '\033[0m'
 
 os.chdir(os.path.dirname(__file__))
 if not os.path.isfile('../utils.py'):
-    print('conf.sh not found')
+    print('The envsetup configuration was not found.')
     sys.exit(1)
+else:
+    es_utils = imp.load_source('es_utils', '../utils.py')
+    conf = es_utils.load_conf()
 
 
 def print_color(txt, col):
@@ -33,57 +36,65 @@ def print_green(txt):
     print_color(txt, GREEN)
 
 
-all_ok = True
+def check_listening_port():
+    # check that postfix listens the port 25 correctly
+    status, out = subprocess.getstatusoutput('netstat -pant | grep master | grep 127.0.0.1:25')
+    if status != 0:
+        print_red('The port 25 is not listened by postfix "master" process.')
+        return False
+    else:
+        print_green('Postfix is listening port 25 correctly.')
+        return True
 
 
-def get_configured_relay():
+def check_relay():
+    print('Checking if SMTP relay conforms to conf.')
     status, out = subprocess.getstatusoutput('grep relayhost /etc/postfix/main.cf')
     if status == 0:
-        return out.split('relayhost = ')[1]
-
-
-def check_relay():
-    global all_ok
-    global conf
-    configured_relay = get_configured_relay()
-    print('Checking if SMTP relay conforms to conf')
-    es_utils = imp.load_source('es_utils', '../utils.py')
-    conf = es_utils.load_conf()
+        configured_relay = out[len('relayhost'):].strip(' \t=')
+    else:
+        print_red('Configured relay not found.')
+        return False
     conf_relay = conf.get('EMAIL_SMTP_SERVER')
     if conf_relay != configured_relay:
-        print_red('Configured STMP relay (%s) does not match the expected value (%s)' % (configured_relay, conf_relay))
-        all_ok = False
+        print_red('Configured STMP relay (%s) does not match the expected value (%s).' % (configured_relay, conf_relay))
+        return False
     else:
-        print_green('STMP relay is properly set')
+        print_green('STMP relay is properly set.')
+        return True
 
 
 def send_test_email():
-    print('Sending test email')
-    global all_ok
-    email = "noreply+%s@ubicast.eu" % random.randint(0, 1000)
+    email = 'noreply+%s-%s@ubicast.eu' % (time.time(), random.randint(0, 1000))
+    print('Sending test email to "%s".' % email)
     cmd = 'echo "This is a test email" | mail -s "Test email from `cat /etc/hostname`" %s' % email
+    subprocess.getstatusoutput(cmd)
+    time.sleep(3)
+    cmd = 'grep "%s" /var/log/mail.log' % email
     status, out = subprocess.getstatusoutput(cmd)
-    time.sleep(5)
-    status, out = subprocess.getstatusoutput('grep %s /var/log/mail.log | grep bounced' % email)
-    if status == 0:
-        print_red('Sending mail failed')
-        all_ok = False
+    if status != 0:
+        time.sleep(7)
+        status, out = subprocess.getstatusoutput(cmd)
+        if status != 0:
+            print_red('Failed to send email.')
+            print('No log entry found using command: %s' % cmd)
+            return False
+    if 'bounced' not in out or 'The email account that you tried to reach does not exist.' in out:
+        print_green('Email sent.')
+        return True
     else:
-        print_green('Email sent')
+        print_red('Failed to send email.')
+        print('Sending log line:\n%s' % out)
+        return False
 
 
 if not os.path.exists('/etc/postfix'):
     print_red('Postfix dir does not exists, please install postfix.')
-    all_ok = False
-else:
-    # check that postfix listens the port 25 correctly
-    status, out = subprocess.getstatusoutput('netstat -pant | grep master | grep 127.0.0.1:25')
-    if status != 0:
-        print_red('The port 25 is not listened by any process.')
-        all_ok = False
-    else:
-        print_green('Postfix listening port: OK.')
-        check_relay()
-        send_test_email()
+    sys.exit(1)
+
+all_ok = check_listening_port()
+if all_ok:
+    all_ok = all_ok and check_relay()
+    all_ok = all_ok and send_test_email()
 
 sys.exit(int(not all_ok))