This document describes the new features added to the emm mail system between releases 4.0 and 4.2. 1. New Features in the build system a. The system may now be built with already-installed versions of the readline and history libraries. b. There is better support for checking for the presence of X and conditionally building those things that depend on it. c. Programs are now installed with the package version (e.g., 4.2) as a suffix and symlinks are used to link the program names to the most current version. This allows different versions to co-exist. 2. New Utilities a. mailfmt -- a program to pretty-print mail messages with line wrapping. b. binmail -- a shell script to mail out a binary file in MIME format, with automatic encoding. c. multimail -- a shell script to take a set of files and sent them to a recipient as a MIME multipart/mixed message. d. splitmail -- a shell script that splits a large file (which may already be encoded), base-64 encodes it if necessary, and sends it to a list of recpients as a series of MIME message/partial messages. e. tarmail -- a shell script to take a set of filenames, create a tar archive containing those files, and send them to a list of recipients with `binmail'. f. mimetype -- a utility that takes a filename with extension and displays the appropriate MIME content-type, and vice versa. 3. New Features in emm a. The printing features have been reworked to print MIME messages better. b. emm and its related utilities now have a `-v' option to display version information. c. The date routines have been made Y2K-safe. d. There is better completion when not at the emm command prompt -- for example, when in the MIME multipart message command parser. e. Better support for displaying unknown or unrecognized body parts using a default display function. f. Support for displaying multipart/pgp, multipart/signed, multipart/related, and multipart/report MIME messages. g. A text/xxx message with encoding (like quoted-printable) is now sent to the pager by default, since after decoding the line breaks are probably not appropriate for a terminal. h. The environment passed to external MIME display and printing programs is now reset for each message. i. A simple `address book' has been added. It's a file with a list of addresses, one per line. There is support for completion of recipient addresses from the address book, both from the emm command line as arguments to the `send', `reply', etc. commands and when prompted for a list of addresses. The name of the address book is an emm variable. j. emm now sets the readline `application name' for conditionally defining keybindings in ~/.inputrc. k. The `active message' support is now integrated into the MIME support code rather than being a separate feature with a special header. 4. New Features in sm a. A simple `address book' has been added, shared with emm. The name of the address book is an sm variable, allowing for different address books if desired. Recipient addresses may be completed from the address book. There is a new variable which, if set, will automatically add recipient addresses to the address book. b. Better support for user-specified subtypes when attaching files with a new `application' attachment type. c. Users may now attach files of type `application/msword' and `text/enriched'. d. `Active' messages are now attachments with sm attachment type `command-input' and MIME type `application/x-sh-command'; the user may specify the command to be run by the recipient. e. The `remove' command, which removes addresses from headers, now uses readline word completion. f. A text message may be specified to be an `active' message by converting it into a MIME message with type `application/x-sh-command'. g. There is a new variable that causes messages to be sent as `text/enriched' by default, and a new invocation option (-E) to force it on a per-session basis. h. There is support for a general `Comments:' header if added while editing the message -- it will not be prefixed with `X-'. i. sm now sets the readline `application name' for conditionally defining keybindings in ~/.inputrc. j. If there are attachments, the signature is attached as a separate message part. k. The signature files attached for text/richtext and text/enriched messages are now `~/.signature.richtext' and `~/.signature.enriched' respectively. If they do not exist, `~/.signature' is attached as a `text/plain' part. l. There is support for a `mime.types' file matching filename extensions with MIME types, and files of any type may now be attached (not just those for which sm has builtin support). 5. New Features in se/xse a. There is support for composing text/enriched messages. 6. New Features in MIME support a. html2ps -- a program to translate HTML to Postscript for printing b. unbinhex -- the start of a program to decode MIME messages in binhex format c. mprintmime -- a shell script that does the appropriate thing when printing MIME messages. d. All of the shell script utilities are now created by the configure script, so they have the correct paths depending on where emm is installed. e. Support for displaying and printing the new MIME `text/enriched' format has been added, with translators from text/enriched to HTML and text. f. There is a new display program for text/richtext and text/enriched messages that doesn't rely on groff, with translators from text/richtext to HTML and text. g. There is a new HTML display program written in TCL for text/html messages. h. The program to encode and decode message bodies in various formats has acquired uuencode and the old `atob' converters. i. Changes to the default mailcap file to add the new display programs. j. There is a new program to print HTML by converting it to Postscript and sending it to the `ps' printer (by default). h. There is a new display program for video/mpeg. 7. New Features in the utility programs a. All of the utility programs, where appropriate, now take a `-v' option to display version information. b. The `dp' date parser now takes a -t argument to specify the number of seconds since the epoch to convert to the various formats, a `-h' argument to disable the header prefixing the date strings (for use in scripts), and `-a', `g', `-l', and `-s' options to restrict output to RFC822 date strings, Greenwich Mean time, local time, and seconds since the epoch, respectively. c. The `m2ps' message-to-postscript printing command is now created by the configure script, so the installation paths are right, and has a new `-o' option to print to a file. d. `sysmon' now accepts a `q' keystroke in the clock widget and exits, takes a `-title' option to set the window title, takes a `-version' option to display version information, and is Y2K-safe (after a bug fix to the `Dclock' widget). 8. New Features in the support libraries a. The version of the included readline library is now 4.1. b. An improved version of malloc (from bash) has been added. 8. Some notable bug fixes a. Care was taken to avoid SIGPIPE problems in emm and utilities. b. Better care was taken to quote arguments passed to external utilities, like `msavebody' when saving multipart message parts. c. The MIME body parsing functions are more robust in the face of incorrectly-formatted MIME messages. d. The utilties now catch write errors to stdout better (caused by, for example, out-of-disk-space errors) and report them. 9. The following utilities have been deprecated, and are no longer built by default: address burst forward just rcvtty 10. The following utilities have been removed or replaced: richtogroff atob btoa tarmail untarmail btoamail unbtoamail 11. Portability has been improved somewhat. I have built the emm-4.2 release on the following Unix versions: FreeBSD 3.x Red Hat Linux 6.0, 6.1 Solaris 2.5.1 Solaris 2.6 Solaris 7 BSD/OS 3.1 BSD/OS 4.0.1 AIX 4.2