summaryrefslogtreecommitdiff
path: root/os/srv/mailserver.nix
blob: 7bcd0081c3ce14c2b19c9a90e2fc884384e90c47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
{
  config,
  lib,
  inputs,
  masterDomain,
  ...
}:
let
  cfg = config.os.srv.mailserver;
in
{
  options.os.srv.mailserver.enable = lib.mkEnableOption "enables mailserver scanning";
  imports = [ inputs.nixos-mailserver.nixosModules.mailserver ];
  config = lib.mkIf cfg.enable {
    assertions = [
      {
        assertion = config.os.srv.sops.enable;
        message = "Required for password secure password storing";
      }
      {
        assertion = config.os.srv.lldap.enable;
        message = "required for user accounts";
      }
    ];
    mailserver = {
      enable = true;
      fqdn = "mail.${masterDomain}";
      domains = [ masterDomain ];

      # TODO setup ldap
      ldap = {
        enable = true;
        uris = [ "ldap://127.0.0.1:3890" ];
        base = "ou=people,dc=yourdomain,dc=com";

        bind = {
          dn = "uid=mail-service,ou=people,dc=yourdomain,dc=com";
          passwordFile = "/var/src/secrets/ldap-mail-password";
        };

        attributes = {
          username = "uid";
          mail = "mail";
          password = "userPassword";
          uuid = "entryUUID";
        };

        dovecot = {
          userFilter = "(|(mail=%{user})(uid=%{user}))";
          passFilter = "(uid=%{user})";
        };

        postfix = {
          filter = "(mail=%s)";
        };
      };
    };
  };
}