Support mail delivery without a local MTA. Instead, an SMTP server can now be configured using the smtp-server option in the [notifications] section. Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org> --- aurweb/scripts/notify.py | 13 ++++++++----- conf/config.defaults | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/aurweb/scripts/notify.py b/aurweb/scripts/notify.py index b0f218b..35d2701 100755 --- a/aurweb/scripts/notify.py +++ b/aurweb/scripts/notify.py @@ -1,7 +1,8 @@ #!/usr/bin/env python3 import email.mime.text -import subprocess +import email.utils +import smtplib import sys import textwrap @@ -63,7 +64,7 @@ class Notification: return body.rstrip() def send(self): - sendmail = aurweb.config.get('notifications', 'sendmail') + server_addr = aurweb.config.get('notifications', 'smtp-server') sender = aurweb.config.get('notifications', 'sender') reply_to = aurweb.config.get('notifications', 'reply-to') reason = self.__class__.__name__ @@ -79,13 +80,15 @@ class Notification: msg['Reply-to'] = reply_to msg['To'] = to msg['X-AUR-Reason'] = reason + msg['Date'] = email.utils.formatdate(localtime=True) for key, value in self.get_headers().items(): msg[key] = value - p = subprocess.Popen([sendmail, '-t', '-oi'], - stdin=subprocess.PIPE) - p.communicate(msg.as_bytes()) + server = smtplib.SMTP(server_addr) + server.set_debuglevel(1) + server.sendmail(sender, recipient, msg.as_bytes()) + server.quit() class ResetKeyNotification(Notification): diff --git a/conf/config.defaults b/conf/config.defaults index c519eae..af85ce8 100644 --- a/conf/config.defaults +++ b/conf/config.defaults @@ -47,7 +47,7 @@ window_length = 86400 [notifications] notify-cmd = /usr/local/bin/aurweb-notify -sendmail = /usr/bin/sendmail +smtp-server = orion.archlinux.org sender = notify@aur.archlinux.org reply-to = noreply@aur.archlinux.org -- 2.25.0