about summary refs log tree commit diff
path: root/overlays
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2023-02-08 15:23:41 +0000
committerAlyssa Ross <hi@alyssa.is>2023-06-05 20:43:49 +0000
commita5f1446caf5e3196cf00519834818e370e4d859c (patch)
treef1490adba4cfa0ab1f981fabb0075aff41ba4a77 /overlays
parent3cf4e10ee3120a4b69c754b4927b1afbc218f449 (diff)
downloadnixlib-a5f1446caf5e3196cf00519834818e370e4d859c.tar
nixlib-a5f1446caf5e3196cf00519834818e370e4d859c.tar.gz
nixlib-a5f1446caf5e3196cf00519834818e370e4d859c.tar.bz2
nixlib-a5f1446caf5e3196cf00519834818e370e4d859c.tar.lz
nixlib-a5f1446caf5e3196cf00519834818e370e4d859c.tar.xz
nixlib-a5f1446caf5e3196cf00519834818e370e4d859c.tar.zst
nixlib-a5f1446caf5e3196cf00519834818e370e4d859c.zip
mailman: don't re-encode outgoing mail
This can break DKIM.
Diffstat (limited to 'overlays')
-rw-r--r--overlays/patches/mailman/no-base64.diff34
1 files changed, 34 insertions, 0 deletions
diff --git a/overlays/patches/mailman/no-base64.diff b/overlays/patches/mailman/no-base64.diff
new file mode 100644
index 000000000000..2deef3ec3cf0
--- /dev/null
+++ b/overlays/patches/mailman/no-base64.diff
@@ -0,0 +1,34 @@
+diff --git i/src/mailman/email/message.py w/src/mailman/email/message.py
+index fd6a28144..693f8d2b7 100644
+--- i/src/mailman/email/message.py
++++ w/src/mailman/email/message.py
+@@ -49,6 +49,11 @@ class Message(email.message.Message):
+         self.__dict__ = values
+ 
+     def as_string(self):
++        try:
++            return email.message.Message.as_bytes(self).decode('utf-8')
++        except UnicodeEncodeError:
++            pass
++
+         # Work around for https://bugs.python.org/issue27321 and
+         # https://bugs.python.org/issue32330.
+         try:
+diff --git i/src/mailman/mta/connection.py w/src/mailman/mta/connection.py
+index ebcc19eb4..e69fe4c6a 100644
+--- i/src/mailman/mta/connection.py
++++ w/src/mailman/mta/connection.py
+@@ -127,10 +127,9 @@ class Connection:
+         if self._connection is None:
+             self._connect()
+             self._login()
+-        # smtplib.SMTP.sendmail requires the message string to be pure ascii.
+-        # We have seen malformed messages with non-ascii unicodes, so ensure
+-        # we have pure ascii.
+-        msgtext = msgtext.encode('ascii', 'replace').decode('ascii')
++        # smtplib.SMTP.sendmail requires the message string to be
++        # bytes or an ASCII string.
++        msgtext = msgtext.encode('utf-8')
+         try:
+             log.debug('envsender: %s, recipients: %s, size(msgtext): %s',
+                       envsender, recipients, len(msgtext))