2016-07-21 18:27:57 +02:00
|
|
|
let
|
|
|
|
domain = "example.com";
|
|
|
|
host_prefix = "mail";
|
|
|
|
login_accounts = [ "user1" "user2" ];
|
|
|
|
vmail_id_start = 5000;
|
|
|
|
vmail_user_name = "vmail";
|
|
|
|
vmail_group_name = "vmail";
|
|
|
|
mail_dir = "/var/vmail";
|
|
|
|
cert_file = "mail-server.crt";
|
|
|
|
key_file = "mail-server.key";
|
|
|
|
in
|
|
|
|
let
|
|
|
|
vmail_user = [{
|
|
|
|
name = vmail_user_name;
|
|
|
|
isNormalUser = false;
|
|
|
|
uid = vmail_id_start;
|
|
|
|
home = mail_dir;
|
|
|
|
createHome = true;
|
|
|
|
group = vmail_group_name;
|
|
|
|
}];
|
|
|
|
accountsToUser = x: {
|
|
|
|
name = x + "@" + domain;
|
|
|
|
isNormalUser = false;
|
|
|
|
group = vmail_group_name;
|
|
|
|
};
|
|
|
|
mail_user = map accountsToUser login_accounts;
|
|
|
|
in
|
|
|
|
{
|
2016-07-21 18:30:32 +02:00
|
|
|
networking.hostName = host_prefix + "." + domain;
|
2016-07-21 18:31:46 +02:00
|
|
|
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
|
|
dovecot opendkim openssh postfix clamav rspamd rmilter
|
|
|
|
];
|
2016-07-21 18:35:29 +02:00
|
|
|
|
|
|
|
# set the vmail gid to a specific value
|
|
|
|
users.groups = {
|
|
|
|
vmail = { gid = vmail_id_start; };
|
2016-07-21 18:36:16 +02:00
|
|
|
};
|
2016-07-21 18:36:51 +02:00
|
|
|
|
|
|
|
# define all users
|
|
|
|
users.extraUsers = vmail_user ++ mail_user;
|
2016-07-21 18:39:10 +02:00
|
|
|
|
|
|
|
# postfix
|
|
|
|
services.postfix = {
|
|
|
|
enable = true;
|
|
|
|
networksStyle = "host";
|
|
|
|
};
|
2016-07-21 18:27:57 +02:00
|
|
|
}
|