add workaround for unixfrom bug in Mailman
This commit is contained in:
parent
35b32dc925
commit
ff48bd3780
|
@ -1,6 +1,6 @@
|
||||||
[metadata]
|
[metadata]
|
||||||
name = extra-mailman-archivers
|
name = extra-mailman-archivers
|
||||||
version = 0.0.3
|
version = 0.0.4
|
||||||
author = Max Erenberg
|
author = Max Erenberg
|
||||||
author_email = merenber@csclub.uwaterloo.ca
|
author_email = merenber@csclub.uwaterloo.ca
|
||||||
description = Some extra archivers for Mailman 3
|
description = Some extra archivers for Mailman 3
|
||||||
|
|
|
@ -31,6 +31,7 @@ from io import BytesIO
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import tempfile
|
import tempfile
|
||||||
|
import time
|
||||||
|
|
||||||
from flufl.lock import Lock
|
from flufl.lock import Lock
|
||||||
from mailman.config import config
|
from mailman.config import config
|
||||||
|
@ -90,6 +91,15 @@ class Pipermail:
|
||||||
:type mlist: mailman.interfaces.mailinglist.IMailingList
|
:type mlist: mailman.interfaces.mailinglist.IMailingList
|
||||||
:type message: mailman.email.message.Message
|
:type message: mailman.email.message.Message
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# Workaround for a bug in Mailman which sets unixfrom to an email
|
||||||
|
# address instead of an mbox header
|
||||||
|
# https://gitlab.com/mailman/mailman/-/blob/master/src/mailman/runners/lmtp.py#L139
|
||||||
|
old_unixfrom = msg.get_unixfrom()
|
||||||
|
if old_unixfrom is not None and not old_unixfrom.startswith('From '):
|
||||||
|
# Adapted from https://github.com/python/cpython/blob/3.9/Lib/email/generator.py
|
||||||
|
msg.set_unixfrom('From ' + old_unixfrom + ' ' + time.ctime(time.time()))
|
||||||
|
|
||||||
# Mangle the 'From ' lines and add the Unix envelope header.
|
# Mangle the 'From ' lines and add the Unix envelope header.
|
||||||
fp = BytesIO()
|
fp = BytesIO()
|
||||||
g = BytesGenerator(fp, mangle_from_=True)
|
g = BytesGenerator(fp, mangle_from_=True)
|
||||||
|
@ -135,5 +145,6 @@ class Pipermail:
|
||||||
finally:
|
finally:
|
||||||
lock.unlock(unconditionally=True)
|
lock.unlock(unconditionally=True)
|
||||||
os.unlink(tempfile_name)
|
os.unlink(tempfile_name)
|
||||||
|
msg.set_unixfrom(old_unixfrom)
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
Loading…
Reference in New Issue