Exim configuration:

You may remember that during your Debian installation process, you were prompted to answer a few questions to configure your e-mail system. These questions and your answers were processed by the Exim Debian package's installation script, which is configured to run when the Exim package has been installed.

You can choose to re-run this script at any time, by simply running "/usr/sbin/eximconfig" as root. You can do this now:

debian:~# eximconfig 
You already have an exim configuration. \
                Continuing with eximconfig
will overwrite it. It will not keep any local \
                modifications you have made.
If that is not your intention, you should break \
                out now. If you do continue,
then your existing file will be renamed with \
                .O on the end.
[---Press return---]
            

The configuration files which the script mentions are found in the "/etc/exim" directory. The main configuration file is "/etc/exim/exim.conf".

The script will present you with a set of choices:

<!--  =================== -->
You must choose one of the options below:

 (1) Internet site; mail is sent and received directly \
                using SMTP. If your
     needs don't fit neatly into any category, you \
                probably want to start
     with this one and then edit the config file by hand.

 (2) Internet site using smarthost: You receive Internet \
                mail on this 
     machine, either directly by SMTP or by running \
                a utility such as 
     fetchmail. Outgoing mail is sent using a smarthost. \
                Optionally with
     addresses rewritten. This is probably what you want \
                for a dialup
     system.

 (3) Satellite system: All mail is sent to another machine, \
                called a "smart 
     host" for delivery. root and postmaster mail is \
                delivered according 
     to /etc/aliases. No mail is received locally.

 (4) Local delivery only: You are not on a network. \
                Mail for local users is delivered.

 (5) No configuration: No configuration will be done now; \
                your mail system 
     will be broken and should not be used. You must \
                then do the 
     configuration yourself later or run this script, \
                /usr/sbin/eximconfig, 
     as root. Look in /usr/share/doc/exim/example.conf.gz

Select a number from 1 to 5, from the list above.
Enter value (default='1', 'x' to restart): 
            

If you are setting up the machine to act as a server, but not specifically for e-mail, and you already have a dedicated e-mail server on your network, then you should select the second option.

If you are setting up the machine to act as a desktop, you should select the third option.

If you are setting up the machine to act as a mail server, then you should select the first option:

Select a number from 1 to 5, from the list above.
Enter value (default='1', 'x' to restart): 1
<!-- ====================== -->
What is the 'visible' mail name of your system? \
                This will appear on 
From: lines of outgoing messages.
Enter value (default='debian', 'x' to restart):    
            

Here you are prompted for the mail domain of your system. If your server was called "server.example.com", then you would probably want to configure your mail name as "example.com"; ie, e-mail addresses will have the form "user@example.com".

Enter value (default='debian', 'x' to restart): example.com
<!-- =========================== -->
Does this system have any other names which may \
                appear on incoming
mail messages, apart from the visible name above \
                (example.com) and
localhost?

By default all domains will be treated the same; \
                if you want different 
domain names to be treated differently, you will \
                need to edit the config 
file afterwards: see the documentation for the \
                "domains" director option.

If there are any more, enter them here, separated \
                with spaces or commas.  
If there are none, say 'none'.
Enter value (default='none', 'x' to restart):
            

This question relates to "virtual domains" which you might host on your system. As stated above, the simple configuration system can only handle treating all virtual domains in the same manner, and this is fine for most simple setups.

For example, we may wish to receive e-mail destined for "user@example.org" (_.org_) as well as that destined for "user@example.com":

Enter value (default='none', 'x' to restart): example.org
<!-- ============================== -->

            

Again, as stated above, e-mail destined for either domain will be treated equally.

All mail from here or specified other local machines \
                to anywhere on
the internet will be accepted, as will mail from \
                anywhere on the 
internet to here. 

Are there any domains you want to relay mail for\
                ---that is, you are 
prepared to accept mail for them from anywhere \
                on the internet, but
they are not local domains.

If there are any, enter them here, separated with \
                spaces or commas. You
can use wildcards. If there are none, say 'none'. \
                If you want to relay 
mail for all domains that specify you as an MX, \
                then say 'mx'
Enter value (default='none', 'x' to restart): 
            

This question relates to any domains for which we are the backup mailserver. Although you can tell Exim to use MX records to determine this, rather than using a hardcoded list, this is not recommended.

