4579: Email notifications do not work if configured to use TLS but the server does not have a valid certificate

streamofstars

What version are you running?

2.5.13.1

What steps will reproduce the problem?

  1. Configure email settings in admin panel to use email account with TLS ENABLED on mail server that uses a domain with no valid certificate.
  2. Submit a review or do any other action that should trigger an email notification.
  3. Check logs in the administration menu.

What is the expected output? What do you see instead?

I would expect emails to be sent. The actual result is that emails are not sent.

Please provide any additional information below.

Be advised, I tried using accounts on 2 servers: Office 365 paid plan with Exchange Online and custom domain (but no certificate), some 3rd party hosting mail server with other custom domain (but no certificate). I will spare you the long story but the bottom line is I cannot just buy a certificate. As an alternative I can use unsecure connection (TLS disabled) however, this will soon stop being an option for me too, as the company currently migrates service accounts to different servers that require TLS (but have no certificates).

See log (personal data anonymized):
- - root - Error sending e-mail notification with subject '<subject>' on behalf of '<name> <email>' to '<name> <email>,<name> <email>,<name> <email>'
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/reviewboard/notifications/email.py", line 634, in send_review_mail
message.send()
File "/usr/lib/python2.7/site-packages/django/core/mail/message.py", line 276, in send
return self.get_connection(fail_silently).send_messages([self])
File "/usr/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 87, in send_messages
new_conn_created = self.open()
File "/usr/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 51, in open
self.connection.starttls()
File "/usr/lib64/python2.7/smtplib.py", line 648, in starttls
self.sock = ssl.wrap_socket(self.sock, keyfile, certfile)
File "/usr/lib64/python2.7/ssl.py", line 936, in wrap_socket
ciphers=ciphers)
File "/usr/lib64/python2.7/ssl.py", line 611, in init
self.do_handshake()
File "/usr/lib64/python2.7/ssl.py", line 833, in do_handshake
self._sslobj.do_handshake()
error: [Errno 0] Error

brennie
#1 brennie

You'll have to generate a self-signed certificate and add it to the list of accepted CA certificates on the Review Board server.

  • -New
    +WontFix