Introduction to sendmail
The sendmail package contains a
Mail Transport Agent (MTA).
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
sendmail Dependencies
Required
OpenLDAP-2.6.9 (client)
Recommended
Cyrus SASL-2.1.28
Optional
ghostscript-10.04.0 (for creating PDF
documentation), Procmail-3.24 (the configuration proposed
below requires that procmail be present at run-time),
and nph
Installation of sendmail
Before building sendmail, create
the required user, group and directory with the following commands
issued as the root
user:
groupadd -g 26 smmsp &&
useradd -c "Sendmail Daemon" -g smmsp -d /dev/null \
-s /bin/false -u 26 smmsp &&
chmod -v 1777 /var/mail &&
install -v -m700 -d /var/spool/mqueue
Note
See the source tree sendmail/README
file for information on linking optional packages into the build.
Use the example below, which adds support for SASL, StartTLS
(OpenSSL) and OpenLDAP, as a starting point. Of course,
modify it to suit your particular needs.
cat >> devtools/Site/site.config.m4 << "EOF"
APPENDDEF(`confENVDEF',`-D STARTTLS -D SASL -D LDAPMAP -D HASFLOCK')
APPENDDEF(`confLIBS', `-lssl -lcrypto -lsasl2 -lldap -llber')
APPENDDEF(`confINCDIRS', `-I/usr/include/sasl')
EOF
Install sendmail with the
following commands:
cat >> devtools/Site/site.config.m4 << "EOF"
define(`confMANGRP',`root')
define(`confMANOWN',`root')
define(`confSBINGRP',`root')
define(`confUBINGRP',`root')
define(`confUBINOWN',`root')
EOF
sed -i 's|/usr/man/man|/usr/share/man/man|' \
devtools/OS/Linux &&
cd sendmail &&
sh Build &&
cd ../cf/cf &&
cp generic-linux.mc sendmail.mc &&
sh Build sendmail.cf
This package does not come with a test suite.
Now, as the root
user:
install -v -d -m755 /etc/mail &&
sh Build install-cf &&
cd ../.. &&
sh Build install &&
install -v -m644 cf/cf/{submit,sendmail}.mc /etc/mail &&
cp -v -R cf/* /etc/mail &&
install -v -m755 -d /usr/share/doc/sendmail-8.18.1/{cf,sendmail} &&
install -v -m644 CACerts FAQ KNOWNBUGS LICENSE PGPKEYS README RELEASE_NOTES \
/usr/share/doc/sendmail-8.18.1 &&
install -v -m644 sendmail/{README,SECURITY,TRACEFLAGS,TUNING} \
/usr/share/doc/sendmail-8.18.1/sendmail &&
install -v -m644 cf/README /usr/share/doc/sendmail-8.18.1/cf &&
for manpage in sendmail editmap mailstats makemap praliases smrsh
do
install -v -m644 $manpage/$manpage.8 /usr/share/man/man8
done &&
install -v -m644 sendmail/aliases.5 /usr/share/man/man5 &&
install -v -m644 sendmail/mailq.1 /usr/share/man/man1 &&
install -v -m644 sendmail/newaliases.1 /usr/share/man/man1 &&
install -v -m644 vacation/vacation.1 /usr/share/man/man1
Install the sendmail Installation
and Operations Guide with the following commands:
Note
Remove op.pdf
from the make and install commands below if you
don't have Ghostscript
installed.
cd doc/op &&
sed -i 's/groff/GROFF_NO_SGR=1 groff/' Makefile &&
make op.txt op.pdf
Now, as the root
user:
install -v -d -m755 /usr/share/doc/sendmail-8.18.1 &&
install -v -m644 op.ps op.txt op.pdf /usr/share/doc/sendmail-8.18.1 &&
cd ../..
Command Explanations
cat > devtools/Site/site.config.m4
<< "EOF": This creates a configuration file
changing some of the default settings.
sed ...
devtools/OS/Linux: The site.config.m4 does not
honor a change to the man directory, so fix it in the OS
definitions.
sh Build; sh Build sendmail.cf; sh
Build install-cf; sh Build install: sendmail uses an m4 based build script to create the various
Makefile
s. These commands build and
install the package.
for manpage in...;do...;done; install
...: The man pages are installed already formatted
and man displays them
somewhat garbled. These commands replace the formatted pages with
pages man can display
properly.
Configuring sendmail
Configuration Information
Note
Ensure you have a fully qualified domain name defined in
/etc/hosts
for your system before
proceeding.
Create the /etc/mail/local-host-names
and /etc/mail/aliases
files using the following
commands as the root
user:
echo $(hostname) > /etc/mail/local-host-names
cat > /etc/mail/aliases << "EOF"
postmaster: root
MAILER-DAEMON: root
EOF
# Does not work if there is no database backend compiled in:
#newaliases
sendmail's primary configuration
file, /etc/mail/sendmail.cf
, is
complex and not meant to be directly edited. The recommended
method for changing it is to modify /etc/mail/sendmail.mc
and various m4 files, then run the m4 macro processor from within
/etc/mail
as follows:
cd /etc/mail &&
m4 m4/cf.m4 sendmail.mc > sendmail.cf
A full explanation of the files to modify, and the available
parameters can be found in /etc/mail/README
.
Systemd Unit
To automate the running of sendmail at startup, install the
sendmail.service
unit included in the
blfs-systemd-units-20240916 package:
make install-sendmail
Note
The -qNm option to sendmail, where N is number
of minutes, controls how often sendmail will process the mail queue. A
default of 5 minutes is used in the systemd unit. Individual workstation users may
want to set this as low as 1 minute, large installations
handling more mail may want to set it higher.