What is the structure of Exim config files?


I recently installed Exim to use as a front end box to separate our corporate email server from the Internet.  Works pretty well, but I need to make some changes to timeout values in the config file and I'm getting really confused.

I ran the package configuration and selected to keep everything in a single config file.  Most of the documents that I can find seem to point to point to a exim.conf file in the /etc/exim4 directory, however I cannot find this.

I "think" the config file is being built from the exim.conf.template file and some other information, but I'm not sure how and where it ends up.

Can anyone fill me in on how this all works, and where I need to go to edit the timeout values for exim and add the auto_thaw option?

Who is Participating?
mail2prabirConnect With a Mentor Commented:

since it appears that you are not very comfortable with manual configuration of exim config files. i suggest you download latest exim as well as webmin for exim from


alternatively you can download it from

Exim's configuration file is in six parts, which must appear in the correct order in the file, separated by lines containing just the word `end'. These parts contain:

Main configuration settings.
Configuration settings for the transport drivers. Transports define mechanisms for copying messages to destinations.

Configuration settings for the director drivers. Directors process local addresses, that is, those with domains that match `local_domains'. These are typically (but not necessarily) delivered on the local host.
Configuration settings for the router drivers. Routers process remote addresses, that is, those with domains that do not match `local_domains'.

Retry rules, for use when a message cannot be immediately delivered.

Address rewriting rules.

Blank lines in the file are ignored, and lines starting with a # character are treated as comments and are also ignored. Note that a &&s character other than at the beginning of a line is not treated specially, and does not introduce a comment. A convenient way to create a configuration file is to start from the default, which is supplied in `src/configure.default', and add, delete, or change settings as required.

the timeout options and auto_thaw options are configurable in the main configuration file

accept_timeout option

Option: accept_timeout
Type: time
Default: 0s

This sets the timeout for accepting a non-SMTP message, that is, the maximum time that Exim waits when reading a message on the standard input. If the value is zero, it will wait for ever. This setting is overridden by the `-or' command option.

auto_thaw option

Option: auto_thaw
Type: time
Default: 0s

If this option is set to a non-zero time, a new delivery is attempted on frozen messages if this much time has passed since the message was frozen.

these options can also be passed as a part of exim commandline.

refer to exim command line reference at http://www.exim.org/exim-html-2.00/doc/html/spec_5.html

revert back if you still have issues in the exim
Richie4236Author Commented:
I'm still not sure I understand where the files are though, and how they are created.

I cannot locate a file called configure.default anywhere on my server.

The main configuration file is usually called /etc/exim.conf or /etc/exim/config in most Linux distributions, or /usr/lib/exim/config in older configurations. You can find out where the configuration file is by running the command:
$ exim -bP configure_file

You may have to edit the configuration file to reflect values specific to your site. In most common configurations there isn't a great deal to change, and a working configuration should rarely have to be modified.

By default, Exim processes and delivers all incoming mail immediately. If you have relatively high traffic, you may instead have Exim collect all messages in the so-called queue, and process them at regular intervals only.

When handling mail within a TCP/IP network, Exim is frequently run in daemon mode: at system boot time, it is invoked from /etc/init.d/exim[1] and puts itself in the background, where it waits for incoming TCP connections on the SMTP port (usually port 25). This is beneficial whenever you expect to have a significant amount of traffic because Exim doesn't have to start up for every incoming connection. Alternatively, inetd could manage the SMTP port and have it spawn Exim whenever there is a connection on this port. This configuration might be useful when you have limited memory and low mail traffic volumes.

Exim has a complicated set of command-line options, including many that match those of sendmail. Instead of trying to put together exactly the right options for your needs, you can implement the most common types of operation by invoking traditional commands like rmail or rsmtp. These are symbolic links to Exim (or if they're not, you can easily link them to it). When you run one of the commands, Exim checks the name you used to invoke it and sets the proper options itself.

There are two links to Exim that you should have under all circumstances: /usr/bin/rmail and /usr/sbin/sendmail.[2] When you compose and send a mail message with a user agent like elm, the message is piped to sendmail or rmail for delivery, which is why both /usr/sbin/sendmail and /usr/bin/rmail should point to Exim. The list of recipients for the message is passed to Exim on the command line.[3] The same happens with mail coming in via UUCP. You can set up the required pathnames to point to Exim by typing the following at a shell prompt:
$ ln -s /usr/sbin/exim /usr/bin/rmail
$ ln -s /usr/sbin/exim /usr/sbin/sendmail

If you want to dig further into the details of configuring Exim, you should consult the full Exim specification. If this isn't included in your favorite Linux distribution, you can get it from the source to Exim, or read it online from Exim's web site at http://www.exim.org.
Richie4236Author Commented:
Ran the command as you recemmended and go the following:

rgeadmin@pegasus:~$ sudo exim -bP configure_file
[sudo] password for rgeadmin:

I opened that file and at the top there's a great big warning about changes to this file being lost, and to check /usr/share/doc/exim4-base/README.Debian.gz, which doesn't exist.

Is there some way of making exim us a nice single static configuration file that I can edit?
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.