From be715d8b01f8756cb0466b04e24ac21bad348aa0 Mon Sep 17 00:00:00 2001 From: Thomas Oettli Date: Tue, 7 Sep 2021 23:03:50 +0200 Subject: [PATCH] make store procedure aware of pretend option --- pymodmilter/__init__.py | 2 +- pymodmilter/actions.py | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/pymodmilter/__init__.py b/pymodmilter/__init__.py index 2eeab12..f24f459 100644 --- a/pymodmilter/__init__.py +++ b/pymodmilter/__init__.py @@ -243,7 +243,6 @@ class ModifyMilter(Milter.Base): # pre-filter rules and actions by the host condition, other # conditions (headers, envelope-from, envelope-to) may get # changed by executed actions later on. - # rules are copied to preserve the originally configured actions. # also check if the mail body is needed by any upcoming action. self.rules = [] @@ -260,6 +259,7 @@ class ModifyMilter(Milter.Base): self._headersonly = False if actions: + # copy needed rules to preserve configured actions rule = copy(rule) rule.actions = actions self.rules.append(rule) diff --git a/pymodmilter/actions.py b/pymodmilter/actions.py index a985434..3a0b625 100644 --- a/pymodmilter/actions.py +++ b/pymodmilter/actions.py @@ -324,15 +324,17 @@ def store(milter, directory, original=False, pretend=False, datafile = os.path.join(directory, store_id) logger.info(f"store message in file {datafile}") - try: - with open(datafile, "wb") as fp: - if original: - milter.fp.seek(0) - fp.write(milter.fp.read()) - else: - fp.write(milter.msg.as_bytes()) - except IOError as e: - raise RuntimeError(f"unable to store message: {e}") + + if not pretend: + try: + with open(datafile, "wb") as fp: + if original: + milter.fp.seek(0) + fp.write(milter.fp.read()) + else: + fp.write(milter.msg.as_bytes()) + except IOError as e: + raise RuntimeError(f"unable to store message: {e}") class ActionConfig(BaseConfig):