rename ModifyMilter to QuarantineMilter

This commit is contained in:
2021-10-05 15:46:36 +02:00
parent 5a1e173771
commit 3f5face79e
3 changed files with 14 additions and 13 deletions

View File

@@ -25,7 +25,7 @@ __all__ = [
"run", "run",
"storage", "storage",
"whitelist", "whitelist",
"ModifyMilter"] "QuarantineMilter"]
__version__ = "2.0.0" __version__ = "2.0.0"
@@ -49,8 +49,9 @@ from pyquarantine.base import replace_illegal_chars
from pyquarantine.rule import Rule from pyquarantine.rule import Rule
class ModifyMilter(Milter.Base): class QuarantineMilter(Milter.Base):
"""ModifyMilter based on Milter.Base to implement milter communication""" """QuarantineMilter based on Milter.Base to implement
milter communication"""
_rules = [] _rules = []
_loglevel = logging.INFO _loglevel = logging.INFO
@@ -59,7 +60,7 @@ class ModifyMilter(Milter.Base):
@staticmethod @staticmethod
def set_config(cfg, debug): def set_config(cfg, debug):
ModifyMilter._loglevel = cfg.get_loglevel(debug) QuarantineMilter._loglevel = cfg.get_loglevel(debug)
try: try:
local_addrs = [] local_addrs = []
@@ -69,15 +70,15 @@ class ModifyMilter(Milter.Base):
raise RuntimeError(e) raise RuntimeError(e)
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
logger.setLevel(ModifyMilter._loglevel) logger.setLevel(QuarantineMilter._loglevel)
for idx, rule_cfg in enumerate(cfg["rules"]): for idx, rule_cfg in enumerate(cfg["rules"]):
rule = Rule(rule_cfg, local_addrs, debug) rule = Rule(rule_cfg, local_addrs, debug)
logger.debug(rule) logger.debug(rule)
ModifyMilter._rules.append(rule) QuarantineMilter._rules.append(rule)
def __init__(self): def __init__(self):
self.logger = logging.getLogger(__name__) self.logger = logging.getLogger(__name__)
self.logger.setLevel(ModifyMilter._loglevel) self.logger.setLevel(QuarantineMilter._loglevel)
def addheader(self, field, value, idx=-1): def addheader(self, field, value, idx=-1):
value = replace_illegal_chars(Header(s=value).encode()) value = replace_illegal_chars(Header(s=value).encode())
@@ -152,7 +153,7 @@ class ModifyMilter(Milter.Base):
# also check if the mail body is needed by any upcoming action. # also check if the mail body is needed by any upcoming action.
self.rules = [] self.rules = []
self._headersonly = True self._headersonly = True
for rule in ModifyMilter._rules: for rule in QuarantineMilter._rules:
if rule.conditions is None or \ if rule.conditions is None or \
rule.conditions.match_host(self.IP): rule.conditions.match_host(self.IP):
actions = [] actions = []
@@ -231,7 +232,7 @@ class ModifyMilter(Milter.Base):
try: try:
# remove CR and LF from address fields, otherwise pythons # remove CR and LF from address fields, otherwise pythons
# email library throws an exception # email library throws an exception
if field.lower() in ModifyMilter._addr_fields: if field.lower() in QuarantineMilter._addr_fields:
try: try:
v = str(make_header(decode_header(value))) v = str(make_header(decode_header(value)))
except Exception as e: except Exception as e:

View File

@@ -21,7 +21,7 @@ import logging.handlers
import sys import sys
from pyquarantine import mailer from pyquarantine import mailer
from pyquarantine import ModifyMilter from pyquarantine import QuarantineMilter
from pyquarantine import __version__ as version from pyquarantine import __version__ as version
from pyquarantine.config import get_milter_config from pyquarantine.config import get_milter_config
@@ -101,7 +101,7 @@ def main():
if not rule["actions"]: if not rule["actions"]:
raise RuntimeError( raise RuntimeError(
f"{rule['name']}: no actions configured") f"{rule['name']}: no actions configured")
ModifyMilter.set_config(cfg, args.debug) QuarantineMilter.set_config(cfg, args.debug)
except (RuntimeError, AssertionError) as e: except (RuntimeError, AssertionError) as e:
logger.error(f"config error: {e}") logger.error(f"config error: {e}")
@@ -126,7 +126,7 @@ def main():
logger.info("milter starting") logger.info("milter starting")
# register milter factory class # register milter factory class
Milter.factory = ModifyMilter Milter.factory = QuarantineMilter
Milter.set_exception_policy(Milter.TEMPFAIL) Milter.set_exception_policy(Milter.TEMPFAIL)
if args.debug: if args.debug: