#### Beyond Linux® From Scratch (systemd Edition) - Version 11.1

### Chapter 21. Mail Server Software

- Prev

  Postfix-3.7.0

- Next

  Databases

- Up
- Home

# sendmail-8.17.1

## Introduction to sendmail

The sendmail package contains a Mail Transport Agent (MTA).

This package is known to build and work properly using an LFS-11.1 platform.

### Package Information

- Download (FTP): ftp://ftp.sendmail.org/pub/sendmail/sendmail.8.17.1.tar.gz

- Download MD5 sum: cd3c3f7b2db60c362f07eecbebd99bf4

- Download size: 2.2 MB

- Estimated disk space required: 20 MB

- Estimated build time: 0.2 SBU

### sendmail Dependencies

#### Required

OpenLDAP-2.6.1 (client)

#### Recommended

Cyrus SASL-2.1.27

#### Optional

ghostscript-9.55.0 (for creating PDF documentation), Procmail-3.22 (the configuration proposed below requires that procmail be present at run-time), and nph

User 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 -ldb')
    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.1/{cf,sendmail} &&

    install -v -m644 CACerts FAQ KNOWNBUGS LICENSE PGPKEYS README RELEASE_NOTES \
            /usr/share/doc/sendmail-8.17.1 &&

    install -v -m644 sendmail/{README,SECURITY,TRACEFLAGS,TUNING} \
            /usr/share/doc/sendmail-8.17.1/sendmail &&

    install -v -m644 cf/README /usr/share/doc/sendmail-8.17.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.17.1 &&
    install -v -m644 op.ps op.txt op.pdf /usr/share/doc/sendmail-8.17.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

###

#### Config Files

`/etc/mail/*`

###

#### 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-20220227 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.

## Contents

Installed Programs: editmap, mailstats, makemap, praliases, sendmail, smrsh, and vacation; symlinks to /usr/sbin/sendmail: hoststat, mailq, newaliases, and purgestat
Installed Libraries: None
Installed Directories: /etc/mail, /usr/share/doc/sendmail-8.17.1, and /var/spool/clientmqueue

### Short Descriptions

editmap | queries and edits sendmail map files
hoststat | prints sendmail's persistent host status
mailstats | displays sendmail statistics
mailq | prints a summary of outbound mail messages waiting for delivery
makemap | creates sendmail map files
newaliases | rebuilds `/etc/mail/aliases.db` from the contents of `/etc/mail/aliases`
praliases | displays current sendmail aliases
purgestat | causes sendmail to clear (purge) all its host-status information
sendmail | is the sendmail mail transport agent
smrsh | is a restricted shell for sendmail
vacation | is an email auto responder

Last updated on

- Prev

  Postfix-3.7.0

- Next

  Databases

- Up
- Home