make use of mailbox_owner
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -55,3 +55,6 @@ docs/_build/
|
|||||||
|
|
||||||
# PyBuilder
|
# PyBuilder
|
||||||
target/
|
target/
|
||||||
|
|
||||||
|
# PyCharm
|
||||||
|
.idea/
|
||||||
|
|||||||
@@ -30,6 +30,16 @@ class Dovecot(base.Installer):
|
|||||||
"conf.d/10-master.conf", "conf.d/20-lmtp.conf", "conf.d/10-ssl-keys.try"]
|
"conf.d/10-master.conf", "conf.d/20-lmtp.conf", "conf.d/10-ssl-keys.try"]
|
||||||
with_user = True
|
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):
|
def get_config_files(self):
|
||||||
"""Additional config files."""
|
"""Additional config files."""
|
||||||
return self.config_files + [
|
return self.config_files + [
|
||||||
@@ -58,7 +68,7 @@ class Dovecot(base.Installer):
|
|||||||
def get_template_context(self):
|
def get_template_context(self):
|
||||||
"""Additional variables."""
|
"""Additional variables."""
|
||||||
context = super(Dovecot, self).get_template_context()
|
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"}
|
dovecot_package = {"deb": "dovecot-core", "rpm": "dovecot"}
|
||||||
ssl_protocol_parameter = "ssl_protocols"
|
ssl_protocol_parameter = "ssl_protocols"
|
||||||
if package.backend.get_installed_version(dovecot_package[package.backend.FORMAT]) > "2.3":
|
if package.backend.get_installed_version(dovecot_package[package.backend.FORMAT]) > "2.3":
|
||||||
@@ -79,8 +89,8 @@ class Dovecot(base.Installer):
|
|||||||
protocols = ""
|
protocols = ""
|
||||||
context.update({
|
context.update({
|
||||||
"db_driver": self.db_driver,
|
"db_driver": self.db_driver,
|
||||||
"mailboxes_owner_uid": pw[2],
|
"mailboxes_owner_uid": pw_mailbox[2],
|
||||||
"mailboxes_owner_gid": pw[3],
|
"mailboxes_owner_gid": pw_mailbox[3],
|
||||||
"modoboa_user": self.config.get("modoboa", "user"),
|
"modoboa_user": self.config.get("modoboa", "user"),
|
||||||
"modoboa_dbname": self.config.get("modoboa", "dbname"),
|
"modoboa_dbname": self.config.get("modoboa", "dbname"),
|
||||||
"modoboa_dbuser": self.config.get("modoboa", "dbuser"),
|
"modoboa_dbuser": self.config.get("modoboa", "dbuser"),
|
||||||
@@ -161,10 +171,10 @@ class Dovecot(base.Installer):
|
|||||||
shutil.copytree(mail_dir, home_dir)
|
shutil.copytree(mail_dir, home_dir)
|
||||||
# Resetting permission for vmail
|
# Resetting permission for vmail
|
||||||
for dirpath, dirnames, filenames in os.walk(home_dir):
|
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:
|
for filename in filenames:
|
||||||
shutil.chown(os.path.join(dirpath, filename),
|
shutil.chown(os.path.join(dirpath, filename),
|
||||||
self.user, self.user)
|
self.mailboxes_owner, self.mailboxes_owner)
|
||||||
else:
|
else:
|
||||||
utils.printcolor(
|
utils.printcolor(
|
||||||
"It seems that emails were not backed up, skipping restoration.",
|
"It seems that emails were not backed up, skipping restoration.",
|
||||||
|
|||||||
Reference in New Issue
Block a user