Skip to content
Snippets Groups Projects
Commit d8cf24df authored by Stéphane Diemer's avatar Stéphane Diemer
Browse files

Fixed mail test (refs #20807).

parent 568789c7
No related branches found
No related tags found
No related merge requests found
......@@ -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))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment