Enable verbose mode, tell about ignored, user modified files
-h|--help
Show short help message and exit
--keepcomments
Do not remove comment lines from the output file.
--removecomments
Remove comment lines from the output file. [Default]
-o|--output file
Write output to file instead of /var/lib/exim4/config.autogenerated.
-d|--confdir directory
Read input from directory instead of /etc/exim4.
DESCRIPTION
The script
update-exim4.conf generates the main configuration files
/var/lib/exim4/config.autogenerated for
Exim v4 by merging the data in the template file
/etc/exim4/exim4.conf.template or the ones in the
/etc/exim4/conf.d directory tree respectively and
/etc/exim4/update-exim4.conf.conf to the output file
/var/lib/exim4/config.autogenerated.
Depending on the setting of dc_use_split_config in
/etc/exim4/update-exim4.conf.conf
update-exim4.conf either sorts the files in the subdirectories main, acl, router, transport,
retry, rewrite and auth of /etc/exim4/conf.d in the lexical sort order,
concatenates them and replaces the patterns DEBCONFsomethingDEBCONF or only
replaces the patterns DEBCONFsomethingDEBCONF listed in
/etc/exim4/exim4.conf.template.
It does not change the other contents of these files.
This makes it very simple to make small changes to the configuration and
still have the benefits of debconf.
On the other hand if you don't want to manage exim4.conf with debconf
install your own handcrafted version as /etc/exim4/exim4.conf.
Exim will use this file if it exists and ignore the autogenerated one.
Additionally you might want to set
dc_eximconfig_configtype=none in /etc/exim4/update-exim4.conf.conf to stop debconf from asking you questions about exim4.
update-exim4.conf exits silently and does nothing if /etc/exim4/exim4.conf exists and -o
was not used to direct the output to a different file than
/var/lib/exim4/config.autogenerated.
update-exim4.conf will only use files in the conf.d directory that have a filename which
consists only of letters, numbers, underscores and hyphens
([:alnum:]_-), similar to
run-parts(8) . Additionally,
update-exim4.conf will use /etc/exim4/conf.d/foo/bar.rul instead of
/etc/exim4/conf.d/foo/bar if the .rul file exists. This is meant to be
helpful for easy interaction with packages extending Exim.
If
update-exim4.conf is called without the option -o, it checks the validity of the
freshly generated configuration file and exits with an error. In that
case, the new file is not installed to /var/lib/exim4/config.autogenerated.
However, there are still possible invalidities that can only be
detected at run time. This most notably applies to errors in
expressions that are expanded at run time.
EXAMPLES
You want to be able to check exim's queue as normal user: Generate a new
file, e.g. /etc/exim4/conf.d/main/40_local_mailq, containing only the line
queue_list_requires_admin = false
NOTES
update-exim4.conf changes the file permissions of the output file to the value of the environment
variable CFILEMODE. If CFILEMODE is neither set in
/etc/exim4/update-exim4.conf.conf nor in the environment it defaults to 0644.
Change this to 0640 if you're keeping sensible information (LDAP credentials
et. al.) in there.
FILES
update-exim4.conf manages these files:
/var/lib/exim4/config.autogenerated
Exim's main configuration file
REPLACEMENT PATTERNS
update-exim4.conf know about these identifiers:
DEBCONFrelay_domainsDEBCONF
is replaced by the contents of dc_relay_domains in
/etc/exim4/update-exim4.conf.conf
DEBCONFrelay_netsDEBCONF
is replaced by the contents of dc_relay_nets in
/etc/exim4/update-exim4.conf.conf
DEBCONFvisiblenameDEBCONF
holds the contents of (the first line of) /etc/mailname
DEBCONFreadhostDEBCONF
corresponds to dc_readhost in /etc/exim4/update-exim4.conf.conf and holds
the visible mailname for satellite-systems.
DEBCONFsmarthostDEBCONF
corresponds to dc_smarthost in /etc/exim4/update-exim4.conf.conf and
contains the name of the SMTP smarthost that takes care of outgoing mail.
DEBCONFconfigtypeDEBCONF
dc_eximconfig_configtype in /etc/exim4/update-exim4.conf.conf.
DEBCONFpackageversionDEBCONF
contains the complete Debian version-number of the exim4-config
package. You could use this in smtp_banner or received_header_text.
DEBCONFlistenonpublicDEBCONF
This is replaced with
"local_interfaces = <value of dc_local_interfaces>" if
dc_local_interfaces is set to a non-empty value. Otherwise, it is
replaced with an empty string, causing exim to listen on all local
interfaces.
If dc_local_interfaces is set to a non-empty value,
DEBCONFminimaldnsDEBCONF
is replaced with "DC_minimaldns = 1" if dc_minimaldns is set to true
and to an empty string otherwise.
DEBCONFnever_usersDEBCONF
is deleted. (In versions prior 4.30-7 it was used to set the never_users
option.)
DEBCONF_hardcode_primary_hostname_DEBCONF
If dc_minimaldns is set to true
update-exim4.conf tries to guess the primary hostname using hostname --fqdn and replaces
this pattern with "primary_hostname = <guessed value>".
DEBCONFlocaldeliveryDEBCONF
is replaced by the contents of dc_localdelivery in
/etc/exim4/update-exim4.conf.conf. It should be set to the default
transport for local delivery, i.e. usually mail_spool or maildir_home. It
defaults to mail_spool if dc_localdelivery is unset.
DEBCONFrewriteemailaddresses_mailnameDEBCONF
is replaced with this rewriting rule:
*@mailname${lookup{${local_part}}lsearch{/etc/email-addresses}{$value}fail} Ffrs
with mailname being replaced by the contents of /etc/mailname.
CONFIGURATION VARIABLES
update-exim4.conf evaluates these patterns in
/etc/exim4/update-exim4.conf.conf:
dc_eximconfig_configtype
The main configration type. One of "internet", "smarthost",
"satellite", "local", "exim3manual" or "none".
dc_local_interfaces
Used as the value for
Exim's main configuration option local_interfaces.
dc_other_hostnames
is used to build the local_domains hostlist, together with "localhost"
and the mailname. This is the list of domains for which this machine should
consider itself the final destination.
dc_readhost
For "smarthost" and "satellite" it is possible to hide the local
mailname in the headers of outgoing mail and replace it with this value
instead, using rewriting.
dc_relay_domains
is used to populate the relay_to_domains domainlist, a list of domains for
which we accept mail from anywhere on the Internet but which are not delvered
locally, e.g. because this machine serves as secondary MX for these domains.
dc_relay_nets
A list of machines (hostlist) for which we serve as smarthost. Used to
populate the relay_from_hosts hostlists.
dc_smarthost
List of hosts to which all outgoing mail is passed to and that takes care
of delivering it. Multiple hosts are colon separated. Each of the
hosts is tried, in the order specified (See exim specification,
chapter 20.5). All deliveries go out to TCP port 25. Specifying different
ports is not (yet) possible due to upstream restrictions. Used as value
of the DCsmarthost macro.
dc_minimaldns
Boolean option to activate some option to minimize DNS lookups, if set to
"true" a macro DC_minimaldns is defined.
CFILEMODE
The octal file mode of the generated file.
dc_use_split_config
Boolean option that controls whether
update-exim4.conf uses /etc/exim4/exim4.conf.template ("false") or the multiple files
below /etc/exim4/conf.d ("true") as input.
dc_hide_mailname
Boolean option that controls whether the local mailname in the headers of
outgoing mail should be hidden. (Only effective for "smarthost" and
"satellite".
dc_localdelivery
name of the default transport for local mail delivery. Defaults to mail_spool
if unset, use maildir_home for delivery to ~/Maildir/. This setting
does not correspond to a Debconf question and needs to be set manually.
ue4c_keepcomments
Boolean option that controls whether
update-exim4.conf strips the comments from the target configuration file (default) or
leaves them in. This can be overridden by the command line options
--keepcomments and --removecomments.
RECOMMENDED USAGE
If you are running exim as daemon (as it is in the default setup of the
Debian packages) you should not invoke
update-exim4.conf directly when exim is running. For SMTP receiving or queue running,
exim forks, and the new processes would use the new configuration file,
while the original main exim daemon would still use the old configuration
file. You should use
invoke-rc.d exim4 restart instead.
SEE ALSO
exim(8) , /usr/share/doc/exim4-base/ and for general notes and details about interaction
with debconf
/usr/share/doc/exim4-base/README.Debian.gz
AUTHOR
Andreas Metzler <ametzler at downhill.at.eu.org>
Marc Haber <mh+debian-packages@zugschlus.de>