cone — Read and send E-mail messages
cone
[-v] [-r] [-c
directory
] [-m
pipe
]
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 -v
shows Cone's version.
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.
The -m
option specifies the
filename of a named pipe that Cone opens. Writing to the pipe causes
Cone to immediately update
the new mail count of the folders that it has opened.
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/
). All
messages in the system mailbox are automatically moved to
something
$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.
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 @datadir@/cone
.
For example, a helper script named “IMAGE.GIF.filter”, if installed, is
invoked to process image/gif
MIME attachments.
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 filtertype/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.
Cone has limited
ability to activate URLs
in HTML messages.
Cone handles “mailto:”
URLs by itself. For
other URLs Cone runs @datadir@/cone/
with
the URL passed as an
argument.method
.handler
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
in
method
.handler$HOME/.cone
(or the
directory specified by -c
) in
addition to @datadir@/cone
.