X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/aa56e112996b3650e8ac343831322d2a9ab0de54..b59d9074993cac46d6c33803c0b850974c088cf0:/src/plugins/exim.sml?ds=sidebyside diff --git a/src/plugins/exim.sml b/src/plugins/exim.sml index 0744fce..8b0485b 100644 --- a/src/plugins/exim.sml +++ b/src/plugins/exim.sml @@ -25,12 +25,13 @@ open Ast val dl = ErrorMsg.dummyLoc val _ = Defaults.registerDefault ("MailNodes", - (TList (TBase "node", dl), dl), + (TList (TBase "mail_node", dl), dl), (fn () => (EList (map (fn s => (EString s, dl)) Config.Exim.aliasTo), dl))) val aliasesChanged = ref false val aliasesDefaultChanged = ref false val hostsChanged = ref false +val relayHostsChanged = ref false val () = Slave.registerPreHandler (fn () => (aliasesChanged := false; @@ -47,6 +48,8 @@ val () = Slave.registerFileHandler (fn fs => aliasesDefaultChanged := true else if #file spl = "mail" then hostsChanged := true + else if #file spl = "mail.relay" then + relayHostsChanged := true else () end) @@ -65,8 +68,12 @@ val () = Slave.registerPostHandler Slave.enumerateTo (fn s => s = "mail") ":" Config.Exim.handleDomains else (); + if !relayHostsChanged then + Slave.enumerateTo (fn s => s = "mail.relay") ":" Config.Exim.relayDomains + else + (); if !aliasesChanged orelse !aliasesDefaultChanged - orelse !hostsChanged then + orelse !hostsChanged orelse !relayHostsChanged then Slave.shellF ([Config.Exim.reload], fn cl => "Error reloading exim with " ^ cl) else @@ -83,4 +90,14 @@ val () = Env.actionV_none "handleMail" name = "mail"})) nodes end) +val () = Env.actionV_none "relayMail" + (fn env => + let + val nodes = Env.env (Env.list Env.string) (env, "MailNodes") + in + app (fn node => TextIO.closeOut + (Domain.domainFile {node = node, + name = "mail.relay"})) nodes + end) + end