4 Commits
2.0.5 ... 2.0.7

View File

@@ -27,7 +27,7 @@ __all__ = [
"whitelist", "whitelist",
"QuarantineMilter"] "QuarantineMilter"]
__version__ = "2.0.5" __version__ = "2.0.7"
from pyquarantine import _runtime_patches from pyquarantine import _runtime_patches
@@ -100,7 +100,7 @@ class QuarantineMilter(Milter.Base):
self.logger.warning(f"unable to serialize message as bytes: {e}") self.logger.warning(f"unable to serialize message as bytes: {e}")
try: try:
self.logger.warning("try to serialize as str and encode") self.logger.warning("try to serialize as str and encode")
data = self.msg.as_string().encode(errors="replace") data = self.msg.as_string().encode("ascii", errors="replace")
except Exception as e: except Exception as e:
self.logger.error( self.logger.error(
f"unable to serialize message, giving up: {e}") f"unable to serialize message, giving up: {e}")
@@ -261,7 +261,11 @@ class QuarantineMilter(Milter.Base):
v = v.replace("\r", "").replace("\n", "") v = v.replace("\r", "").replace("\n", "")
value = Header(s=v).encode() value = Header(s=v).encode()
self.fp.write(field.encode() + b": " + value.encode() + b"\r\n") # remove surrogates
field = field.encode("ascii", errors="replace")
value = value.encode("ascii", errors="replace")
self.fp.write(field + b": " + value + b"\r\n")
except Exception as e: except Exception as e:
self.logger.exception( self.logger.exception(
f"an exception occured in header method: {e}") f"an exception occured in header method: {e}")