From c39adcbd143f1d07551a1f49089624917b7cb592 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Mon, 5 Oct 2020 09:15:59 +0200 Subject: [PATCH] Added support for Modoboa 1.16 --- .../scripts/files/modoboa/supervisor.tpl | 8 ++++++ .../scripts/files/postfix/main.cf.tpl | 1 + modoboa_installer/scripts/modoboa.py | 28 +++++++++++++++++-- modoboa_installer/scripts/radicale.py | 2 ++ 4 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 modoboa_installer/scripts/files/modoboa/supervisor.tpl diff --git a/modoboa_installer/scripts/files/modoboa/supervisor.tpl b/modoboa_installer/scripts/files/modoboa/supervisor.tpl new file mode 100644 index 0000000..0303a04 --- /dev/null +++ b/modoboa_installer/scripts/files/modoboa/supervisor.tpl @@ -0,0 +1,8 @@ +[program:policyd] +autostart=true +autorestart=true +command=%{venv_path}/bin/python %{home_dir}/instance/manage.py policy_daemon +directory=%{home_dir} +redirect_stderr=true +user=%{user} +numprocs=1 diff --git a/modoboa_installer/scripts/files/postfix/main.cf.tpl b/modoboa_installer/scripts/files/postfix/main.cf.tpl index eb8c01f..6b83357 100644 --- a/modoboa_installer/scripts/files/postfix/main.cf.tpl +++ b/modoboa_installer/scripts/files/postfix/main.cf.tpl @@ -121,6 +121,7 @@ smtpd_sender_login_maps = # Recipient restriction rules smtpd_recipient_restrictions = + check_policy_service inet:127.0.0.1:9999 permit_mynetworks permit_sasl_authenticated check_recipient_access diff --git a/modoboa_installer/scripts/modoboa.py b/modoboa_installer/scripts/modoboa.py index a1e6cb0..04a8c87 100644 --- a/modoboa_installer/scripts/modoboa.py +++ b/modoboa_installer/scripts/modoboa.py @@ -10,6 +10,7 @@ import sys from .. import compatibility_matrix from .. import package from .. import python +from .. import system from .. import utils from . import base @@ -24,11 +25,12 @@ class Modoboa(base.Installer): "deb": [ "build-essential", "python3-dev", "libxml2-dev", "libxslt-dev", "libjpeg-dev", "librrd-dev", "rrdtool", "libffi-dev", "cron", - "libssl-dev" + "libssl-dev", "redis-server", "supervisor" ], "rpm": [ "gcc", "gcc-c++", "python3-devel", "libxml2-devel", "libxslt-devel", "libjpeg-turbo-devel", "rrdtool-devel", "rrdtool", "libffi-devel", + "supervisor", "redis" ] } config_files = [ @@ -182,6 +184,16 @@ class Modoboa(base.Installer): packages += ["openssl-devel"] return packages + def get_config_files(self): + """Return appropriate path.""" + config_files = super().get_config_files() + if package.backend.FORMAT == "deb": + path = "supervisor=/etc/supervisor/conf.d/policyd.conf" + else: + path = "supervisor=/etc/supervisord.d/policyd.ini" + config_files.append(path) + return config_files + def get_template_context(self): """Additional variables.""" context = super(Modoboa, self).get_template_context() @@ -216,7 +228,7 @@ class Modoboa(base.Installer): "modoboa_amavis": { "am_pdp_mode": "inet", }, - "modoboa_stats": { + "maillog": { "rrd_rootdir": rrd_root_dir, }, "modoboa_pdfcredentials": { @@ -231,7 +243,7 @@ class Modoboa(base.Installer): } for path in ["/var/log/maillog", "/var/log/mail.log"]: if os.path.exists(path): - settings["modoboa_stats"]["logfile"] = path + settings["maillog"]["logfile"] = path if self.config.getboolean("opendkim", "enabled"): settings["admin"]["dkim_keys_storage_dir"] = ( self.config.get("opendkim", "keys_storage_dir")) @@ -249,3 +261,13 @@ class Modoboa(base.Installer): self._deploy_instance() if not self.upgrade: self.apply_settings() + + if 'centos' in utils.dist_name(): + supervisor = "supervisord" + system.enable_and_start_service("redis") + else: + supervisor = "supervisor" + # Restart supervisor + system.enable_service(supervisor) + utils.exec_cmd("service {} stop".format(supervisor)) + utils.exec_cmd("service {} start".format(supervisor)) diff --git a/modoboa_installer/scripts/radicale.py b/modoboa_installer/scripts/radicale.py index 3029681..889403f 100644 --- a/modoboa_installer/scripts/radicale.py +++ b/modoboa_installer/scripts/radicale.py @@ -5,6 +5,7 @@ import stat from .. import package from .. import python +from .. import system from .. import utils from . import base @@ -77,5 +78,6 @@ class Radicale(base.Installer): daemon_name = ( "supervisor" if package.backend.FORMAT == "deb" else "supervisord" ) + system.enable_service(daemon_name) utils.exec_cmd("service {} stop".format(daemon_name)) utils.exec_cmd("service {} start".format(daemon_name))