rename ModifyMilter to QuarantineMilter
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -273,7 +273,7 @@ class FileMailStorage(BaseMailStorage):
|
|||||||
if "subgroups" in metadata:
|
if "subgroups" in metadata:
|
||||||
del metadata["subgroups"]
|
del metadata["subgroups"]
|
||||||
converted = True
|
converted = True
|
||||||
if converted:
|
if converted:
|
||||||
self._save_metafile(metafile, metadata)
|
self._save_metafile(metafile, metadata)
|
||||||
|
|
||||||
return metadata
|
return metadata
|
||||||
|
|||||||
Reference in New Issue
Block a user