Exim-4.97
Introduction to Exim
The Exim package contains a Mail
Transport Agent written by the University of Cambridge, released
under the GNU Public License.
Note
Development versions of BLFS may not build or run
some packages properly if LFS or dependencies have been updated
since the most recent stable versions of the books.
Package Information
Additional Downloads
Exim Dependencies
Required
libnsl-2.0.1,
File-FcntlLock-0.22 and
pcre2-10.42
Optional
TDB
(alternative to GDBM, built in LFS),
Cyrus SASL-2.1.28,
libidn-1.41,
Linux-PAM-1.5.3,
MariaDB-10.11.5 or
MySQL,
OpenLDAP-2.6.6,
GnuTLS-3.8.2,
PostgreSQL-16.1,
SQLite-3.44.2,
a graphical environment,
Heimdal GSSAPI,
libspf2, and
OpenDMARC
Installation of Exim
Before building Exim, as the
root
user you should create
the group and user exim
which
will run the exim daemon:
groupadd -g 31 exim &&
useradd -d /dev/null -c "Exim Daemon" -g exim -s /bin/false -u 31 exim
Configure Exim with the following commands:
sed -e 's,^BIN_DIR.*$,BIN_DIRECTORY=/usr/sbin,' \
-e 's,^CONF.*$,CONFIGURE_FILE=/etc/exim.conf,' \
-e 's,^EXIM_USER.*$,EXIM_USER=exim,' \
-e '/# USE_OPENSSL/s,^#,,' src/EDITME > Local/Makefile &&
printf "USE_GDBM = yes\nDBMLIB = -lgdbm\n" >> Local/Makefile
If you want to add Linux PAM support, also run the following commands:
sed -i '/# SUPPORT_PAM=yes/s,^#,,' Local/Makefile
echo "EXTRALIBS=-lpam" >> Local/Makefile
Build Exim with the following command:
make
This package does not come with a test suite.
Now, as the root
user:
make install &&
install -v -m644 doc/exim.8 /usr/share/man/man8 &&
install -vdm 755 /usr/share/doc/exim-4.97 &&
cp -Rv doc/* /usr/share/doc/exim-4.97 &&
ln -sfv exim /usr/sbin/sendmail &&
install -v -d -m750 -o exim -g exim /var/spool/exim
Command Explanations
sed -e ... > Local/Makefile: Most of
Exim's configuration options are defined
in Local/Makefile
, which is created from
the src/EDITME
file. This command specifies the
minimum set of options. Descriptions for the options are listed below.
printf ... > Local/Makefile: Setting those
variables allows to use GDBM instead of the default Berkeley DB. Remove
this command if you have installed Berkeley DB (deprecated).
BIN_DIRECTORY=/usr/sbin
: This installs all of
Exim's binaries and scripts in
/usr/sbin
.
CONFIGURE_FILE=/etc/exim.conf
: This installs
Exim's main configuration file in
/etc
.
EXIM_USER=exim
: This tells
Exim that after the daemon no longer needs
root
privileges, the process
needs to hand off the daemon to the exim
user.
SUPPORT_TLS=yes
: This allows to support
STARTTLS connections. If you use this option, you need to select
whether OpenSSL or
GnuTLS is used (see
src/EDITME
).
USE_OPENSSL_PC=openssl
: This tells the
build system to use OpenSSL, and to
find the needed libraries with pkg-config.
#EXIM_MONITOR
: This defers building the
Exim monitor program, as it requires
X Window System support, by commenting out the
EXIM_MONITOR
line in the
Makefile
. If you wish to build the monitor program,
omit this sed command and issue the following command
before building the package (modify
Local/eximon.conf
, if necessary):
cp exim_monitor/EDITME Local/eximon.conf.
ln -sfv exim /usr/sbin/sendmail: Creates a link to
sendmail for applications which need it.
Exim will accept most
Sendmail command-line options.
install -v -m750 -o exim -g exim /var/spool/exim:
Since /var/spool is owned by root and this version of
exim drops
root
privileges early, to run
as user exim
, it cannot create
the /var/spool/exim
directory. As
a work around, it is created manually.
Adding Additional Functionality
To utilize some or all of the dependency packages, you'll need to
modify Local/Makefile
to include the appropriate
directives and parameters to link additional libraries before you build
Exim. Local/Makefile
is
heavily commented with instructions on how to do this. Listed below is
additional information to help you link these dependency packages or
add additional functionality.
If you wish to build and install the
.info
documentation, refer to
https://exim.org/exim-html-4.97/doc/html/spec_html/ch04.html#SECTinsinfdoc.
If you wish to build in Exim's interfaces for calling virus and spam
scanning software directly from access control lists, uncomment the
WITH_CONTENT_SCAN=yes
parameter and review the
information found at https://exim.org/exim-html-4.97/doc/html/spec_html/ch45.html.
To use a backend database other than GDBM
, see the instructions at https://exim.org/exim-html-4.97/doc/html/spec_html/ch04.html#SECTdb.
For SSL functionality, see the instructions at https://exim.org/exim-html-4.97/doc/html/spec_html/ch04.html#SECTinctlsssl
and https://exim.org/exim-html-4.97/doc/html/spec_html/ch42.html.
For tcpwrappers functionality, see the
instructions at https://exim.org/exim-html-4.97/doc/html/spec_html/ch04.html#SECID27.
For information about adding authentication mechanisms to the
build, see chapters 33—41 of https://exim.org/exim-html-4.97/doc/html/spec_html/index.html.
For information about linking Linux-PAM,
refer to the instructions https://exim.org/exim-html-4.97/doc/html/spec_html/ch11.html#SECTexpcond.
For information about linking database engine libraries used for
Exim name lookups, see the instructions at
https://exim.org/exim-html-4.97/doc/html/spec_html/ch09.html.
If you wish to add Readline support to
Exim when invoked in “test
expansion” (-be
) mode, see the information in
the -be
section of https://exim.org/exim-html-4.97/doc/html/spec_html/ch05.html#id2525974.
You may wish to modify the default configuration and send log files to
syslog instead of the default
/var/spool/exim/log
directory. See
the information at https://exim.org/exim-html-4.97/doc/html/spec_html/ch-log_files.html.
A wealth of information can be also found at the Exim Wiki.
Configuring Exim
Config Files
/etc/exim.conf
and
/etc/aliases
Configuration Information
Review the file /etc/exim.conf
, and modify any
settings to suit your needs. Note that the default configuration
assumes that the /var/mail
directory is world writable, but has the sticky bit set. If you want
to use the default configuration, issue as the root
user:
chmod -v a+wt /var/mail
A default (nothing but comments) /etc/aliases
file is installed during the package installation if this file did not
exist on your system. Create the necessary aliases and start the
Exim daemon using the following commands:
cat >> /etc/aliases << "EOF"
postmaster: root
MAILER-DAEMON: root
EOF
/usr/sbin/exim -bd -q15m
Note
To protect an existing /etc/aliases
file,
the command above appends these aliases to it. This file should be
checked and duplicate aliases removed, if present.
The /usr/sbin/exim -bd -q15m command starts
the Exim daemon with a 15 minute interval
in processing the mail queue. Adjust this parameter to suit your
desires.
Linux PAM Configuration
If you have built Exim with
Linux PAM support, you need to create a
PAM configuration file to get it working
correctly with BLFS.
Issue the following command as the root
user to create the configuration
file for Linux PAM:
cat > /etc/pam.d/exim << "EOF"
# Begin /etc/pam.d/exim
auth include system-auth
account include system-account
session include system-session
# End /etc/pam.d/exim
EOF
Systemd Unit
To automatically start exim at boot, install the
exim.service
unit
included in the
blfs-systemd-units-20230816 package:
make install-exim
Contents
Installed Programs: exicyclog, exigrep, exim, exim-4.97-2, exim_checkaccess,
exim_dbmbuild, exim_dumpdb, exim_fixdb, exim_lock, exim_tidydb,
eximstats, exinext, exipick, exiqgrep, exiqsumm, exiwhat, and
optionally, eximon, eximon.bin, and sendmail (symlink)
Installed Libraries: None
Installed Directories: /usr/share/doc/exim-4.97 and /var/spool/exim
Short Descriptions
exicyclog |
cycles Exim log files
|
exigrep |
searches Exim log files
|
exim |
is a symlink to the exim-4.97-2
MTA daemon
|
exim-4.97-2 |
is the Exim mail transport agent daemon
|
exim_checkaccess |
states whether a given recipient address from a given host is
acceptable or not
|
exim_dbmbuild |
creates and rebuilds Exim databases
|
exim_dumpdb |
writes the contents of Exim
databases to the standard output
|
exim_fixdb |
modifies data in Exim databases
|
exim_lock |
locks a mailbox file
|
exim_tidydb |
removes old records from Exim
databases
|
eximstats |
generates mail statistics from Exim
log files
|
exinext |
queries remote host retry times
|
exipick |
selects messages based on various criteria
|
exiqgrep |
is a utility for selective queue listing
|
exiqsumm |
produces a summary of the messages in the mail queue
|
exiwhat |
queries running Exim processes
|
eximon |
is a start-up shell script for eximon.bin
used to set the required environment variables before running the
program
|
eximon.bin |
is a monitor program which displays current information in an
X window, and also contains a menu
interface to Exim's command line
administration options
|