cone(1) Read and send E-mail messages


cone [-r] [-c directory]


Cone is a console newsreader and E-mail. It is an interactive program for reading and sending E-mail messages. Cone is designed to be intuitive and easy to learn. Starting Cone for the first time displays two links: one for the default system mailbox, and a second link to a quick online tutorial. The online tutorial provides a brief overview of using Cone for reading and sending E-mail.

Pressing Q on most screens exits Cone. Cone tries to gracefully log out and shut down all server connections. If Cone cannot log out of a remote server because the remote server is down, press CTRL-C (after Q to terminate Cone).

Use CTRL-Z to temporarily suspend Cone and drop back to the shell prompt. Cone remains suspended in the background, and may be restarted by using the shell's fg command.


Connections to remote mail servers may be disconnected for inactivity if Cone remains suspended for a prolonged period of time. When suspended, Cone cannot maintain any active connections to remote mail servers.

The -c option names a directory where Cone saves its configuration files, and defaults to $HOME/.cone. The configuration directory will be created, if necessary.

The -r option recovers a backup copy of Cone's configuration file. This option is primarily used when remote configuration is enabled, but the folder that contains Cone's configuration on a remote server was deleted, or is not available. In all cases, Cone makes a daily local configuration file backup. The -r option searches for local configuration file backups, and offers an option to restore the backup copy.

Reading local mail with Cone

Cone reads local mail from either maildirs (the preferred format) or mailbox files (or "mboxes"). When mboxes are used, Cone does not read the system mailbox file directly (usually /var/spool/something). All messages in the system mailbox are automatically moved to $HOME/Inbox, which is then accessed as if it was the system mailbox. Starting Cone for the first time on an mbox-based system automatically copies all existing mail from the system mailbox file to $HOME/Inbox.

This is an intentional design choice. Normal user application cannot create new files in /var/spool; all they can do is read the mailbox file from /var/spool. Therefore, the only way to update the mailbox file is by rewriting it from scratch (more or less). While the mailbox file is in the process of being rewritten, if the Cone process is interrupted, or killed, the resulted in a corrupted system mailbox. There are way to minimize this vulnerability, but it cannot be eliminated completely. Some Linux kernels use an "OOM killer" that may terminate any process when the system memory is low. There is no way to completely prevent corrupted system mailbox files on those kernels.

Cone uses an alternative way of updating mboxes. Cone updates mboxes by creating a new mbox file separately, then replacing the original mbox file with the new version. Unfortunately this cannot be done with the system mailbox file, because of the restricted access rights on the system spool directory. To solve this problem Cone automatically copies the system mailbox file to $HOME/Inbox, each time the system mailbox file is opened and whenever new mail is available.

Viewing MIME attachments

Cone displays text and simple HTML content by itself. Other kinds of attachments may be viewed by using a helper script. Cone invokes a helper script to open a MIME attachment. The helper script's name is "TYPE.SUBTYPE.filter", where "TYPE" and "SUBTYPE" corresponds to the MIME type and subtype, accordingly. Cone looks for helper scripts in $HOME/.cone (or the directory specified by -c) and in /usr/share/cone.

For example, a helper script named "IMAGE.GIF.filter", if installed, is invoked to process image/gif MIME attachments.

Helper scripts

Cone runs each helper script twice:

TYPE.SUBTYPE.filter check type/subtype

When the first argument is "check", the helper script should terminate with a zero exit code if it is willing to process an attachment whose MIME type is specified by the second argument. A script or a program that's has multiple "TYPE.SUBTYPE.filter" links may use the second argument to identify the attachment's mime type. If the helper script is unable to process the attachment, at this time, it should terminate with a non-zero exit code.

The default helper script for image attachments terminates with a non-zero exit code if the DISPLAY environment variable is not initialized. When invoked from an X-Windows terminal, image attachments will be automatically displayed; and image attachments are ignored otherwise on non-graphical consoles.

TYPE.SUBTYPE.filter filter type/subtype filename

If the helper script initially terminates with a zero exit code, it will be invoked again after the MIME attachment is downloaded and decoded. The first argument will be "filter", and the attachment's filename is specified by the third argument.


This is a temporary file, whose extension will not necessary be the file extension associated with this MIME type.

The helper script should read and process the file specified by the third argument. Cone interprets anything the helper script writes to standard output as HTML.


Cone waits until the helper script terminates before displaying the rest of the message. Most helper scripts should run in the background. However, note that Cone removes the temporary file when the original message is closed; the temporary file may be removed any time after the helper script terminates. The helper script should make its own private copy of the file, if necessary.

Activating URLs

Cone has limited ability to activate URLs in HTML messages. Cone handles "mailto:" URLs by itself. For other URLs Cone runs /usr/share/cone/method.handler with the URL passed as an argument.

Cone installs http.handler (hard linked to https.handler). This script checks if firefox or mozilla binaries are found in the current PATH, and runs them.


Cone also looks method.handler in $HOME/.cone (or the directory specified by -c) in addition to /usr/share/cone.



Configuration files, and other application data. May be modified by the -c option.

/usr/share/cone/IMAGE.GIF.filter, /usr/share/cone/IMAGE.JPEG.filter, /usr/share/cone/IMAGE.PNG.filter, /usr/share/cone/APPLICATION.PDF.filter

Default helper scripts distributed with Cone.


Sam Varshavchik