{ config, lib, pkgs, ... }:
with lib;
let
ms = config.mailserver;
cfg = ms.autoconfig;
# none of the available parameters are configurable in
# simple-mailserver so these templates aren't configurable either
incomingServer = enable: port: socketType: optionalString enable ''
${ms.fqdn}
${builtins.toString port}
${socketType}
password-cleartext
%EMAILADDRESS%
'';
# we currently only support STARTTLS for outgoing servers
outgoingServer = port: ''
${ms.fqdn}
${builtins.toString port}
STARTTLS
password-cleartext
%EMAILADDRESS%
'';
in {
mailserver.autoconfig.webRoot = pkgs.substituteAll ({
name = "config-v1.1.xml";
dir = "mail";
src = cfg.templateFile;
} // {
hostname = ms.fqdn;
inherit (cfg)
emailProviderId displayName displayShortName extraEmailProvider;
imapSslServer = incomingServer ms.enableImapSsl 993 "SSL";
imapServer = incomingServer ms.enableImapSsl 143 "STARTTLS";
pop3SslServer = incomingServer ms.enablePop3Ssl 995 "SSL";
pop3Server = incomingServer ms.enablePop3 110 "STARTTLS";
smtpServer = outgoingServer 25;
submissionServer = outgoingServer 587;
domains = concatMapStringsSep
"\n "
(x: "${x}")
cfg.domains;
});
}