Group storage and vmail user options at mailserver.storage
Create a nicer option structure that deals with the mail storage and its owner, uid, group and gid. Also includes the directory layout as a property of how mails are stored..
This commit is contained in:
+14
-21
@@ -34,15 +34,6 @@ with (import ./common.nix {
|
||||
let
|
||||
cfg = config.mailserver;
|
||||
|
||||
vmail_user = {
|
||||
name = cfg.vmailUserName;
|
||||
isSystemUser = true;
|
||||
uid = cfg.vmailUID;
|
||||
home = cfg.mailDirectory;
|
||||
createHome = true;
|
||||
group = cfg.vmailGroupName;
|
||||
};
|
||||
|
||||
virtualMailUsersActivationScript =
|
||||
pkgs.writeScript "activate-virtual-mail-users"
|
||||
# bash
|
||||
@@ -57,7 +48,7 @@ let
|
||||
# Create directory to store user sieve scripts if it doesn't exist
|
||||
if (! test -d "${cfg.sieveDirectory}"); then
|
||||
mkdir "${cfg.sieveDirectory}"
|
||||
chown "${cfg.vmailUserName}:${cfg.vmailGroupName}" "${cfg.sieveDirectory}"
|
||||
chown "${cfg.storage.owner}:${cfg.storage.group}" "${cfg.sieveDirectory}"
|
||||
chmod 770 "${cfg.sieveDirectory}"
|
||||
fi
|
||||
|
||||
@@ -69,13 +60,13 @@ let
|
||||
''
|
||||
if (! test -d "${cfg.sieveDirectory}/${name}"); then
|
||||
mkdir -p "${cfg.sieveDirectory}/${name}"
|
||||
chown "${cfg.vmailUserName}:${cfg.vmailGroupName}" "${cfg.sieveDirectory}/${name}"
|
||||
chown "${cfg.storage.owner}:${cfg.storage.group}" "${cfg.sieveDirectory}/${name}"
|
||||
chmod 770 "${cfg.sieveDirectory}/${name}"
|
||||
fi
|
||||
cat << 'EOF' > "${cfg.sieveDirectory}/${name}/default.sieve"
|
||||
${sieveScript}
|
||||
EOF
|
||||
chown "${cfg.vmailUserName}:${cfg.vmailGroupName}" "${cfg.sieveDirectory}/${name}/default.sieve"
|
||||
chown "${cfg.storage.owner}:${cfg.storage.group}" "${cfg.sieveDirectory}/${name}/default.sieve"
|
||||
''
|
||||
else
|
||||
''
|
||||
@@ -113,16 +104,18 @@ in
|
||||
)
|
||||
);
|
||||
|
||||
# set the vmail gid to a specific value
|
||||
users.groups = {
|
||||
"${cfg.vmailGroupName}" = {
|
||||
gid = cfg.vmailUID;
|
||||
};
|
||||
users.groups.${cfg.storage.group} = {
|
||||
inherit (cfg.storage) gid;
|
||||
};
|
||||
|
||||
# define all users
|
||||
users.users = {
|
||||
"${vmail_user.name}" = lib.mkForce vmail_user;
|
||||
users.users.${cfg.storage.owner} = lib.mkForce {
|
||||
inherit (cfg.storage)
|
||||
group
|
||||
uid
|
||||
;
|
||||
name = cfg.storage.owner;
|
||||
isSystemUser = true;
|
||||
home = cfg.storage.path;
|
||||
createHome = true;
|
||||
};
|
||||
|
||||
systemd.services.activate-virtual-mail-users = {
|
||||
|
||||
Reference in New Issue
Block a user