make use of pymilters new decode strategies
This commit is contained in:
@@ -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("ascii", errors="replace")
|
data = self.msg.as_string().encode(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}")
|
||||||
@@ -208,6 +208,7 @@ class QuarantineMilter(Milter.Base):
|
|||||||
|
|
||||||
return Milter.CONTINUE
|
return Milter.CONTINUE
|
||||||
|
|
||||||
|
@Milter.decode("replace")
|
||||||
def envfrom(self, mailfrom, *str):
|
def envfrom(self, mailfrom, *str):
|
||||||
try:
|
try:
|
||||||
self.mailfrom = "@".join(parse_addr(mailfrom)).lower()
|
self.mailfrom = "@".join(parse_addr(mailfrom)).lower()
|
||||||
@@ -219,6 +220,7 @@ class QuarantineMilter(Milter.Base):
|
|||||||
|
|
||||||
return Milter.CONTINUE
|
return Milter.CONTINUE
|
||||||
|
|
||||||
|
@Milter.decode("replace")
|
||||||
def envrcpt(self, to, *str):
|
def envrcpt(self, to, *str):
|
||||||
try:
|
try:
|
||||||
self.rcpts.add("@".join(parse_addr(to)).lower())
|
self.rcpts.add("@".join(parse_addr(to)).lower())
|
||||||
@@ -243,6 +245,7 @@ class QuarantineMilter(Milter.Base):
|
|||||||
|
|
||||||
return Milter.CONTINUE
|
return Milter.CONTINUE
|
||||||
|
|
||||||
|
@Milter.decode("replace")
|
||||||
def header(self, field, value):
|
def header(self, field, value):
|
||||||
try:
|
try:
|
||||||
# remove CR and LF from address fields, otherwise pythons
|
# remove CR and LF from address fields, otherwise pythons
|
||||||
@@ -258,11 +261,7 @@ 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()
|
||||||
|
|
||||||
# remove surrogates
|
self.fp.write(field.encode() + b": " + value.encode() + b"\r\n")
|
||||||
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}")
|
||||||
|
|||||||
Reference in New Issue
Block a user