From c14032bc6e398eb98910bdbe13eade7ab8ae8088 Mon Sep 17 00:00:00 2001 From: Mark Sapiro Date: Fri, 30 Jun 2017 03:42:06 +0000 Subject: Ignore syntactically invalid sender addresses. --- src/mailman/email/message.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/mailman/email/message.py') diff --git a/src/mailman/email/message.py b/src/mailman/email/message.py index 36a333773..3a5a4d64b 100644 --- a/src/mailman/email/message.py +++ b/src/mailman/email/message.py @@ -30,7 +30,9 @@ import email.utils from email.header import Header from email.mime.multipart import MIMEMultipart from mailman.config import config +from mailman.interfaces.address import IEmailValidator from public import public +from zope.component import getUtility COMMASPACE = ', ' @@ -96,13 +98,17 @@ class Message(email.message.Message): # Convert the header to str in case it's a Header instance. name, address = email.utils.parseaddr(str(field_value)) senders.append(address.lower()) - # Filter out None and the empty string, and convert to unicode. + # Filter out invalid addresses, None and the empty string, and convert + # to unicode. clean_senders = [] + validator = getUtility(IEmailValidator) for sender in senders: if not sender: continue if isinstance(sender, bytes): sender = sender.decode('ascii') + if not validator.is_valid(sender): + continue clean_senders.append(sender) return clean_senders -- cgit v1.2.3-70-g09d2