Heirloom mailx (previously known as nail) is a mail user agent for Unix systems. Highlights are:
- Derived from Berkeley Mail 8.1. An interface like the original Berkeley one is still optionally available.
- Is a free implementation of the System V mailx command and features an interface like that by default.
- Is intended to comply to the mailx command specifications of IEEE Std 1003.2-1992 (POSIX.2) and IEEE Std 1003.1-2004 with XSI extensions (SUSv3).
- Supports the MIME specifications. Mailx can send and receive attachments and code and decode international character strings. If the system libraries provide appropriate support, conversion between different character encodings is performed. In combination with a UTF-8 terminal, nearly all international languages are supported. External converter programs can be automatically invoked e. g. to view messages in HTML format.
- Supports IMAP. In combination with either OpenSSL or Mozilla NSS, IMAPS can also be used. With IMAP, folder hierarchies can be stored and managed on remote servers. This is particularly useful for people who use more than one computer to access their mail. Of course, it is also possible to use IMAP just for fetching mails and storing them locally.
- Supports caching and disconnected operation of IMAP folders. This speeds up operation while in online mode. It also makes it possible to transparently view and edit IMAP mailboxes without an active connection to the server.
- Supports POP3 to read messages on a remote server. In combination with OpenSSL or NSS, POP3S can also be used. Mailx can read and delete individual messages, thus POP3 accounts can almost be accessed like local mail folders.
- Supports SMTP to send messages directly to a remote server. A local sendmail interface setup is thus not necessary. In combination with OpenSSL or NSS, both the STARTTLS method and SMTPS can be used. SMTP AUTH is also supported.
- Supports S/MIME for signed and encrypted email (in combination with OpenSSL or NSS).
- In combination with NSS, certificates for S/MIME and SSL/TLS can be shared with Mozilla applications, and can be managed using them.
- Can display message threads and supports operations on them. This is especially useful for handling mailing lists. It is also possible to sort messages by various other criteria.
- Provides a Bayesian junk mail filter mostly according to Paul Graham's article “Better Bayesian Filtering”. Chained tokens according to Jonathan A. Zdziarski's “Advanced Language Classification using Chained Tokens” can optionally be used.
- Features a lot of detail improvements over previous implementations of Mail/mailx, such as IMAP-style search methods and flags for any types of folders, killing and scoring of messages, maildir folder support, an option to set the From: address directly, and the generation of References: header fields to avoid annoyances on mailing lists.
- Can be used as a mail batch language in nearly the same way as it is used interactively. So it is possible to use mailx as a mailbox filter, for fetching mails, or for sending files as attachments.
- Is extensively described in its manual page mailx(1), which provides both introductory material and complete reference documentation.
For installation instructions, see the README.
The ChangeLog keeps track of modifications.
New releases of this project are announced on freshmeat.net. You can use their subscription service to get an email when a new version is available.
Mailx development is discussed on the nail-devel mailing list. All people interested in discussing or coding features for future releases are invited to participate. Bug reports should also be sent to the list. To subscribe to the list or look at the archives, visit <https://lists.sourceforge.net/lists/listinfo/nail-devel>. Currently, only subscribers are allowed to post.
Download the source code
Browse the CVS repository
The most recent results of development are sometimes made available in the public CVS repository. Use
$ cvs -d:pserver:email@example.com:/cvsroot/nail login
CVS password:<just type return>
$ cvs -d:pserver:firstname.lastname@example.org:/cvsroot/nail co nail
to retrieve a copy. Follow these instructions for more information. If you want to report a problem, please look at the ChangeLog in CVS to see if it has already been resolved, and if so, try if the fix works for you. Do not use the code from CVS unless you have a special reason to do so. It may be incorrect, not well tested, and might not even compile.
If you liked this article, subscribe to the feed by clicking the image below to keep informed about new contents of the blog: