Introduction to Heirloom mailx

The Heirloom mailx package (formerly known as the Nail package) contains mailx, a command-line Mail User Agent derived from Berkeley Mail. It is intended to provide the functionality of the POSIX mailx command with additional support for MIME messages, IMAP (including caching), POP3, SMTP, S/MIME, message threading/sorting, scoring, and filtering. Heirloom mailx is especially useful for writing scripts and batch processing.



Development versions of BLFS may not build or run some packages properly if dependencies have been updated since the most recent stable versions of the book.

Package Information

Additional Downloads

Heirloom mailx Dependencies


nss-3.89, MIT Kerberos V5-1.20.1 (for IMAP GSSAPI authentication), and an MTA

User Notes:

Installation of Heirloom mailx



This package does not support parallel build.

Install Heirloom mailx by running the following commands.

patch -Np1 -i ../heirloom-mailx-12.5-fixes-1.patch &&

sed 's@<openssl@<openssl-1.0/openssl@' \
    -i openssl.c fio.c makeconfig      &&

make -j1 LDFLAGS+="-L /usr/lib/openssl/" \

This package does not come with a test suite.

Now, as the root user:

make PREFIX=/usr UCBINSTALL=/usr/bin/install install &&

ln -v -sf mailx /usr/bin/mail &&
ln -v -sf mailx /usr/bin/nail &&

install -v -m755 -d     /usr/share/doc/heirloom-mailx-12.5 &&
install -v -m644 README /usr/share/doc/heirloom-mailx-12.5

Command Explanations

make SENDMAIL=/usr/sbin/sendmail: This changes the default MTA path of /usr/lib/sendmail.

make PREFIX=/usr UCBINSTALL=/usr/bin/install install: This changes the default installation path of /usr/local and the default install command path of /usr/ucb.

Configuring Heirloom mailx

Config Files

/etc/nail.rc and ~/.mailrc

Configuration Information

For displaying mails, mailx uses a pager program. Since the default of pg is not available on a LFS system, its required to specify which pager is to use. By default, there is more and the more comfortable less installed. If the variable PAGER is not set in /etc/profile or ~/.bash_profile, or if it should be another pager just for reading mails, it can be set system wide in /etc/nail.rc:

echo "set PAGER=<more|less>" >> /etc/nail.rc

or individually for the actual user in ~/.mailrc:

echo "set PAGER=<more|less>" >> ~/.mailrc

Other interesting options to set in the config files might be EDITOR and MAILDIR.

If not set in the environment for other packages, the default editor can be set by:

echo "set EDITOR=<vim|nano|...>" >> /etc/nail.rc

Depending on which kind of MTA is installed, it might be required to set the MAILDIR variable so mailx is able to find the mails:

echo "set MAILDIR=Maildir" >> /etc/nail.rc


Installed Programs: mail, mailx and nail
Installed Libraries: None
Installed Directories: None

Short Descriptions


is a command-line mail user agent compatible with the mailx command found on commercial Unix versions


is a symbolic link to mailx


is a symbolic link to mailx