.section "Dynamically loaded module support" "SECTdynamicmodules"
.cindex "lookup modules"
.cindex "router modules"
+.cindex "transport modules"
+.cindex "authenticator modules"
.cindex "dynamic modules"
.cindex ".so building"
On some platforms, Exim supports not compiling all lookup types directly into
This permits packagers to build Exim with support for lookups with extensive
library dependencies without requiring all systems to install all of those
dependencies.
-Most, but not all, lookup types can be built this way.
-
.new
-Similarly, router drivers can be built as external modules.
-This permits a smaller exim binary, growing only as needed for the
-runtime cofiguration.
+Any combination of lookup types can be built this way.
+All of the lookup modules found as an Exim process starts will be loaded.
.wen
-Set &`LOOKUP_MODULE_DIR`& to the directory into which the modules will be
+For building
+set &`LOOKUP_MODULE_DIR`& to the directory into which the modules will be
installed; Exim will only load modules from that directory, as a security
measure. You will need to set &`CFLAGS_DYNAMIC`& if not already defined
for your OS; see &_OS/Makefile-Linux_& for an example.
LOOKUP_SQLITE=2
LOOKUP_MYSQL=2
.endd
+Set also &`LOOKUP_`&<&'lookup_type'&>&` INCLUDE`& and
+&`LOOKUP_`&<&'lookup_type'&>`_LIBS if needed for each lookup type,
+ensuring that duplicates are not present in more global values.
+
+.new
+Similarly, authenticator, router and transport drivers can be built
+as external modules.
+Modules will be searched for as demanded by the runtime configuration,
+permitting a smaller Exim binary.
+
+For building, as above but using
+&`AUTH_*`&, &`ROUTER_*`& and &`TRANSPORT_*`& instead of &`LOOKUP_*`&,
+.wen
.section "The building process" "SECID29"
The new version avoids issues with tainted
arguments explicitly expanded as part of the query.
The entire string within the braces becomes tainted,
-including the server sepcification - which is not permissible.
+including the server specification - which is not permissible.
If the older sytax is used, a warning message will be logged.
This syntax will be removed in a future release.
.cindex "underscore in EHLO/HELO"
This option can be set to a string of rogue characters that are permitted in
non-ip-literal EHLO and HELO names in addition to the standard letters, digits,
-hyphens, and dots. For examplem if you really must allow underscores,
+hyphens, and dots. For example if you really must allow underscores,
you can set
.code
helo_allow_chars = _
.vitem &*void&~debug_printf(char&~*,&~...)*&
-This is Exim's debugging function, with arguments as for &'(printf()'&. The
+This is Exim's debugging function, with arguments as for &'printf()'&. The
output is written to the standard error stream. If no debugging is selected,
calls to &'debug_printf()'& have no effect. Normally, you should make calls
conditional on the &`local_scan`& debug selector by coding like this: