--- /usr/lib/python3/dist-packages/mailman_hyperkitty/__init__.py 2017-05-26 09:48:07.000000000 +0000 +++ __init__.py 2023-08-25 07:18:50.425055199 +0000 @@ -157,6 +157,9 @@ class Archiver(object): return url except Exception as error: # Archiving failed, send the message to the queue. + logger.error( + 'archiving failed, re-queuing (mailing-list %s, message %s)', + mlist.list_id, msg['Message-Id'].strip()) _log_error(error) # Enqueuing can throw an exception, e.g. a permissions problem # or a MemoryError due to a really large message. Try to be @@ -189,21 +192,36 @@ class Archiver(object): url = urljoin(self.base_url, "api/mailman/archive") try: message_text = msg.as_string() - except (MessageError, KeyError) as error: + except (MessageError, KeyError, UnicodeEncodeError) as error: logger.error( 'Could not render the message with id %s to text: %s', msg['Message-Id'].strip(), error) return # permanent error, don't raise + except Exception as error: + logger.error( + 'Could not render the message with id %s to text: %s', + msg['Message-Id'].strip(), error) + raise try: result = requests.post( url, params={"key": self.api_key}, data={"mlist": mlist.fqdn_listname}, files={"message": ("message.txt", message_text)}) + except (UnicodeEncodeError) as error: + logger.error( + 'Could not post the message with id %s: %s', + msg['Message-Id'].strip(), error) + raise except requests.exceptions.RequestException as error: logger.error( 'Connection to HyperKitty failed: %s', error) raise + except Exception as error: + logger.error( + 'Could not post the message with id %s: %s', + msg['Message-Id'].strip(), error) + raise if result.status_code != 200: logger.error("HyperKitty failure on %s: %s (%s)", url, result.text, result.status_code)