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.6 (client)
Recommended
Cyrus SASL-2.1.28
Optional
ghostscript-10.02.1 (for creating PDF documentation),
Procmail-3.22 (the configuration proposed below requires
that procmail be present at run-time), and
nph
Editor Notes:
https://wiki.linuxfromscratch.org/blfs/wiki/sendmail
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',`-DSTARTTLS -DSASL -DLDAPMAP -DHASFLOCK')
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.17.2/{cf,sendmail} &&
install -v -m644 CACerts FAQ KNOWNBUGS LICENSE PGPKEYS README RELEASE_NOTES \
/usr/share/doc/sendmail-8.17.2 &&
install -v -m644 sendmail/{README,SECURITY,TRACEFLAGS,TUNING} \
/usr/share/doc/sendmail-8.17.2/sendmail &&
install -v -m644 cf/README /usr/share/doc/sendmail-8.17.2/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.17.2 &&
install -v -m644 op.ps op.txt op.pdf /usr/share/doc/sendmail-8.17.2 &&
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
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-20230816 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.