diff options
author | Rickard Nilsson <rickynils@gmail.com> | 2013-07-30 10:20:56 +0200 |
---|---|---|
committer | Rickard Nilsson <rickynils@gmail.com> | 2013-07-30 10:20:56 +0200 |
commit | 3ca7d7b2915d48854856d2a2c1024b268decaa4a (patch) | |
tree | 547146a5ca14276924562bbbf76f9e61bbcdf14f /modules/services/mail | |
parent | 96be2d5a7dd1c3733311e20eb5b41ecb6aeb0086 (diff) | |
download | nixlib-3ca7d7b2915d48854856d2a2c1024b268decaa4a.tar nixlib-3ca7d7b2915d48854856d2a2c1024b268decaa4a.tar.gz nixlib-3ca7d7b2915d48854856d2a2c1024b268decaa4a.tar.bz2 nixlib-3ca7d7b2915d48854856d2a2c1024b268decaa4a.tar.lz nixlib-3ca7d7b2915d48854856d2a2c1024b268decaa4a.tar.xz nixlib-3ca7d7b2915d48854856d2a2c1024b268decaa4a.tar.zst nixlib-3ca7d7b2915d48854856d2a2c1024b268decaa4a.zip |
Add OpenSMTPD service option
Diffstat (limited to 'modules/services/mail')
-rw-r--r-- | modules/services/mail/opensmtpd.nix | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/modules/services/mail/opensmtpd.nix b/modules/services/mail/opensmtpd.nix new file mode 100644 index 000000000000..2732fd602004 --- /dev/null +++ b/modules/services/mail/opensmtpd.nix @@ -0,0 +1,83 @@ +{ pkgs, config, ... }: + +with pkgs; +with pkgs.lib; + +let + + cfg = config.services.opensmtpd; + conf = writeText "smtpd.conf" cfg.serverConfiguration; + args = concatStringsSep " " cfg.extraServerArgs; + +in { + + ###### interface + + options = { + + services.opensmtpd = { + + enable = mkOption { + type = types.bool; + default = false; + description = "Whether to enable the OpenSMTPD server."; + }; + + extraServerArgs = mkOption { + type = types.listOf types.string; + default = []; + example = [ "-v" "-P mta" ]; + description = '' + Extra command line arguments provided when the smtpd process + is started. + ''; + }; + + serverConfiguration = mkOption { + type = types.string; + default = ""; + example = '' + listen on lo + accept for any deliver to lmtp localhost:24 + ''; + description = '' + The contents of the smtpd.conf configuration file. See the + OpenSMTPD documentation for syntax information. If this option + is left empty, the OpenSMTPD server will not start. + ''; + }; + }; + + }; + + + ###### implementation + + config = mkIf config.services.opensmtpd.enable { + users.extraGroups = { + smtpd.gid = config.ids.gids.smtpd; + smtpq.gid = config.ids.gids.smtpq; + }; + + users.extraUsers = { + smtpd = { + description = "OpenSMTPD process user"; + uid = config.ids.uids.smtpd; + group = "smtpd"; + }; + smtpq = { + description = "OpenSMTPD queue user"; + uid = config.ids.uids.smtpq; + group = "smtpq"; + }; + }; + + systemd.services.opensmtpd = { + wantedBy = [ "multi-user.target" ]; + wants = [ "network.target" ]; + after = [ "network.target" ]; + preStart = "mkdir -p /var/spool"; + serviceConfig.ExecStart = "${opensmtpd}/sbin/smtpd -d -f ${conf} ${args}"; + }; + }; +} |