From 6333a0913ddf01f298a725e691a184b27e9d2031 Mon Sep 17 00:00:00 2001 From: Thomas Oettli Date: Tue, 21 Sep 2021 00:55:54 +0200 Subject: [PATCH] add delrcpt --- pymodmilter/__init__.py | 9 +++++++++ pymodmilter/storage.py | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/pymodmilter/__init__.py b/pymodmilter/__init__.py index 8d38044..c0596ca 100644 --- a/pymodmilter/__init__.py +++ b/pymodmilter/__init__.py @@ -192,6 +192,15 @@ class ModifyMilter(Milter.Base): def replacebody(self): self._replacebody = True + def delrcpt(self, rcpts): + "Remove recipient. May be called from eom callback only." + if not isinstance(rcpts, list): + rcpts = [rcpts] + for rcpt in rcpts: + self.logger.debug(f"delrcpt: {rcpt}") + self.msginfo["rcpts"].remove(rcpt) + super().delrcpt(rcpt) + def connect(self, IPname, family, hostaddr): try: if hostaddr is None: diff --git a/pymodmilter/storage.py b/pymodmilter/storage.py index 3dd52f9..fc6d0f0 100644 --- a/pymodmilter/storage.py +++ b/pymodmilter/storage.py @@ -301,7 +301,8 @@ class Quarantine: custom_logger = CustomLogger( self.notification_logger, {"name": self.notification_name}) self.notification.execute(milter, pretend, custom_logger) - milter.msginfo["rcpts"] = [] + + milter.delrcpt(milter.msginfo["rcpts"].copy()) if self.milter_action is not None: return (self.milter_action, self.reject_reason)