From 06d73731d699a1ce27c7fbdccc967839e4101f26 Mon Sep 17 00:00:00 2001 From: Max Erenberg Date: Sat, 4 Sep 2021 18:11:36 +0000 Subject: [PATCH] add config file --- csc_milter/main.py | 27 ++++++++++++--------------- debian/changelog | 6 ++++++ debian/control | 3 ++- debian/csc-milter.install | 1 + debian/rules | 9 ++++++++- etc/csc/csc_milter.ini | 3 +++ setup.py | 2 +- 7 files changed, 33 insertions(+), 18 deletions(-) create mode 100644 debian/csc-milter.install create mode 100644 etc/csc/csc_milter.ini diff --git a/csc_milter/main.py b/csc_milter/main.py index 80fb007..6159512 100644 --- a/csc_milter/main.py +++ b/csc_milter/main.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -import argparse +from configparser import ConfigParser from email.utils import parseaddr import ipaddress import logging @@ -13,6 +13,7 @@ import Milter SOCKETPATH = "/run/csc-milter/csc-milter.sock" +CONFIG_PATH = '/etc/csc/csc_milter.ini' TIMEOUT = 5 MYORIGIN = '' MYNETWORKS = [] @@ -109,7 +110,7 @@ def get_postconf(param): shell=True, capture_output=True, check=True ) value = proc.stdout.decode().strip() - logger.debug(f'Retrieved from postconf: {param} = {value}') + logger.debug(f'retrieved from postconf: {param} = {value}') return value @@ -120,20 +121,15 @@ def main(): check_postfix_user() - parser = argparse.ArgumentParser(description='Custom milter for CSC.') - parser.add_argument('--myorigin', help='domain name for locally-posted mail') - parser.add_argument('--mynetworks', help='space-separated list of trusted subnets') - args = parser.parse_args() + MYORIGIN = get_postconf('myorigin') - if args.myorigin is not None: - MYORIGIN = args.myorigin - else: - MYORIGIN = get_postconf('myorigin') - if args.mynetworks is not None: - networks = args.mynetworks.split() - else: - networks_str = get_postconf('mynetworks').replace(',', ' ') - networks = networks_str.split() + networks_str = get_postconf('mynetworks').replace(',', ' ') + networks = networks_str.split() + if os.path.isfile(CONFIG_PATH): + config = ConfigParser() + config.read_file(open(CONFIG_PATH)) + if 'additional_subnets' in config['main']: + networks += config['main']['additional_subnets'].split(',') MYNETWORKS = [ ipaddress.ip_network( s.replace('[', '') @@ -142,6 +138,7 @@ def main(): ) for s in networks ] + logger.debug('trusted subnets: %s' % MYNETWORKS) re_myorigin = MYORIGIN.replace('.', r'\.') RECEIVED_REGEX = re.compile(rf"\bby ([\w-]+\.)?{re_myorigin}\b") diff --git a/debian/changelog b/debian/changelog index 283f113..96ec2d7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +csc-milter (0.2.1-1) buster; urgency=medium + + * Add config file. + + -- Max Erenberg Sat, 04 Sep 2021 17:29:00 +0000 + csc-milter (0.2.0-1) buster; urgency=medium * Add check for Received: header. diff --git a/debian/control b/debian/control index cea326e..1468403 100644 --- a/debian/control +++ b/debian/control @@ -2,8 +2,9 @@ Source: csc-milter Maintainer: Systems Committee Section: mail Priority: optional -Standards-Version: 3.9.2 +Standards-Version: 4.3.0 Build-Depends: debhelper (>=9), + debhelper (>= 9.20160709) | dh-systemd, dh-python, python3-setuptools, python3-all diff --git a/debian/csc-milter.install b/debian/csc-milter.install new file mode 100644 index 0000000..8098ab4 --- /dev/null +++ b/debian/csc-milter.install @@ -0,0 +1 @@ +etc/csc/csc_milter.ini diff --git a/debian/rules b/debian/rules index b2bb059..2f71c73 100755 --- a/debian/rules +++ b/debian/rules @@ -1,6 +1,13 @@ #!/usr/bin/make -f +NAME=csc-milter export PYBUILD_NAME=csc-milter %: - dh $@ --with python3 --buildsystem=pybuild + dh $@ --with python3,systemd --buildsystem=pybuild + +override_dh_systemd_enable: + dh_systemd_enable --no-enable $(NAME).service + +override_dh_systemd_start: + dh_systemd_start --no-start $(NAME).service diff --git a/etc/csc/csc_milter.ini b/etc/csc/csc_milter.ini new file mode 100644 index 0000000..a43419e --- /dev/null +++ b/etc/csc/csc_milter.ini @@ -0,0 +1,3 @@ +[main] +# trust all IP addresses in AS12093 +additional_subnets = 129.97.0.0/16, 2620:101:f000::/47 diff --git a/setup.py b/setup.py index e545718..fe28f39 100644 --- a/setup.py +++ b/setup.py @@ -16,7 +16,7 @@ class PyTest(TestCommand): setup( name='csc-milter', - version='0.2.0', + version='0.2.1', description='Custom milter for CSC', long_description=long_description, long_description_content_type='text/markdown',