]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - modules/private/websites/tools/mail/mta-sts.nix
Follow recommendations for mta-sts formatting
[perso/Immae/Config/Nix.git] / modules / private / websites / tools / mail / mta-sts.nix
index bedefdaf8643b0c63b14ec445f8704f21cc442c3..c5f71f03b616de1aec47333751a9799ffffeb350 100644 (file)
@@ -1,4 +1,4 @@
-{ lib, pkgs, config, myconfig,  ... }:
+{ lib, pkgs, config,  ... }:
 let
   domains = (lib.remove null (lib.flatten (map
     (zone: map
@@ -11,45 +11,48 @@ let
       )
       (zone.withEmail or [])
     )
-    myconfig.env.dns.masterZones
+    config.myEnv.dns.masterZones
   )));
+  mxes = lib.mapAttrsToList
+    (n: v: v.mx.subdomain)
+    (lib.attrsets.filterAttrs (n: v: v.mx.enable) config.myEnv.servers);
   # FIXME: increase the id number in modules/private/dns.nix when this
   # file change (date -u +'%Y%m%d%H%M%S'Z)
-  file = domain: pkgs.writeText "mta-sts-${domain.domain}.txt" ''
-    version: STSv1
-    mode: testing
-    mx: mx-1.${domain.mail}
-    mx: mx-2.${domain.mail}
-    max_age: 604800
-    '';
+  file = domain: pkgs.writeText "mta-sts-${domain.domain}.txt" (
+    builtins.concatStringsSep "\r\n" ([ "version: STSv1" "mode: testing" ]
+    ++ (map (v: "mx: ${v}.${domain.mail}") mxes)
+    ++ [ "max_age: 604800" ]
+    ));
   root = pkgs.runCommand "mta-sts_root" {} ''
     mkdir -p $out
     ${builtins.concatStringsSep "\n" (map (d:
       "cp ${file d} $out/${d.domain}.txt"
     ) domains)}
     '';
+  cfg = config.myServices.websites.tools.email;
 in
 {
-  config.myServices.websites.webappDirs = {
-    _mta-sts = root;
-  };
+  config = lib.mkIf cfg.enable {
+    services.websites.webappDirs = {
+      _mta-sts = root;
+    };
 
-  config.services.websites.env.tools.vhostConfs.mta_sts = {
-    certName   = "mail";
-    addToCerts = true;
-    hosts = ["mta-sts.mail.immae.eu"] ++ map (v: "mta-sts.${v.domain}") domains;
-    root = "/run/current-system/webapps/_mta-sts";
-    extraConfig = [
-      ''
-        RewriteEngine on
-        RewriteCond %{HTTP_HOST} ^mta-sts.(.*)$
-        RewriteRule ^/.well-known/mta-sts.txt$ %{DOCUMENT_ROOT}/%1.txt [L]
-        <Directory /run/current-system/webapps/_mta-sts>
-          Require all granted
-          Options -Indexes
-        </Directory>
-      ''
-    ];
+    services.websites.env.tools.vhostConfs.mta_sts = {
+      certName   = "mail";
+      addToCerts = true;
+      hosts = ["mta-sts.mail.immae.eu"] ++ map (v: "mta-sts.${v.domain}") domains;
+      root = "/run/current-system/webapps/_mta-sts";
+      extraConfig = [
+        ''
+          RewriteEngine on
+          RewriteCond %{HTTP_HOST} ^mta-sts.(.*)$
+          RewriteRule ^/.well-known/mta-sts.txt$ %{DOCUMENT_ROOT}/%1.txt [L]
+          <Directory /run/current-system/webapps/_mta-sts>
+            Require all granted
+            Options -Indexes
+          </Directory>
+        ''
+      ];
+    };
   };
-
 }