about summary refs log tree commit diff
path: root/modules/services/postfix/restrictions.nix
diff options
context:
space:
mode:
authoraszlig <aszlig@redmoonstudios.org>2015-03-18 00:14:27 +0100
committeraszlig <aszlig@redmoonstudios.org>2015-03-18 00:17:13 +0100
commit6b857eebbafba660cc57b19bd11f6484c91f8fd7 (patch)
tree3432dce53097598149cc64087d908ad35e038437 /modules/services/postfix/restrictions.nix
parentbdb1643acdb75d92f10559be06ea9448461ddf12 (diff)
Integrate Postfix config into module-list.nix.
This currently is just a dummy module for now with a big fat TODO, but
at least we now have a homogenous module namespace starting with
"labernix." and categorized by services/config/tasks/whatnot.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
Diffstat (limited to 'modules/services/postfix/restrictions.nix')
-rw-r--r--modules/services/postfix/restrictions.nix53
1 files changed, 53 insertions, 0 deletions
diff --git a/modules/services/postfix/restrictions.nix b/modules/services/postfix/restrictions.nix
new file mode 100644
index 00000000..fbb47f10
--- /dev/null
+++ b/modules/services/postfix/restrictions.nix
@@ -0,0 +1,53 @@
+{ config, lib, ... }:
+
+with lib;
+
+let
+  mkRestriction = name: specificDescription: {
+    option.${name} = mkOption {
+      default = null;
+      type = types.nullOr types.list;
+      description = ''
+        A list of restrictions to apply or <option>null</option> to use the
+        built-in default value from Postfix.
+        ${specificDescription}
+      '';
+    };
+    config = let
+      cfg = config.labernix.postfix.restrictions.${name};
+    in mkIf (cfg != null) ''
+      smtpd_${name}_restrictions = ${concatStringsSep ", " cfg}
+    '';
+  };
+  restrictions = mapAttrsToList mkRestriction {
+    client = mkRestriction ''
+      SMTP server access restrictions in the context of a client SMTP connection
+      request.
+    '';
+    data = mkRestriction ''
+      Access restrictions that the Postfix SMTP server applies in the context of
+      the SMTP DATA command.
+    '';
+    end_of_data = mkRestriction ''
+      Access restrictions that the Postfix SMTP server applies in the context of
+      the SMTP END-OF-DATA command.
+    '';
+    etrn = mkRestriction ''
+      SMTP server access restrictions in the context of a client ETRN request.
+    '';
+    helo = mkRestriction ''
+      Restrictions that the Postfix SMTP server applies in the context of the
+      SMTP HELO command.
+    '';
+    recipient = mkRestriction ''
+      Access restrictions that the Postfix SMTP server applies in the context of
+      the RCPT TO command.
+    '';
+    sender = mkRestriction ''
+      Restrictions that the Postfix SMTP server applies in the context of the
+      MAIL FROM command.
+    '';
+  };
+in {
+  options.labernix.postfix.restrictions = mapAttrs mkRestriction restrictions;
+}