diff --git a/pymodmilter/__init__.py b/pymodmilter/__init__.py index 42d68c2..a6f9128 100644 --- a/pymodmilter/__init__.py +++ b/pymodmilter/__init__.py @@ -279,8 +279,8 @@ class ModifyMilter(Milter.Base): def header(self, field, value): try: # remove surrogates - field = field.encode("ascii", errors="replace") - value = value.encode("ascii", errors="replace") + field = field.encode("ascii", errors="surrogateescape") + value = value.encode("ascii", errors="surrogateescape") self._fp.feed(field + b": " + value + b"\r\n") except Exception as e: diff --git a/pymodmilter/base.py b/pymodmilter/base.py index d099967..4eb91ae 100644 --- a/pymodmilter/base.py +++ b/pymodmilter/base.py @@ -136,8 +136,5 @@ class MilterMessage(MIMEPart): def replace_illegal_chars(string): - """Replace illegal characters in header values.""" - return string.replace( - "\x00", "").replace( - "\r", "").replace( - "\n", "") + """Remove illegal characters from header values.""" + return "".join(string.replace("\x00", "").splitlines())