update-exim4.conf - Generate exim4 configuration files.
update-exim4.conf [-v|--verbose] [-h|--help] [--keepcomments]
[--removecomments] [-o|--output file]
- Generate temporary configuration file, check its validity
and exit with either success (exitcode 0) or an error (exitcode 1). On
success the temporary file is deleted, otherwise the file is left for
- -d|--confdir directory
- Read input from directory instead of /etc/exim4.
- Show short help message and exit
- Do not remove comment lines from the output file.
- -o|--output file
- Write output to file instead of
- Remove comment lines from the output file. [Default]
- Enable verbose mode
The script update-exim4.conf
generates the main configuration files
for Exim v4
by merging the
data in the template file /etc/exim4/exim4.conf.template
or the ones in
directory tree respectively and
to the output file
If dc_use_split_config in /etc/exim4/update-exim4.conf.conf specifies a split
processes the /etc/exim4/conf.d
subdirectories in the order main, acl, router, transport, retry, rewrite and
auth. Within each directory it takes files in lexical sort order by file name.
It concatenates all these files and makes the debconf replacement described
If you are not using split configuration update-exim4.conf
/etc/exim4/exim4.conf.localmacros (if this file exists) and
/etc/exim4/exim4.conf.template (in this order) and makes the debconf
replacement described below.
In either case, before outputting the result to
number of exim configuration macros from the contents of dc_something from
/etc/exim4/update-exim4.conf.conf and inserts them into the configuration
right after the definition of the exim configuration macro UPEX4CmacrosUPEX4C
(which is only used as placeholder for this case). The macro definitions are
bracketed with .ifdef clauses to allow the local admin to override the values
with earlier definitions. update-exim4.conf
makes no other changes to
the configuration. 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
to stop debconf from asking you questions about exim4.
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.
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).
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 the new configuration will be written to /var/lib/exim4/config.autogenerated,
will check the validity of the freshly generated
configuration. If the new file is detected as invalid, update-exim4.conf
leaves the old /var/lib/exim4/config.autogenerated untouched and exits with an
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
If the new configuration will be written to some other file, no validity
checking occurs and that file will always be overwritten.
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
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 are keeping sensitive information (LDAP credentials
et. al.) in there.
All lists given in configuration variables are semicolon-separated. In the past,
they used to be colon separated. This was changed to semicolon separation to
make specification of IPv6 addresses easier. Backwards compatibility is
preserved, so that old configurations using colons as separators do still
work. Colons are deprecated and might stop working in a later release. If you
need to specify a single IPv6 address in a field that is defined as a list of
host names or IP addresses, please prefix "<;" to explicitly
specify the list separator as a semicolon. Otherwise, the code cannot tell an
IP address from a colon-separated list of strange host names.
Using lookups like "dsearch;something" in update-exim4.conf.conf has
never been supported and does no longer work! If you need this, please convert
to directly setting the appropriate macros.
evaluates these patterns in
- The octal file mode of the generated file.
- The main configuration type. Sets macro
DC_eximconfig_configtype. The macro usually contains a shorthand for one
of the choices for the “General type of mail configuration”
debconf question (See README.Debian).
dc_eximconfig_configtype <-> debconf
- internet site; mail is sent and received directly using
- mail sent by smarthost; received via SMTP or fetchmail
- mail sent by smarthost; no local mail
- local delivery only; not on a network
- no configuration at this time
- Boolean option that controls whether the local mailname in
the headers of outgoing mail should be hidden. (Only effective for
“smarthost” and “satellite”. Sets macro
- Internal use only Boolean option that is set by the
maintainer scripts after adding the contents of /etc/mailname to the
dc_other_hostnames list. This is a transition helper since it wouldn't
otherwise be possible to see whether that domain name has been removed
from dc_other_hostnames on purpose. This is not used by update-exim4.conf,
and no macro is set.
- 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. The value is not written
to an exim macro.
- name of the default transport for local mail delivery.
Defaults to mail_spool if unset, use maildir_home for delivery to
~/Maildir/. Sets macro LOCAL_DELIVERY.
- List of IP addresses the Exim daemon should listen on. If
this is left empty, Exim listens on all interfaces. Sets macro
MAIN_LOCAL_INTERFACES only if there is a non-empty value.
- Boolean option to activate some option to minimize DNS
lookups, if set to “true” a macro DC_minimaldns is defined.
If true, the macro DC_minimaldns is set to 1, and the macro
MAIN_HARDCODE_PRIMARY_HOSTNAME is set to the appropriately post-processes
output of hostname --fqdn.
- is used to build the local_domains list, together with
“localhost”. This is the list of domains for which this
machine should consider itself the final destination. The local_domains
list ends up in the macro MAIN_LOCAL_DOMAINS.
- 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. For
“satellite” only, this value is also the host to send local
mail to. Sets macro DCreadhost.
- is a list of domains for which we accept mail from anywhere
on the Internet but which are not delivered locally, e.g. because this
machine serves as secondary MX for these domains. Sets
- A list of machines for which we serve as smarthost. Please
note that 127.0.0.1 and ::1 are always permitted to relay since
/usr/lib/sendmail is available anyway and relay control doesn't make sense
here. Sets macro MAIN_RELAY_NETS.
- List of hosts to which all outgoing mail is passed to and
that takes care of delivering it. Each of the hosts is tried, in the order
specified (See exim specification, chapter 20.5). All deliveries go out to
TCP port 25 unless a different port is specified after the host name,
separated from the host name by two colons. Colons in IPv6 addresses need
to be doubled. If a port number follows, IP addresses may be enclosed in
brackets, which might be the only possibility to specify delivery to an
IPv6 address and a different port. Examples:
host.domain.example deliver to host looked up on DNS, tcp/25
host.domain.example::587 deliver to host looked up on DNS, tcp/587
192.168.2.4 deliver to IPv4 host, tcp/25
192.168.2.4::587 deliver to IPv4 host, tcp/587
[192.168.2.4]::587 deliver to IPv4 host, tcp/587
2001::0db8::f::4::::2 deliver to IPv6 host, tcp/25
[2001::0db8::f::4::::2]::587 deliver to IPv6 host, tcp/587
This is used as value of the DCsmarthost macro.
- 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. This does not set any macros.
- The macro MAIN_PACKAGE_VERSION is set to Debian's
Version number of
- the package being installed for convenient inclusion in the
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
This manual page needs a major re-work. If somebody knows better groff than us
and has more experience in writing manual pages, any patches would be greatly
- Exim's main configuration file
- Optional manually managed Exim main configuration file.
Takes precedence over debconf managed one if it exists.
- Configuration file being written by exim4-config maintainer
scripts, which may be hand-edited, and is read as input by
/usr/share/doc/exim4-base/ and for
general notes and details about interaction with debconf
Andreas Metzler <ametzler at debian.org>
Marc Haber <firstname.lastname@example.org>