about summary refs log tree commit diff
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
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.
-rw-r--r--nixpkgs/pkgs/servers/mail/mailman/package.nix1
-rw-r--r--overlays/patches/mailman/no-base64.diff34
2 files changed, 35 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/mail/mailman/package.nix b/nixpkgs/pkgs/servers/mail/mailman/package.nix
index 5b9666b59f93..b316d69f85b9 100644
--- a/nixpkgs/pkgs/servers/mail/mailman/package.nix
+++ b/nixpkgs/pkgs/servers/mail/mailman/package.nix
@@ -47,6 +47,7 @@ buildPythonPackage rec {
       url = "https://gitlab.com/mailman/mailman/-/commit/9613154f3c04fa2383fbf017031ef263c291418d.patch";
       sha256 = "0vyw87s857vfxbf7kihwb6w094xyxmxbi1bpdqi3ybjamjycp55r";
     })
+    ../../../../../overlays/patches/mailman/no-base64.diff
     ./log-stderr.patch
   ];
 
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))