summaryrefslogtreecommitdiffstats
path: root/mail-server
diff options
context:
space:
mode:
authorAntoine Eiche <lewo@abesis.fr>2020-09-28 20:50:45 +0200
committerAntoine Eiche <lewo@abesis.fr>2020-09-28 20:50:45 +0200
commit24600377afa853cb31654b1987530bbf2f0add79 (patch)
treeee15699ba36e7257043675a3aabe0c072d8ed510 /mail-server
parent5cd6f8e7b3f5d5bf56e407c5e79a682cb250d911 (diff)
Add `forwards` option
This option allow to forward mails to external addresses.
Diffstat (limited to 'mail-server')
-rw-r--r--mail-server/postfix.nix22
1 files changed, 12 insertions, 10 deletions
diff --git a/mail-server/postfix.nix b/mail-server/postfix.nix
index f41bd38..77256df 100644
--- a/mail-server/postfix.nix
+++ b/mail-server/postfix.nix
@@ -37,15 +37,7 @@ let
cfg.loginAccounts);
# extra_valiases_postfix :: [ String ]
- extra_valiases_postfix =
- (map
- (from:
- let to = cfg.extraVirtualAliases.${from};
- aliasList = (l: let aliasStr = builtins.foldl' (x: y: x + y + ", ") "" l;
- in builtins.substring 0 (builtins.stringLength aliasStr - 2) aliasStr);
- in if (builtins.isList to) then "${from} " + (aliasList to)
- else "${from} ${to}")
- (builtins.attrNames cfg.extraVirtualAliases));
+ extra_valiases_postfix = attrsToAliasList cfg.extraVirtualAliases;
# all_valiases_postfix :: [ String ]
all_valiases_postfix = valiases_postfix ++ extra_valiases_postfix;
@@ -56,6 +48,16 @@ let
(lib.filter (acct: acct.sendOnly) (lib.attrValues cfg.loginAccounts)));
denied_recipients_file = builtins.toFile "denied_recipients" (lib.concatStringsSep "\n" denied_recipients_postfix);
+ # attrsToAliasList :: Map String (Either String [ String ]) -> [ String ]
+ attrsToAliasList = aliases:
+ let
+ toList = to: if builtins.isList to then to else [to];
+ in lib.mapAttrsToList
+ (from: to: "${from} " + (lib.concatStringsSep ", " (toList to)))
+ aliases;
+
+ # forwards :: [ String ]
+ forwards = attrsToAliasList cfg.forwards;
# valiases_file :: Path
valiases_file = builtins.toFile "valias"
@@ -136,7 +138,7 @@ in
sslKey = keyPath;
enableSubmission = true;
virtual =
- (lib.concatStringsSep "\n" (all_valiases_postfix ++ catchAllPostfix));
+ (lib.concatStringsSep "\n" (all_valiases_postfix ++ catchAllPostfix ++ forwards));
config = {
# Extra Config