#1004938 Invalid encoding of spam mail causes offlineimap to crash

Package:
offlineimap
Source:
offlineimap3
Submitter:
Wouter Verhelst
Date:
2023-11-20 17:36:14 UTC
Severity:
normal
Tags:
#1004938#5
Date:
2022-02-03 21:15:34 UTC
From:
To:
An email in my spam folder has started causing the following crash:

Folder spam [acc: Test]:
 Syncing spam: IMAP -> Maildir
 Copy message UID 1353368115 (1/88) Folk:spam -> Local:spam
 Copy message UID 1353368116 (2/88) Folk:spam -> Local:spam
Copy message from Folk:spam:
 ERROR: Copying message 1353368115 [acc: Test]
  'ascii' codec can't encode characters in position 1541-1579: ordinal not in range(128)
Thread 'Copy message from Folk:spam' terminated with exception:
Traceback (most recent call last):
  File "/usr/share/offlineimap3/offlineimap/threadutil.py", line 146, in run
    Thread.run(self)
  File "/usr/lib/python3.9/threading.py", line 910, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/share/offlineimap3/offlineimap/folder/Base.py", line 815, in copymessageto
    new_uid = dstfolder.savemessage(uid, message, flags, rtime)
  File "/usr/share/offlineimap3/offlineimap/folder/Maildir.py", line 409, in savemessage
    tmpname = self.save_to_tmp_file(messagename, msg)
  File "/usr/share/offlineimap3/offlineimap/folder/Maildir.py", line 359, in save_to_tmp_file
    fd.write(msg.as_bytes(policy=output_policy))
  File "/usr/lib/python3.9/email/message.py", line 178, in as_bytes
    g.flatten(self, unixfrom=unixfrom)
  File "/usr/lib/python3.9/email/generator.py", line 116, in flatten
    self._write(msg)
  File "/usr/lib/python3.9/email/generator.py", line 181, in _write
    self._dispatch(msg)
  File "/usr/lib/python3.9/email/generator.py", line 218, in _dispatch
    meth(msg)
  File "/usr/lib/python3.9/email/generator.py", line 276, in _handle_multipart
    g.flatten(part, unixfrom=False, linesep=self._NL)
  File "/usr/lib/python3.9/email/generator.py", line 116, in flatten
    self._write(msg)
  File "/usr/lib/python3.9/email/generator.py", line 181, in _write
    self._dispatch(msg)
  File "/usr/lib/python3.9/email/generator.py", line 218, in _dispatch
    meth(msg)
  File "/usr/lib/python3.9/email/generator.py", line 362, in _handle_message
    g.flatten(msg.get_payload(0), unixfrom=False, linesep=self._NL)
  File "/usr/lib/python3.9/email/generator.py", line 116, in flatten
    self._write(msg)
  File "/usr/lib/python3.9/email/generator.py", line 181, in _write
    self._dispatch(msg)
  File "/usr/lib/python3.9/email/generator.py", line 218, in _dispatch
    meth(msg)
  File "/usr/lib/python3.9/email/generator.py", line 268, in _handle_multipart
    self.write(subparts)
  File "/usr/lib/python3.9/email/generator.py", line 410, in write
    self._fp.write(s.encode('ascii', 'surrogateescape'))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1541-1579: ordinal not in range(128)

I'm not entirely sure what the message is that causes the exact error,
but I can look that up if you need me to.