nixos/postfix: fold main and master config into settings attribute

+2 -2
nixos/doc/manual/release-notes/rl-2511.section.md
···
- The Postfix module has been updated and likely requires configuration changes:
- The `services.postfix.sslCert` and `sslKey` options were removed and you now need to configure
-
- [services.postfix.config.smtpd_tls_chain_files](#opt-services.postfix.config.smtpd_tls_chain_files) for server certificates,
-
- [services.postfix.config.smtp_tls_chain_files](#opt-services.postfix.config) for client certificates.
+
- [services.postfix.settings.main.smtpd_tls_chain_files](#opt-services.postfix.settings.main.smtpd_tls_chain_files) for server certificates,
+
- [services.postfix.settings.main.smtp_tls_chain_files](#opt-services.postfix.settings.main) for client certificates.
- `vmalert` now supports multiple instances with the option `services.vmalert.instances."".enable`
+1 -1
nixos/modules/services/mail/mailman.md
···
{
services.postfix = {
enable = true;
-
config = {
+
settings.main = {
transport_maps = [ "hash:/var/lib/mailman/data/postfix_lmtp" ];
local_recipient_maps = [ "hash:/var/lib/mailman/data/postfix_lmtp" ];
relay_domains = [ "hash:/var/lib/mailman/data/postfix_domains" ];
+1 -1
nixos/modules/services/mail/mailman.nix
···
];
services.postfix = lib.mkIf cfg.enablePostfix {
-
config = {
+
settings.main = {
owner_request_special = "no"; # Mailman handles -owner addresses on its own
recipient_delimiter = "+"; # bake recipient addresses in mail envelopes via VERP
};
+2 -2
nixos/modules/services/mail/mlmmj.nix
···
services.postfix = {
enable = true;
-
config = {
+
settings.main = {
recipient_delimiter = "+";
propagate_unmatched_extensions = "virtual";
};
-
masterConfig.mlmmj = {
+
settings.master.mlmmj = {
type = "unix";
private = true;
privileged = true;
+1 -1
nixos/modules/services/mail/pfix-srsd.nix
···
config = lib.mkMerge [
(lib.mkIf (cfg.enable && cfg.configurePostfix && config.services.postfix.enable) {
-
services.postfix.config = {
+
services.postfix.settings.main = {
sender_canonical_maps = [ "tcp:127.0.0.1:10001" ];
sender_canonical_classes = [ "envelope_sender" ];
recipient_canonical_maps = [ "tcp:127.0.0.1:10002" ];
+1 -1
nixos/modules/services/mail/postfix-tlspol.nix
···
config = mkMerge [
(mkIf (cfg.enable && config.services.postfix.enable && cfg.configurePostfix) {
# https://github.com/Zuplu/postfix-tlspol#postfix-configuration
-
services.postfix.config = {
+
services.postfix.settings.main = {
smtp_dns_support_level = "dnssec";
smtp_tls_security_level = "dane";
smtp_tls_policy_maps =
+240 -225
nixos/modules/services/mail/postfix.nix
···
mkEntry = name: value: "${escape name} =${mkVal value}";
in
lib.concatStringsSep "\n" (
-
lib.mapAttrsToList mkEntry (lib.filterAttrsRecursive (_: value: value != null) cfg.config)
+
lib.mapAttrsToList mkEntry (lib.filterAttrsRecursive (_: value: value != null) cfg.settings.main)
);
masterCfOptions =
···
""
];
-
masterCf = lib.mapAttrsToList (lib.const (lib.getAttr "rawEntry")) cfg.masterConfig;
+
masterCf = lib.mapAttrsToList (lib.const (lib.getAttr "rawEntry")) cfg.settings.master;
# A list of the maximum width of the columns across all lines and labels
maxWidths =
···
description = "The format the alias map should have. Use regexp if you want to use regular expressions.";
};
-
config = lib.mkOption {
-
type = lib.types.submodule {
-
freeformType =
-
with types;
-
attrsOf (
-
nullOr (oneOf [
-
bool
-
int
-
str
-
(listOf str)
-
])
-
);
-
options = {
-
message_size_limit = mkOption {
-
type = with types; nullOr int;
-
default = 10240000; # 10 MiB
-
example = 52428800; # 50 MiB
-
description = ''
-
Maximum size of an email message in bytes.
-
-
<https://www.postfix.org/postconf.5.html#message_size_limit>
-
'';
-
};
-
-
mydestination = mkOption {
-
type =
-
with types;
+
settings = {
+
main = lib.mkOption {
+
type = lib.types.submodule {
+
freeformType =
+
with types;
+
attrsOf (
nullOr (oneOf [
+
bool
+
int
str
(listOf str)
-
]);
-
default = [
-
"$myhostname"
-
"localhost.$mydomain"
-
"localhost"
-
];
-
description = ''
-
List of domain names intended for local delivery using /etc/passwd and /etc/aliases.
+
])
+
);
+
options = {
+
message_size_limit = mkOption {
+
type = with types; nullOr int;
+
default = 10240000; # 10 MiB
+
example = 52428800; # 50 MiB
+
description = ''
+
Maximum size of an email message in bytes.
+
+
<https://www.postfix.org/postconf.5.html#message_size_limit>
+
'';
+
};
+
+
mydestination = mkOption {
+
type =
+
with types;
+
nullOr (oneOf [
+
str
+
(listOf str)
+
]);
+
default = [
+
"$myhostname"
+
"localhost.$mydomain"
+
"localhost"
+
];
+
description = ''
+
List of domain names intended for local delivery using /etc/passwd and /etc/aliases.
-
::: {.warning}
-
Do not include [virtual](https://www.postfix.org/VIRTUAL_README.html) domains in this list.
-
:::
+
::: {.warning}
+
Do not include [virtual](https://www.postfix.org/VIRTUAL_README.html) domains in this list.
+
:::
-
<https://www.postfix.org/postconf.5.html#mydestination>
-
'';
-
};
+
<https://www.postfix.org/postconf.5.html#mydestination>
+
'';
+
};
-
myhostname = mkOption {
-
type = with types; nullOr types.str;
-
default = null;
-
example = "mail.example.com";
-
description = ''
-
The internet hostname of this mail system.
+
myhostname = mkOption {
+
type = with types; nullOr types.str;
+
default = null;
+
example = "mail.example.com";
+
description = ''
+
The internet hostname of this mail system.
-
Leave unset to default to the system hostname with the {option}`mydomain` suffix.
+
Leave unset to default to the system hostname with the {option}`mydomain` suffix.
-
<https://www.postfix.org/postconf.5.html#myhostname>
-
'';
-
};
+
<https://www.postfix.org/postconf.5.html#myhostname>
+
'';
+
};
+
+
mynetworks = mkOption {
+
type = with types; nullOr (listOf str);
+
default = null;
+
example = [
+
"127.0.0.0/8"
+
"::1"
+
];
+
description = ''
+
List of trusted remote SMTP clients, that are allowed to relay mail.
+
+
Leave unset to let Postfix populate this list based on the {option}`mynetworks_style` setting.
-
mynetworks = mkOption {
-
type = with types; nullOr (listOf str);
-
default = null;
-
example = [
-
"127.0.0.0/8"
-
"::1"
-
];
-
description = ''
-
List of trusted remote SMTP clients, that are allowed to relay mail.
+
<https://www.postfix.org/postconf.5.html#mynetworks>
+
'';
+
};
-
Leave unset to let Postfix populate this list based on the {option}`mynetworks_style` setting.
+
mynetworks_style = mkOption {
+
type =
+
with types;
+
nullOr (enum [
+
"host"
+
"subnet"
+
"class"
+
]);
+
default = "host";
+
description = ''
+
The method used for generating the default value for {option}`mynetworks`, if that option is unset.
-
<https://www.postfix.org/postconf.5.html#mynetworks>
-
'';
-
};
+
<https://www.postfix.org/postconf.5.html#mynetworks_style>
+
'';
+
};
-
mynetworks_style = mkOption {
-
type =
-
with types;
-
nullOr (enum [
-
"host"
-
"subnet"
-
"class"
-
]);
-
default = "host";
-
description = ''
-
The method used for generating the default value for {option}`mynetworks`, if that option is unset.
+
recipient_delimiter = lib.mkOption {
+
type = with types; nullOr str;
+
default = "";
+
example = "+";
+
description = ''
+
Set of characters used as the delimiters for address extensions.
-
<https://www.postfix.org/postconf.5.html#mynetworks_style>
-
'';
-
};
+
This allows creating different forwarding rules per extension.
-
recipient_delimiter = lib.mkOption {
-
type = with types; nullOr str;
-
default = "";
-
example = "+";
-
description = ''
-
Set of characters used as the delimiters for address extensions.
+
<https://www.postfix.org/postconf.5.html#recipient_delimiter>
+
'';
+
};
-
This allows creating different forwarding rules per extension.
+
relayhost = mkOption {
+
type = with types; nullOr (listOf str);
+
default = [ ];
+
example = [ "[relay.example.com]:587" ];
+
description = ''
+
List of hosts to use for relaying outbound mail.
-
<https://www.postfix.org/postconf.5.html#recipient_delimiter>
-
'';
-
};
+
::: {.note}
+
Putting the hostname in angled brackets, e.g. `[relay.example.com]`, turns off MX and SRV lookups for the hostname.
+
:::
-
relayhost = mkOption {
-
type = with types; nullOr (listOf str);
-
default = [ ];
-
example = [ "[relay.example.com]:587" ];
-
description = ''
-
List of hosts to use for relaying outbound mail.
+
<https://www.postfix.org/postconf.5.html#relayhost>
+
'';
+
};
-
::: {.note}
-
Putting the hostname in angled brackets, e.g. `[relay.example.com]`, turns off MX and SRV lookups for the hostname.
-
:::
+
relay_domains = mkOption {
+
type = with types; nullOr (listOf str);
+
default = [ ];
+
example = [ "lists.example.com" ];
+
description = ''
+
List of domains delivered via the relay transport.
-
<https://www.postfix.org/postconf.5.html#relayhost>
-
'';
-
};
+
<https://www.postfix.org/postconf.5.html#relay_domains>
+
'';
+
};
-
relay_domains = mkOption {
-
type = with types; nullOr (listOf str);
-
default = [ ];
-
example = [ "lists.example.com" ];
-
description = ''
-
List of domains delivered via the relay transport.
+
smtp_tls_CAfile = mkOption {
+
type = types.path;
+
default = config.security.pki.caBundle;
+
defaultText = literalExpression ''
+
config.security.pki.caBundle
+
'';
+
example = literalExpression ''
+
''${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt
+
'';
+
description = ''
+
File containing CA certificates of root CAs trusted to sign either remote SMTP server certificates or intermediate CA certificates.
-
<https://www.postfix.org/postconf.5.html#relay_domains>
-
'';
-
};
+
Defaults to the system CA bundle that is managed through the `security.pki` options.
-
smtp_tls_CAfile = mkOption {
-
type = types.path;
-
default = config.security.pki.caBundle;
-
defaultText = literalExpression ''
-
config.security.pki.caBundle
-
'';
-
example = literalExpression ''
-
''${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt
-
'';
-
description = ''
-
File containing CA certificates of root CAs trusted to sign either remote SMTP server certificates or intermediate CA certificates.
+
<https://www.postfix.org/postconf.5.html#smtp_tls_CAfile>
+
'';
+
};
-
Defaults to the system CA bundle that is managed through the `security.pki` options.
+
smtp_tls_security_level = mkOption {
+
type = types.enum [
+
"none"
+
"may"
+
"encrypt"
+
"dane"
+
"dane-only"
+
"fingerprint"
+
"verify"
+
"secure"
+
];
+
default = "may";
+
description = ''
+
The client TLS security level.
-
<https://www.postfix.org/postconf.5.html#smtp_tls_CAfile>
-
'';
-
};
+
::: {.tip}
+
Use `dane` with a local DNSSEC validating DNS resolver enabled.
+
:::
-
smtp_tls_security_level = mkOption {
-
type = types.enum [
-
"none"
-
"may"
-
"encrypt"
-
"dane"
-
"dane-only"
-
"fingerprint"
-
"verify"
-
"secure"
-
];
-
default = "may";
-
description = ''
-
The client TLS security level.
+
<https://www.postfix.org/postconf.5.html#smtp_tls_security_level>
+
'';
+
};
-
::: {.tip}
-
Use `dane` with a local DNSSEC validating DNS resolver enabled.
-
:::
+
smtpd_tls_chain_files = mkOption {
+
type = with types; listOf path;
+
default = [ ];
+
example = [
+
"/var/lib/acme/mail.example.com/privkey.pem"
+
"/var/lib/acme/mail.example.com/fullchain.pem"
+
];
+
description = ''
+
List of paths to the server private keys and certificates.
-
<https://www.postfix.org/postconf.5.html#smtp_tls_security_level>
-
'';
-
};
+
::: {.caution}
+
The order of items matters and a private key must always be followed by the corresponding certificate.
+
:::
-
smtpd_tls_chain_files = mkOption {
-
type = with types; listOf path;
-
default = [ ];
-
example = [
-
"/var/lib/acme/mail.example.com/privkey.pem"
-
"/var/lib/acme/mail.example.com/fullchain.pem"
-
];
-
description = ''
-
List of paths to the server private keys and certificates.
+
<https://www.postfix.org/postconf.5.html#smtpd_tls_chain_files>
+
'';
+
};
-
::: {.caution}
-
The order of items matters and a private key must always be followed by the corresponding certificate.
-
:::
+
smtpd_tls_security_level = mkOption {
+
type = types.enum [
+
"none"
+
"may"
+
"encrypt"
+
];
+
default =
+
if config.services.postfix.settings.main.smtpd_tls_chain_files != [ ] then "may" else "none";
+
defaultText = lib.literalExpression ''
+
if config.services.postfix.settings.main.smtpd_tls_chain_files != [ ] then "may" else "none"
+
'';
+
example = "may";
+
description = ''
+
The server TLS security level. Enable TLS by configuring at least `may`.
-
<https://www.postfix.org/postconf.5.html#smtpd_tls_chain_files>
-
'';
+
<https://www.postfix.org/postconf.5.html#smtpd_tls_security_level>
+
'';
+
};
};
+
};
-
smtpd_tls_security_level = mkOption {
-
type = types.enum [
-
"none"
-
"may"
-
"encrypt"
-
];
-
default = if config.services.postfix.config.smtpd_tls_chain_files != [ ] then "may" else "none";
-
defaultText = lib.literalExpression ''
-
if config.services.postfix.config.smtpd_tls_chain_files != [ ] then "may" else "none"
-
'';
-
example = "may";
-
description = ''
-
The server TLS security level. Enable TLS by configuring at least `may`.
+
description = ''
+
The main.cf configuration file as key value set.
+
+
Null values will not be rendered.
-
<https://www.postfix.org/postconf.5.html#smtpd_tls_security_level>
-
'';
-
};
+
::: {.tip}
+
Check `postconf -d` for the default values of all settings.
+
:::
+
'';
+
example = {
+
mail_owner = "postfix";
+
smtp_tls_security_level = "may";
};
};
-
description = ''
-
The main.cf configuration file as key value set.
+
master = lib.mkOption {
+
type = lib.types.attrsOf (lib.types.submodule masterCfOptions);
+
default = { };
+
example = {
+
submission = {
+
type = "inet";
+
args = [
+
"-o"
+
"smtpd_tls_security_level=encrypt"
+
];
+
};
+
};
+
description = ''
+
The {file}`master.cf` configuration file as an attribute set of service
+
defitions
-
Null values will not be rendered.
-
-
::: {.tip}
-
Check `postconf -d` for the default values of all settings.
-
:::
-
'';
-
example = {
-
mail_owner = "postfix";
-
smtp_tls_security_level = "may";
+
::: {.tip}
+
Check <https://www.postfix.org/master.5.html> for possible settings.
+
:::
+
'';
};
+
};
canonical = lib.mkOption {
···
description = "contents of check_client_access for overriding dnsBlacklists";
};
-
masterConfig = lib.mkOption {
-
type = lib.types.attrsOf (lib.types.submodule masterCfOptions);
-
default = { };
-
example = {
-
submission = {
-
type = "inet";
-
args = [
-
"-o"
-
"smtpd_tls_security_level=encrypt"
-
];
-
};
-
};
-
description = ''
-
An attribute set of service options, which correspond to the service
-
definitions usually done within the Postfix
-
{file}`master.cf` file.
-
'';
-
};
-
extraMasterConf = lib.mkOption {
type = lib.types.lines;
default = "";
···
};
};
-
services.postfix.config =
+
services.postfix.settings.main =
(lib.mapAttrs (_: v: lib.mkDefault v) {
compatibility_level = pkgs.postfix.version;
mail_owner = cfg.user;
···
header_checks = [ "regexp:/etc/postfix/header_checks" ];
};
-
services.postfix.masterConfig = {
+
services.postfix.settings.master = {
pickup = {
private = false;
wakeup = 60;
···
imports = [
(lib.mkRemovedOptionModule [ "services" "postfix" "sslCACert" ]
-
"services.postfix.sslCACert was replaced by services.postfix.tlsTrustedAuthorities. In case you intend that your server should validate requested client certificates use services.postfix.config.smtp_tls_CAfile."
+
"services.postfix.sslCACert was replaced by services.postfix.tlsTrustedAuthorities. In case you intend that your server should validate requested client certificates use services.postfix.settings.main.smtp_tls_CAfile."
(lib.mkRemovedOptionModule [ "services" "postfix" "sslCert" ]
-
"services.postfix.sslCert was removed. Use services.postfix.config.smtpd_tls_chain_files for the server certificate, or services.postfix.config.smtp_tls_chain_files for the client certificate."
+
"services.postfix.sslCert was removed. Use services.postfix.settings.main.smtpd_tls_chain_files for the server certificate, or services.postfix.settings.main.smtp_tls_chain_files for the client certificate."
(lib.mkRemovedOptionModule [ "services" "postfix" "sslKey" ]
-
"services.postfix.sslKey was removed. Use services.postfix.config.smtpd_tls_chain_files for server private key, or services.postfix.config.smtp_tls_chain_files for the client private key."
+
"services.postfix.sslKey was removed. Use services.postfix.settings.main.smtpd_tls_chain_files for server private key, or services.postfix.settings.main.smtp_tls_chain_files for the client private key."
(lib.mkRemovedOptionModule [ "services" "postfix" "lookupMX" ]
-
"services.postfix.lookupMX was removed. Use services.postfix.config.relayhost and put the hostname in angled brackets, if you need to turn off MX and SRV lookups."
+
"services.postfix.lookupMX was removed. Use services.postfix.settings.main.relayhost and put the hostname in angled brackets, if you need to turn off MX and SRV lookups."
(lib.mkRemovedOptionModule [ "services" "postfix" "relayHost" ]
-
"services.postfix.relayHost was removed in favor of services.postfix.config.relayhost, which now takes a list of host/port."
+
"services.postfix.relayHost was removed in favor of services.postfix.settings.main.relayhost, which now takes a list of host/port."
(lib.mkRemovedOptionModule [ "services" "postfix" "relayPort" ]
-
"services.postfix.relayHost was removed in favor of services.postfix.config.relayhost, which now takes a list of host/port."
+
"services.postfix.relayHost was removed in favor of services.postfix.settings.main.relayhost, which now takes a list of host/port."
(lib.mkRemovedOptionModule [ "services" "postfix" "extraConfig" ]
-
"services.postfix.extraConfig was replaced by the structured freeform service.postfix.config option."
+
"services.postfix.extraConfig was replaced by the structured freeform service.postfix.settings.main option."
(lib.mkRenamedOptionModule
[ "services" "postfix" "networks" ]
-
[ "services" "postfix" "config" "mynetworks" ]
+
[ "services" "postfix" "settings" "main" "mynetworks" ]
(lib.mkRenamedOptionModule
[ "services" "postfix" "networkStyle" ]
-
[ "services" "postfix" "config" "mynetworks_style" ]
+
[ "services" "postfix" "settings" "main" "mynetworks_style" ]
(lib.mkRenamedOptionModule
[ "services" "postfix" "hostname" ]
-
[ "services" "postfix" "config" "myhostname" ]
+
[ "services" "postfix" "settings" "main" "myhostname" ]
(lib.mkRenamedOptionModule
[ "services" "postfix" "domain" ]
-
[ "services" "postfix" "config" "mydomain" ]
+
[ "services" "postfix" "settings" "main" "mydomain" ]
(lib.mkRenamedOptionModule
[ "services" "postfix" "origin" ]
-
[ "services" "postfix" "config" "myorigin" ]
+
[ "services" "postfix" "settings" "main" "myorigin" ]
(lib.mkRenamedOptionModule
[ "services" "postfix" "destination" ]
-
[ "services" "postfix" "config" "mydestination" ]
+
[ "services" "postfix" "settings" "main" "mydestination" ]
(lib.mkRenamedOptionModule
[ "services" "postfix" "relayDomains" ]
-
[ "services" "postfix" "config" "relay_domains" ]
+
[ "services" "postfix" "settings" "main" "relay_domains" ]
(lib.mkRenamedOptionModule
[ "services" "postfix" "recipientDelimiter" ]
-
[ "services" "postfix" "config" "recipient_delimiter" ]
+
[ "services" "postfix" "settings" "main" "recipient_delimiter" ]
(lib.mkRenamedOptionModule
[ "services" "postfix" "tlsTrustedAuthoriies" ]
-
[ "services" "postfix" "config" "smtp_tls_CAfile" ]
+
[ "services" "postfix" "settings" "main" "smtp_tls_CAfile" ]
+
)
+
(lib.mkRenamedOptionModule
+
[ "services" "postfix" "config" ]
+
[ "services" "postfix" "settings" "main" ]
+
)
+
(lib.mkRenamedOptionModule
+
[ "services" "postfix" "masterConfig" ]
+
[ "services" "postfix" "settings" "master" ]
(lib.mkChangedOptionModule
[ "services" "postfix" "useDane" ]
-
[ "services" "postfix" "config" "smtp_tls_security_level" ]
+
[ "services" "postfix" "settings" "main" "smtp_tls_security_level" ]
(config: lib.mkIf config.services.postfix.useDane "dane")
(lib.mkRenamedOptionModule [ "services" "postfix" "useSrs" ] [ "services" "pfix-srsd" "enable" ])
+1 -1
nixos/modules/services/mail/postsrsd.nix
···
config = lib.mkMerge [
(lib.mkIf (cfg.enable && cfg.configurePostfix && config.services.postfix.enable) {
-
services.postfix.config = {
+
services.postfix.settings.main = {
# https://github.com/roehling/postsrsd#configuration
sender_canonical_maps = "socketmap:${cfg.settings.socketmap}:forward";
sender_canonical_classes = "envelope_sender";
+2 -2
nixos/modules/services/mail/public-inbox.nix
···
};
services.postfix = mkIf (cfg.postfix.enable && cfg.mda.enable) {
# Not sure limiting to 1 is necessary, but better safe than sorry.
-
config.public-inbox_destination_recipient_limit = "1";
+
settings.main.public-inbox_destination_recipient_limit = "1";
# Register the addresses as existing
virtual = concatStringsSep "\n" (
···
);
# The public-inbox transport
-
masterConfig.public-inbox = {
+
settings.master.public-inbox = {
type = "unix";
privileged = true; # Required for user=
command = "pipe";
+1 -1
nixos/modules/services/mail/rspamd.nix
···
'';
};
};
-
services.postfix.config = mkIf cfg.postfix.enable cfg.postfix.config;
+
services.postfix.settings.main = mkIf cfg.postfix.enable cfg.postfix.config;
systemd.services.postfix = mkIf cfg.postfix.enable {
serviceConfig.SupplementaryGroups = [ postfixCfg.group ];
+1 -1
nixos/modules/services/mail/schleuder.nix
···
flags=DRhu user=schleuder argv=/${pkgs.schleuder}/bin/schleuder work ''${recipient}
'';
transport = lib.mkIf (cfg.lists != [ ]) (postfixMap (lib.genAttrs cfg.lists (_: "schleuder:")));
-
config.schleuder_destination_recipient_limit = 1;
+
settings.main.schleuder_destination_recipient_limit = 1;
# review: does this make sense?
localRecipients = lib.mkIf (cfg.lists != [ ]) cfg.lists;
};
+38 -36
nixos/modules/services/mail/sympa.nix
···
services.postfix = lib.mkIf (cfg.mta.type == "postfix") {
enable = true;
-
config = {
-
recipient_delimiter = "+";
-
virtual_alias_maps = [ "hash:${dataDir}/virtual.sympa" ];
-
virtual_mailbox_maps = [
-
"hash:${dataDir}/transport.sympa"
-
"hash:${dataDir}/sympa_transport"
-
"hash:${dataDir}/virtual.sympa"
-
];
-
virtual_mailbox_domains = [ "hash:${dataDir}/transport.sympa" ];
-
transport_maps = [
-
"hash:${dataDir}/transport.sympa"
-
"hash:${dataDir}/sympa_transport"
-
];
-
};
-
masterConfig = {
-
"sympa" = {
-
type = "unix";
-
privileged = true;
-
chroot = false;
-
command = "pipe";
-
args = [
-
"flags=hqRu"
-
"user=${user}"
-
"argv=${pkg}/libexec/queue"
-
"\${nexthop}"
+
settings = {
+
main = {
+
recipient_delimiter = "+";
+
virtual_alias_maps = [ "hash:${dataDir}/virtual.sympa" ];
+
virtual_mailbox_maps = [
+
"hash:${dataDir}/transport.sympa"
+
"hash:${dataDir}/sympa_transport"
+
"hash:${dataDir}/virtual.sympa"
];
-
};
-
"sympabounce" = {
-
type = "unix";
-
privileged = true;
-
chroot = false;
-
command = "pipe";
-
args = [
-
"flags=hqRu"
-
"user=${user}"
-
"argv=${pkg}/libexec/bouncequeue"
-
"\${nexthop}"
+
virtual_mailbox_domains = [ "hash:${dataDir}/transport.sympa" ];
+
transport_maps = [
+
"hash:${dataDir}/transport.sympa"
+
"hash:${dataDir}/sympa_transport"
];
+
};
+
master = {
+
"sympa" = {
+
type = "unix";
+
privileged = true;
+
chroot = false;
+
command = "pipe";
+
args = [
+
"flags=hqRu"
+
"user=${user}"
+
"argv=${pkg}/libexec/queue"
+
"\${nexthop}"
+
];
+
};
+
"sympabounce" = {
+
type = "unix";
+
privileged = true;
+
chroot = false;
+
command = "pipe";
+
args = [
+
"flags=hqRu"
+
"user=${user}"
+
"argv=${pkg}/libexec/bouncequeue"
+
"\${nexthop}"
+
];
+
};
};
};
};
+1 -1
nixos/modules/services/mail/zeyple.nix
···
-o smtpd_authorized_xforward_hosts=127.0.0.0/8,[::1]/128
'';
-
services.postfix.config.content_filter = "zeyple";
+
services.postfix.settings.main.content_filter = "zeyple";
};
}
+1 -1
nixos/modules/services/monitoring/parsedmarc.nix
···
services.postfix = lib.mkIf cfg.provision.localMail.enable {
enable = true;
-
config = {
+
settings.main = {
myhostname = cfg.provision.localMail.hostname;
myorigin = cfg.provision.localMail.hostname;
mydestination = cfg.provision.localMail.hostname;
+2 -2
nixos/modules/services/web-apps/discourse.nix
···
services.postfix = lib.mkIf cfg.mail.incoming.enable {
enable = true;
-
config = {
+
settings.main = {
smtpd_recipient_restrictions = "check_policy_service unix:private/discourse-policy";
append_dot_mydomain = lib.mkDefault false;
compatibility_level = "2";
···
transport = ''
${cfg.hostname} discourse-mail-receiver:
'';
-
masterConfig = {
+
settings.master = {
"discourse-mail-receiver" = {
type = "unix";
privileged = true;
+1 -1
nixos/modules/services/web-apps/mastodon.nix
···
services.postfix = lib.mkIf (cfg.smtp.createLocally && cfg.smtp.host == "127.0.0.1") {
enable = true;
-
config.myhostname = lib.mkDefault "${cfg.localDomain}";
+
settings.main.myhostname = lib.mkDefault "${cfg.localDomain}";
};
services.redis.servers.mastodon = lib.mkIf redisActuallyCreateLocally (
+1 -1
nixos/modules/services/web-apps/peertube.nix
···
services.postfix = lib.mkIf cfg.smtp.createLocally {
enable = true;
-
config.myhostname = lib.mkDefault "${cfg.localDomain}";
+
settings.main.myhostname = lib.mkDefault "${cfg.localDomain}";
};
users.users = lib.mkMerge [
+1 -1
nixos/tests/alps.nix
···
enableSubmission = true;
enableSubmissions = true;
-
config = {
+
settings.main = {
smtp_tls_CAfile = "${certs.ca.cert}";
smtpd_tls_chain_files = [
"${certs.${domain}.key}"
+1 -1
nixos/tests/discourse.nix
···
services.postfix = {
enable = true;
-
config = {
+
settings.main = {
compatibility_level = "2";
mydestination = [ clientDomain ];
myhostname = clientDomain;
+12 -10
nixos/tests/mailman.nix
···
services.mailman.webHosts = [ "example.com" ];
services.postfix.enable = true;
-
services.postfix.config.mydestination = [
-
"example.com"
-
"example.net"
-
];
-
services.postfix.config.relay_domains = [ "hash:/var/lib/mailman/data/postfix_domains" ];
-
services.postfix.config.local_recipient_maps = [
-
"hash:/var/lib/mailman/data/postfix_lmtp"
-
"proxy:unix:passwd.byname"
-
];
-
services.postfix.config.transport_maps = [ "hash:/var/lib/mailman/data/postfix_lmtp" ];
+
services.postfix.settings.main = {
+
mydestination = [
+
"example.com"
+
"example.net"
+
];
+
relay_domains = [ "hash:/var/lib/mailman/data/postfix_domains" ];
+
local_recipient_maps = [
+
"hash:/var/lib/mailman/data/postfix_lmtp"
+
"proxy:unix:passwd.byname"
+
];
+
transport_maps = [ "hash:/var/lib/mailman/data/postfix_lmtp" ];
+
};
users.users.user = {
isNormalUser = true;
+1 -1
nixos/tests/matrix/synapse.nix
···
# blackhole transport
transport = "example.com discard:silently";
-
config = {
+
settings.main = {
myhostname = "${mailerDomain}";
# open relay for subnet
mynetworks_style = "subnet";
+1 -1
nixos/tests/parsedmarc/default.nix
···
services.postfix = {
enable = true;
origin = mailDomain;
-
config = {
+
settings.main = {
myhostname = mailDomain;
mydestination = mailDomain;
};
+1 -1
nixos/tests/postfix.nix
···
enable = true;
enableSubmission = true;
enableSubmissions = true;
-
config = {
+
settings.main = {
smtp_tls_CAfile = "${certs.ca.cert}";
smtpd_tls_chain_files = [
certs.${domain}.key
+1 -1
nixos/tests/public-inbox.nix
···
setSendmail = true;
#sslCert = "${tls-cert}/cert.pem";
#sslKey = "${tls-cert}/key.pem";
-
config.recipient_delimiter = "+";
+
settings.main.recipient_delimiter = "+";
};
environment.systemPackages = [
+1 -1
nixos/tests/rspamd.nix
···
};
services.postfix = {
enable = true;
-
config.mydestination = [ "example.com" ];
+
settings.main.mydestination = [ "example.com" ];
};
services.rspamd = {
enable = true;
+1 -1
nixos/tests/schleuder.nix
···
services.postfix = {
enable = true;
enableSubmission = true;
-
config = {
+
settings.main = {
mydomain = domain;
destination = domain;
smtp_tls_CAfile = "${certs.ca.cert}";