diff options
author | Peter Simons <simons@cryp.to> | 2019-07-18 19:14:36 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-18 19:14:36 +0200 |
commit | c768e1ff485b1d257bce7a6b289aa97717f2754b (patch) | |
tree | 61818cef124fb36828a892cfab3298f50f13d132 | |
parent | 5d86f9a9ce86be51f20d213a43e96f8694f08169 (diff) | |
parent | 59bacaca3d61d2fe19ea22fa18e493ec7413743e (diff) | |
download | nixpkgs-c768e1ff485b1d257bce7a6b289aa97717f2754b.tar nixpkgs-c768e1ff485b1d257bce7a6b289aa97717f2754b.tar.gz nixpkgs-c768e1ff485b1d257bce7a6b289aa97717f2754b.tar.bz2 nixpkgs-c768e1ff485b1d257bce7a6b289aa97717f2754b.tar.lz nixpkgs-c768e1ff485b1d257bce7a6b289aa97717f2754b.tar.xz nixpkgs-c768e1ff485b1d257bce7a6b289aa97717f2754b.tar.zst nixpkgs-c768e1ff485b1d257bce7a6b289aa97717f2754b.zip |
Merge pull request #64794 from peti/t/postfix-module
nixos: add 'localRecipients' config option for Postfix
-rw-r--r-- | nixos/modules/services/mail/postfix.nix | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/nixos/modules/services/mail/postfix.nix b/nixos/modules/services/mail/postfix.nix index d43733484ff..dab1b29aa4b 100644 --- a/nixos/modules/services/mail/postfix.nix +++ b/nixos/modules/services/mail/postfix.nix @@ -13,6 +13,7 @@ let || cfg.extraAliases != ""; haveTransport = cfg.transport != ""; haveVirtual = cfg.virtual != ""; + haveLocalRecipients = cfg.localRecipients != null; clientAccess = optional (cfg.dnsBlacklistOverrides != "") @@ -244,6 +245,7 @@ let aliasesFile = pkgs.writeText "postfix-aliases" aliases; virtualFile = pkgs.writeText "postfix-virtual" cfg.virtual; + localRecipientMapFile = pkgs.writeText "postfix-local-recipient-map" (concatMapStrings (x: x + " ACCEPT\n") cfg.localRecipients); checkClientAccessFile = pkgs.writeText "postfix-check-client-access" cfg.dnsBlacklistOverrides; mainCfFile = pkgs.writeText "postfix-main.cf" mainCf; masterCfFile = pkgs.writeText "postfix-master.cf" masterCfContent; @@ -506,6 +508,19 @@ in ''; }; + localRecipients = mkOption { + type = with types; nullOr (listOf string); + default = null; + description = '' + List of accepted local users. Specify a bare username, an + <literal>"@domain.tld"</literal> wild-card, or a complete + <literal>"user@domain.tld"</literal> address. If set, these names end + up in the local recipient map -- see the local(8) man-page -- and + effectively replace the system user database lookup that's otherwise + used by default. + ''; + }; + transport = mkOption { default = ""; description = " @@ -742,6 +757,7 @@ in // optionalAttrs haveAliases { alias_maps = [ "${cfg.aliasMapType}:/etc/postfix/aliases" ]; } // optionalAttrs haveTransport { transport_maps = [ "hash:/etc/postfix/transport" ]; } // optionalAttrs haveVirtual { virtual_alias_maps = [ "${cfg.virtualMapType}:/etc/postfix/virtual" ]; } + // optionalAttrs haveLocalRecipients { local_recipient_maps = [ "hash:/etc/postfix/local_recipients" ] ++ optional haveAliases "$alias_maps"; } // optionalAttrs (cfg.dnsBlacklists != []) { smtpd_client_restrictions = clientRestrictions; } // optionalAttrs cfg.useSrs { sender_canonical_maps = [ "tcp:127.0.0.1:10001" ]; @@ -869,6 +885,9 @@ in (mkIf haveVirtual { services.postfix.mapFiles."virtual" = virtualFile; }) + (mkIf haveLocalRecipients { + services.postfix.mapFiles."local_recipients" = localRecipientMapFile; + }) (mkIf cfg.enableHeaderChecks { services.postfix.mapFiles."header_checks" = headerChecksFile; }) |