Make SMTP port and authentication configurable

Add more options to configure the smtplib implementation for sending
notification emails.

The port can be changed using the new smtp-port option.

Encryption can be configured using smtp-use-ssl and smtp-use-starttls.
Keep in mind that you usually also need to change the port when enabling
either of these options.

Authentication can be configured using smtp-user and smtp-password.
Authentication is disabled if either of these values is empty.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
This commit is contained in:
Lukas Fleischer 2020-02-07 13:44:29 +01:00
parent de549fb2d5
commit b855ce9452
2 changed files with 24 additions and 1 deletions

View file

@ -65,6 +65,7 @@ class Notification:
return body.rstrip()
def send(self):
sendmail = aurweb.config.get('notifications', 'sendmail')
sender = aurweb.config.get('notifications', 'sender')
reply_to = aurweb.config.get('notifications', 'reply-to')
reason = self.__class__.__name__
@ -95,8 +96,25 @@ class Notification:
else:
# send email using smtplib; no local MTA required
server_addr = aurweb.config.get('notifications', 'smtp-server')
server_port = aurweb.config.getint('notifications', 'smtp-port')
use_ssl = aurweb.config.getboolean('notifications', 'smtp-use-ssl')
use_starttls = aurweb.config.getboolean('notifications', 'smtp-use-starttls')
user = aurweb.config.get('notifications', 'smtp-user')
passwd = aurweb.config.get('notifications', 'smtp-password')
if use_ssl:
server = smtplib.SMTP_SSL(server_addr, server_port)
else:
server = smtplib.SMTP(server_addr, server_port)
if use_starttls:
server.ehlo()
server.starttls()
server.ehlo()
if user and passwd:
server.login(user, passwd)
server = smtplib.SMTP(server_addr)
server.set_debuglevel(0)
server.sendmail(sender, recipient, msg.as_bytes())
server.quit()

View file

@ -49,6 +49,11 @@ window_length = 86400
notify-cmd = /usr/local/bin/aurweb-notify
sendmail =
smtp-server = localhost
smtp-port = 25
smtp-use-ssl = 0
smtp-use-starttls = 0
smtp-user =
smtp-password =
sender = notify@aur.archlinux.org
reply-to = noreply@aur.archlinux.org