Enter value (default='none', 'x' to restart): 
<!--
==================== -->
Obviously, any machines that use us as a smarthost \
                have to be excluded
from the relaying controls, as using us to relay mail \
                for them is the
whole point.

Are there any networks of local machines you want \
                to relay mail for?

If there are any, enter them here, separated with \
                spaces or commas.  You
should use the standard address/length format \
                (e.g. 194.222.242.0/24)
If there are none, say 'none'.

You need to double the colons in IPv6 addreses \
                (e.g.  5f03::1200::836f::::/48)
Enter value (default='none', 'x' to restart): 
            

Here you must specify a list of machines and/or networks for which we will relay mail for. Be very careful with your answer here, otherwise you could be allowing untrusted people to use your mail server!

You should normally only specify your own network block:

Enter value (default='none', 'x' to restart): 192.168.1.0/24
            

This means that any machines on the 192.168.1.0/24 network will be able to use your machine as an SMTP relay.

Enter value (default='none', 'x' to restart): 192.168.1.0/24
Names are localhost:example.com:example.com!
<!--======================== -->
Mail for the 'postmaster' and 'root' accounts is \
                usually redirected
to one or more user accounts, of the actual \
                system administrators.
By default, I'll set things up so that mail for \
                'postmaster' and for
various system accounts is redirected to \
                'root', and mail for 'root'
is redirected to a real user.  This can be \
                changed by editing /etc/aliases.

Note that postmaster-mail should usually be \
                read on the system it is
directed to, rather than being forwarded elsewhere,\
                so (at least one of)
the users you choose should not redirect their \
                mail off this machine.

Which user account(s) should system \
                administrator mail go to ?
Enter one or more usernames separated \
                by spaces or commas .  Enter
'none' if you want to leave this mail in \
                'root's mailbox - NB this
is strongly discouraged.  Also, note that \
                usernames should be lowercase!
            

As directed above, you should direct e-mail for the 'postmaster' and 'root' accounts to a normal user account, preferably your own.

Enter value ('x' to restart): student
            

These particular settings can be modified later in the /etc/aliases file.

Once that's done, you'll be presented with a configuration summary:

The following configuration has been entered:
<!--
======================== -->
Mail generated on this system will have 'example.com' used
as the domain part (after the @) in the From: field \
                and similar places.

The following domain(s) will be recognised as \
                referring to this system:
 localhost, example.com, example.com

Mail for postmaster, root, etc. will be sent to student.

Local mail is delivered.

Outbound remote mail is looked up in the Internet \
                DNS, and delivered
using that data if any is found; otherwise such \
                messages are bounced.


Note that you can set email addresses used for \
                outgoing mail by editing
/etc/email-addresses.

Is this OK ?  Hit Return or type 'y' to confirm it \
                and install,
or 'n' to make changes (in which case we'll go \
                round again, giving you
your previous answers as defaults.     (Y/n) 
            

If you're happy with the configuration, you can simply hit Enter:

your previous answers as defaults.     (Y/n) Y

Keeping previous /etc/exim/exim.conf as /etc/exim/exim.conf.O

Keeping previous /etc/aliases as /etc/aliases.O

Keeping previous /etc/mailname as /etc/mailname.O

Configuration installed.

debian:~# 
            

Once you've reached this point, you should inspect the /etc/exim/exim.conf file to familiarise yourself with its contents.

Some of the more important options are:

qualify_domain = example.com
            

This specifies the domain which will be appended to any addresses which do not already have one.

local_domains = localhost:example.com:example.org
            

This list of domains specifies which @domains are considered to be local. Exim will then attempt to deliver any e-mail to these addresses in the relevant file in /var/spool/mail/${user}, where user is taken from the address "user@domain".

relay_domains =
            

This is a list of domains for which we accept e-mail, although we don't consider them to be local domains. These are domains for which we are a backup or secondary mail server.

host_accept_relay = 127.0.0.1 : ::::1 : 192.168.1.0/24
            

This is the list of networks for which we will act as an SMTP server, and thus relay mail for.

The /etc/aliases file contains a simple list in the following format:

postmaster: root
root: student
            

In the above example, Exim will redirect e-mail destined for "postmaster" to "root", and will in turn redirect e-mail for "root" to "student".

You can also specify multiple target addresses, separated with a comma:

root: student1, student2