More Exim stuff
[hcoop/domtool2.git] / src / plugins / exim.sml
index 112ab5f..ee4cf80 100644 (file)
@@ -22,10 +22,12 @@ structure Exim :> EXIM = struct
 
 val aliasesChanged = ref false
 val aliasesDefaultChanged = ref false
+val hostsChanged = ref false
 
 val () = Slave.registerPreHandler
             (fn () => (aliasesChanged := false;
-                       aliasesDefaultChanged := false))
+                       aliasesDefaultChanged := false;
+                       hostsChanged := false))
 
 val () = Slave.registerFileHandler (fn fs =>
                                       let
@@ -35,6 +37,8 @@ val () = Slave.registerFileHandler (fn fs =>
                                               aliasesChanged := true
                                           else if #file spl = "aliases.default" then
                                               aliasesDefaultChanged := true
+                                          else if #file spl = "mail" then
+                                              hostsChanged := true
                                           else
                                               ()
                                       end)
@@ -49,10 +53,19 @@ val () = Slave.registerPostHandler
                  Slave.concatTo (fn s => s = "aliases.default") Config.Exim.aliasesDefault
              else
                  ();
-             if !aliasesChanged orelse !aliasesDefaultChanged then
+             if !hostsChanged then
+                 Slave.enumerateTo (fn s => s = "mail") ":" Config.Exim.handleDomains
+             else
+                 ();
+             if !aliasesChanged orelse !aliasesDefaultChanged
+                orelse !hostsChanged then
                  Slave.shellF ([Config.Exim.reload],
                                fn cl => "Error reloading exim with " ^ cl)
              else
                  ()))
 
+
+val () = Env.action_none "handleMail"
+        (fn () => TextIO.closeOut (Domain.domainFile "mail"))
+
 end