fix header handling

This commit is contained in:
2020-11-10 20:08:13 +01:00
parent 1e228c91ba
commit 7b179d197a
2 changed files with 6 additions and 4 deletions

View File

@@ -253,7 +253,7 @@ class ModifyMilter(Milter.Base):
def header(self, name, value): def header(self, name, value):
try: try:
if self.fields_data is not None: if self.fields_bytes is not None:
self.fields_bytes.append( self.fields_bytes.append(
(name.encode("ascii", errors="surrogateescape"), (name.encode("ascii", errors="surrogateescape"),
value.encode("ascii", errors="surrogateescape"))) value.encode("ascii", errors="surrogateescape")))

View File

@@ -280,17 +280,19 @@ def add_disclaimer(text, html, action, policy, milter, pretend=False,
fp = BytesFeedParser(policy=default_policy) fp = BytesFeedParser(policy=default_policy)
for field, value in milter.fields_bytes: for field, value in milter.fields_bytes:
field_lower = field.encode("ascii").lower() decoded_field = field.decode("ascii")
decoded_value = value.decode("ascii")
field_lower = decoded_field.lower()
if not field_lower.startswith("content-") and \ if not field_lower.startswith("content-") and \
field_lower != "mime-version": field_lower != "mime-version":
continue continue
logger.debug( logger.debug(
f"feed content header to message object: " f"feed content header to message object: "
f"{field.encode()}: {value.encode()}") f"{decoded_field}: {decoded_value}")
fp.feed(field + b": " + value + b"\r\n") fp.feed(field + b": " + value + b"\r\n")
fp.feed(b"\r\n") fp.feed(b"\r\n")
logger.debug(f"feed body to message object: {field}: {value}") logger.debug(f"feed body to message object")
fp.feed(milter.body_data.read()) fp.feed(milter.body_data.read())
logger.debug("parse message") logger.debug("parse message")