val dl = ErrorMsg.dummyLoc
-val _ = Main.registerDefault ("MailNodes",
- (TList (TBase "node", dl), dl),
- (fn () => (EList (map (fn s => (EString s, dl)) Config.Exim.aliasTo), dl)))
+val _ = Defaults.registerDefault ("MailNodes",
+ (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;
aliasesDefaultChanged := true
else if #file spl = "mail" then
hostsChanged := true
+ else if #file spl = "mail.relay" then
+ relayHostsChanged := true
else
()
end)
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
let
val nodes = Env.env (Env.list Env.string) (env, "MailNodes")
in
- app (fn node => TextIO.closeOut
- (Domain.domainFile {node = node,
- name = "mail"})) nodes
+ app (fn node => #close
+ (Domain.domainsFile {node = node,
+ 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 => #close
+ (Domain.domainsFile {node = node,
+ name = "mail.relay"}) ()) nodes
+ end)
+
+val () = Domain.registerDescriber (Domain.considerAll
+ [Domain.Filename {filename = "aliases",
+ heading = "E-mail aliases",
+ showEmpty = false},
+ Domain.Filename {filename = "aliases.default",
+ heading = "Default e-mail alias",
+ showEmpty = false},
+ Domain.Filename {filename = "mail",
+ heading = "E-mail handling",
+ showEmpty = false},
+ Domain.Filename {filename = "mail.relay",
+ heading = "E-mail relaying",
+ showEmpty = false}])
+
end