diff --git a/default.nix b/default.nix index 0aa69fb..2bef03a 100644 --- a/default.nix +++ b/default.nix @@ -649,7 +649,7 @@ in ''; }; - extraVirtualAliases = mkOption { + aliases = mkOption { type = let loginAccount = mkOptionType { @@ -660,7 +660,6 @@ in with types; attrsOf (either loginAccount (nonEmptyListOf loginAccount)); example = { - "info@example.com" = "user1@example.com"; "postmaster@example.com" = "user1@example.com"; "abuse@example.com" = "user1@example.com"; "multi@example.com" = [ @@ -669,15 +668,14 @@ in ]; }; description = '' - Virtual Aliases. A virtual alias `"info@example.com" = "user1@example.com"` means that - all mail to `info@example.com` is forwarded to `user1@example.com`. Note - that it is expected that `postmaster@example.com` and `abuse@example.com` is - forwarded to some valid email address. (Alternatively you can create login - accounts for `postmaster` and (or) `abuse`). Furthermore, it also allows - the user `user1@example.com` to send emails as `info@example.com`. - It's also possible to create an alias for multiple accounts. In this - example all mails for `multi@example.com` will be forwarded to both - `user1@example.com` and `user2@example.com`. + Aliases are additional mail addresses routed to one or more existing local accounts. + + The target accounts are allowed to use the alias as the sender address. + + :::{note} + This feature is limited to local accounts and does not support LDAP or + other external accounts. + ::: ''; default = { }; }; @@ -692,7 +690,7 @@ in the value `{ "user@example.com" = "user@elsewhere.com"; }` means that mails to `user@example.com` are forwarded to `user@elsewhere.com`. The difference with the - {option}`mailserver.extraVirtualAliases` option is that `user@elsewhere.com` + {option}`mailserver.aliases` option is that `user@elsewhere.com` can't send mail as `user@example.com`. Also, this option allows to forward mails to external addresses. ''; @@ -1681,5 +1679,6 @@ in [ "mailserver" "ldap" "postfix" "mailAttribute" ] [ "mailserver" "ldap" "attributes" "mail" ] ) + (mkRenamedOptionModule [ "mailserver" "extraVirtualAliases" ] [ "mailserver" "aliases" ]) ]; } diff --git a/docs/ldap.rst b/docs/ldap.rst index d65ccfd..41b61ba 100644 --- a/docs/ldap.rst +++ b/docs/ldap.rst @@ -68,9 +68,9 @@ complicate the setup significantly. - Use of ``homeDirectory``, ``uid``, ``gid`` LDAP attributes (we are committed to a virtual setup with one vmail user/uid/gid and UUID based home directories) -- Declarative aliases through :option:`mailserver.extraVirtualAliases`. These - are limited to local accounts, because Postfix enforces sender ownership based - on login identity and does not consult virtual aliases for authorization. +- Declarative aliases through :option:`mailserver.aliases`. These are limited + to local accounts, because Postfix enforces sender ownership based on login + identity and does not consult virtual aliases for authorization. Enabling LDAP support ~~~~~~~~~~~~~~~~~~~~~ diff --git a/mail-server/postfix.nix b/mail-server/postfix.nix index 05794ac..70ae68e 100644 --- a/mail-server/postfix.nix +++ b/mail-server/postfix.nix @@ -94,7 +94,7 @@ let mergeLookupTables lookupTables; # extra_valiases_postfix :: Map String [String] - extra_valiases_postfix = attrsToLookupTable cfg.extraVirtualAliases; + extra_valiases_postfix = attrsToLookupTable cfg.aliases; # forwards :: Map String [String] forwards = attrsToLookupTable cfg.forwards; diff --git a/tests/external.nix b/tests/external.nix index fd2c267..a149144 100644 --- a/tests/external.nix +++ b/tests/external.nix @@ -85,7 +85,7 @@ }; }; - extraVirtualAliases = { + aliases = { "single-alias@example.com" = "user1@example.com"; "multi-alias@example.com" = [ "user1@example.com" @@ -494,7 +494,7 @@ # if this succeeds, it means that user1 received the mail that was intended for chuck. client.fail("fetchmail --nosslcertck -v") - with subtest("extraVirtualAliases"): + with subtest("Test sending from alias address (mailserver.aliases)"): client.execute("rm ~/mail/*") # send email from single-alias to user1 client.succeed( diff --git a/tests/ldap.nix b/tests/ldap.nix index 7cde1d0..40b1390 100644 --- a/tests/ldap.nix +++ b/tests/ldap.nix @@ -127,7 +127,7 @@ in localDnsResolver = false; indexDir = "/var/lib/dovecot/indices"; - extraVirtualAliases = { + aliases = { # Steal frank@example.com from LDAP user frank "frank@example.com" = "mallory@example.com"; };