licensecriticalWritten by the HubdirectivePath to the licence file, without which the engine does not run.heartbeat-enableddirectiveWhether the engine periodically reports usage to the vendor; documented as on and as something paid licences may switch off.lockWritten by the HubdirectiveFile holding the process id, used to keep two engines from running at once.plugin-directorydirectiveDirectory of shared objects the engine loads at start-up, giving custom C code a place inside the delivery path.download-proxydirectiveProxy used specifically when fetching resources, separate from the engine's general proxy.download-user-agentdirectiveThe user-agent string the engine presents when downloading resources.proxy-serverdirectiveHTTP or SOCKS proxy used for the engine's own network calls — not for delivering mail.One undocumented directive, and an API version to matchmechanismThe engine loads shared objects from plugin-directory; the header they must be built against declares API version 8.One binary, and seven programs that are not in itWritten by the HubmechanismThe server package is one program. Every companion tool the documentation describes is a separate installation we have not made.Measure behaviour without leaving a markprocedureBaseline, local-only receiver, per-message routing, read the log, restore, compare.Drain it, stop it, and put it backWritten by the HubprocedureStop feeding it, let it finish, pause the rest — never stop the service with mail in flight.config-filestartup flagReads settings from the named file instead of /etc/mailerq/config.txt.daemonstartup flagDetaches the process from the terminal.disable-crash-poststartup flagStops crash reports from being sent to the vendor, while still producing them locally.disable-crash-reportstartup flagStops the engine from producing a crash report when it dies unexpectedly.fetch-licensestartup flagFetches a licence file from the vendor using an identifier, then exits.Hand control back to the engineplugin functionThe three ways a plugin finishes: done, carry on, or try this again.The plugin's own stateplugin functionA slot where a plugin keeps its own state across calls.Share the engine's event loopplugin functionA plugin runs inside the engine's libev loop, and gets watchers and timers rather than threads.Write to the engine's application logplugin functionThe one output channel a plugin has: the engine's own log, at one of three priorities.