From 6144f7967cdfe88b2e6b1ba4f4264d357e195594 Mon Sep 17 00:00:00 2001 From: Spitap Date: Thu, 12 Jan 2023 11:22:26 +0100 Subject: [PATCH] make use of mailbox_owner --- .gitignore | 3 +++ modoboa_installer/scripts/dovecot.py | 20 +++++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index ba74660..e12944a 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,6 @@ docs/_build/ # PyBuilder target/ + +# PyCharm +.idea/ diff --git a/modoboa_installer/scripts/dovecot.py b/modoboa_installer/scripts/dovecot.py index a1f5988..dfac55a 100644 --- a/modoboa_installer/scripts/dovecot.py +++ b/modoboa_installer/scripts/dovecot.py @@ -30,6 +30,16 @@ class Dovecot(base.Installer): "conf.d/10-master.conf", "conf.d/20-lmtp.conf", "conf.d/10-ssl-keys.try"] with_user = True + def setup_user(self): + """Setup mailbox user.""" + self.mailboxes_owner = self.app_config["mailboxes_owner"] + if self.config.has_option(self.appname, "home_dir"): + self.home_dir = self.config.get(self.appname, "home_dir") + else: + self.home_dir = None + system.create_user(self.mailbox_owner, self.home_dir) + super(Dovecot, self).setup_user() + def get_config_files(self): """Additional config files.""" return self.config_files + [ @@ -58,7 +68,7 @@ class Dovecot(base.Installer): def get_template_context(self): """Additional variables.""" context = super(Dovecot, self).get_template_context() - pw = pwd.getpwnam(self.user) + pw_mailbox = pwd.getpwnam(self.mailboxes_owner) dovecot_package = {"deb": "dovecot-core", "rpm": "dovecot"} ssl_protocol_parameter = "ssl_protocols" if package.backend.get_installed_version(dovecot_package[package.backend.FORMAT]) > "2.3": @@ -79,8 +89,8 @@ class Dovecot(base.Installer): protocols = "" context.update({ "db_driver": self.db_driver, - "mailboxes_owner_uid": pw[2], - "mailboxes_owner_gid": pw[3], + "mailboxes_owner_uid": pw_mailbox[2], + "mailboxes_owner_gid": pw_mailbox[3], "modoboa_user": self.config.get("modoboa", "user"), "modoboa_dbname": self.config.get("modoboa", "dbname"), "modoboa_dbuser": self.config.get("modoboa", "dbuser"), @@ -161,10 +171,10 @@ class Dovecot(base.Installer): shutil.copytree(mail_dir, home_dir) # Resetting permission for vmail for dirpath, dirnames, filenames in os.walk(home_dir): - shutil.chown(dirpath, self.user, self.user) + shutil.chown(dirpath, self.mailboxes_owner, self.mailboxes_owner) for filename in filenames: shutil.chown(os.path.join(dirpath, filename), - self.user, self.user) + self.mailboxes_owner, self.mailboxes_owner) else: utils.printcolor( "It seems that emails were not backed up, skipping restoration.",