]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - modules/private/mail/relay.nix
Postfix common aliases
[perso/Immae/Config/Nix.git] / modules / private / mail / relay.nix
index fe16123dd4da7077dd8586e1c36a5c06d71bcda1..add9c8ca8417aaacf21100aca9a7ff801b2cc4b3 100644 (file)
@@ -1,4 +1,16 @@
 { lib, pkgs, config, nodes, name, ... }:
+let all_domains = config.myEnv.mail.postfix.additional_mailbox_domains
+      ++ lib.remove null (lib.flatten (map
+      (zone: map
+        (e: if e.receive
+        then "${e.domain}${lib.optionalString (e.domain != "") "."}${zone.name}"
+        else null
+        )
+        (zone.withEmail or [])
+      )
+      config.myEnv.dns.masterZones
+    ));
+in
 {
   config = lib.mkIf config.myServices.mailBackup.enable {
     security.acme.certs."mail" = config.myServices.certificates.certConfig // {
           virtual = let
             cfg = config.myEnv.monitoring.email_check.eldiron;
             address = "${cfg.mail_address}@${cfg.mail_domain}";
+            aliases = config.myEnv.mail.postfix.common_aliases;
           in pkgs.writeText "postfix-virtual" (
             builtins.concatStringsSep "\n" (
-              ["${address} 1"] ++
+              [ "${address} 1"
+              ] ++
+              map (a: "${a} 1") config.myEnv.mail.postfix.other_aliases ++
               lib.attrsets.mapAttrsToList (
                 n: v: lib.optionalString v.external ''
                   script_${n}@mail.immae.eu 1
                 ''
               ) config.myEnv.mail.scripts
+              ++ lib.lists.flatten (map (domain: map (alias: "${alias}@${domain} 1") aliases) all_domains)
             )
           );
         };