improve quarantine milter action

This commit is contained in:
2021-10-04 19:18:03 +02:00
parent 3220fcbf2c
commit c76c9aee11
2 changed files with 7 additions and 2 deletions

View File

@@ -296,6 +296,9 @@ class ModifyMilter(Milter.Base):
f"current template variables: {self.msginfo['vars']}")
if milter_action is not None:
break
elif not self.msginfo["rcpts"]:
milter_action = ("DISCARD", None)
break
if milter_action is None:
self._replacebody()
@@ -303,6 +306,7 @@ class ModifyMilter(Milter.Base):
action, reason = milter_action
if action == "ACCEPT":
self._replacebody()
return Milter.ACCEPT
elif action == "REJECT":
self.setreply("554", "5.7.0", reason)
return Milter.REJECT

View File

@@ -395,7 +395,7 @@ class Quarantine:
self._milter_action = None
if "milter_action" in cfg["args"]:
self._milter_action = cfg["args"]["milter_action"].upper()
assert self._milter_action in ["ACCEPT", "REJECT"], \
assert self._milter_action in ["ACCEPT", "REJECT", "DISCARD"], \
f"invalid milter_action '{cfg['args']['milter_action']}'"
self._reason = None
@@ -513,5 +513,6 @@ class Quarantine:
if self._milter_action is not None:
milter.delrcpt(rcpts)
if not milter.msginfo["rcpts"]:
if self._milter_action in ["ACCEPT", "REJECT"] and \
not milter.msginfo["rcpts"]:
return (self._milter_action, self._reason)