summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Fleischer <lfleischer@archlinux.org>2020-02-07 13:22:29 +0100
committerLukas Fleischer <lfleischer@archlinux.org>2020-02-11 12:19:56 +0100
commitde549fb2d5063394f91e06f366bc5d426f5f0891 (patch)
tree31586a5edc091c17ad424df2a9df9f55359328cd
parent3f2654e79e70caa828f3464386b0a3367cbac758 (diff)
downloadaur-de549fb2d5063394f91e06f366bc5d426f5f0891.tar.gz
aur-de549fb2d5063394f91e06f366bc5d426f5f0891.tar.xz
Support smtplib for sending emails
Support mail delivery without a local MTA. Instead, an SMTP server can now be configured using the smtp-server option in the [notifications] section. In order to use this option, the value of the sendmail option must be empty. Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
-rwxr-xr-xaurweb/scripts/notify.py22
-rw-r--r--conf/config.defaults3
2 files changed, 20 insertions, 5 deletions
diff --git a/aurweb/scripts/notify.py b/aurweb/scripts/notify.py
index b0f218b5..6c5c709e 100755
--- a/aurweb/scripts/notify.py
+++ b/aurweb/scripts/notify.py
@@ -1,6 +1,8 @@
#!/usr/bin/env python3
import email.mime.text
+import email.utils
+import smtplib
import subprocess
import sys
import textwrap
@@ -63,7 +65,6 @@ 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__
@@ -79,13 +80,26 @@ 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())
+ sendmail = aurweb.config.get('notifications', 'sendmail')
+ if sendmail:
+ # send email using the sendmail binary specified in the
+ # configuration file
+ p = subprocess.Popen([sendmail, '-t', '-oi'],
+ stdin=subprocess.PIPE)
+ p.communicate(msg.as_bytes())
+ else:
+ # send email using smtplib; no local MTA required
+ server_addr = aurweb.config.get('notifications', 'smtp-server')
+
+ server = smtplib.SMTP(server_addr)
+ server.set_debuglevel(0)
+ server.sendmail(sender, recipient, msg.as_bytes())
+ server.quit()
class ResetKeyNotification(Notification):
diff --git a/conf/config.defaults b/conf/config.defaults
index c519eae6..23d46b06 100644
--- a/conf/config.defaults
+++ b/conf/config.defaults
@@ -47,7 +47,8 @@ window_length = 86400
[notifications]
notify-cmd = /usr/local/bin/aurweb-notify
-sendmail = /usr/bin/sendmail
+sendmail =
+smtp-server = localhost
sender = notify@aur.archlinux.org
reply-to = noreply@aur.archlinux.org