What is the structure of Exim config files?

Posted on 2009-04-27
Last Modified: 2012-05-06

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?

Question by:Richie4236
    LVL 5

    Expert Comment


    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

    revert back if you still have issues in the exim

    Author Comment

    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.
    LVL 5

    Expert Comment


    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

    Author Comment

    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?
    LVL 5

    Accepted Solution


    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

    Featured Post

    How to run any project with ease

    Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
    - Combine task lists, docs, spreadsheets, and chat in one
    - View and edit from mobile/offline
    - Cut down on emails

    Join & Write a Comment

    Microsoft has released various new features which are capable of handling various tasks. One of these tasks is ‘Migration from pop3 to Exchange Server’. Pop3 data stores various data along mailboxes like contacts, tasks, etc. So, it becomes the need…
    Workplace bullying has increased with the use of email and social media. Retain evidence of this with email archiving to protect your employees.
    In this video we show how to create an Accepted Domain in Exchange 2013. We show this process by using the Exchange Admin Center. Log into Exchange Admin Center.: First we need to log into the Exchange Admin Center. Navigate to the Mail Flow >> Ac…
    To show how to create a transport rule in Exchange 2013. We show this process by using the Exchange Admin Center. Log into Exchange Admin Center.: First we need to log into the Exchange Admin Center. Navigate to the Mail Flow >> Rules tab.:  To cr…

    754 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    24 Experts available now in Live!

    Get 1:1 Help Now