MAILX(1) SysV MAILX(1)
NAME
mailx - interactive message processing system
SYNOPSIS
mailx [options] [name...]
DESCRIPTION
The command mailx provides a comfortable, flexible environment for
sending and receiving messages electronically. When reading mail, mailx
provides commands to facilitate saving, deleting, and responding to
messages. When sending mail, mailx allows editing, reviewing and other
modification of the message as it is entered.
Many of the remote features of mailx will only work if the Basic
Networking Utilities are installed on your system.
Incoming mail is stored in a standard file for each user, called the
mailbox for that user. When mailx is called to read messages, the
mailbox is the default place to find them. As messages are read, they
are marked to be moved to a secondary file for storage, unless specific
action is taken, so that the messages need not be seen again. This
secondary file is called the mbox and is normally located in the user's
HOME directory (see "MBOX" (ENVIRONMENT VARIABLES) for a description of
this file). Messages can be saved in other secondary files named by the
user. Messages remain in a secondary file until forcibly removed.
The user can access a secondary file by using the -f option of the mailx
command. Messages in the secondary file can then be read or otherwise
processed using the same COMMANDS as in the primary mailbox. This gives
rise within these pages to the notion of a current mailbox.
On the command line, options start with a dash (-) and any other
arguments are taken to be destinations (recipients). If no recipients
are specified, mailx will attempt to read messages from the mailbox.
When reading mail, mailx is in command mode. A header summary of the
first several messages is displayed, followed by a prompt indicating
mailx can accept regular commands (see COMMANDS below). When sending
mail, mailx is in input mode. If no subject is specified on the command
line, a prompt for the subject is printed. As the message is typed,
mailx will read the message and store it in a temporary file. Commands
may be entered by beginning a line with the tilde (~) escape character
followed by a single command letter and optional arguments. See TILDE
ESCAPES for a summary of these commands.
At any time, the behavior of mailx is governed by a set of environment
variables. These are flags and valued parameters which are set and
cleared via the set and unset commands. See ENVIRONMENT VARIABLES below
for a summary of these parameters.
Recipients listed on the command line may be of three types: login
names, shell commands, or alias groups. Login names may be any network
address, including mixed network addressing. If mail is found to to
undeliverable, an attempt is made to return it to the sender's mailbox.
If the recipient name begins with a pipe symbol ( | ), the rest of the
name is taken to be a shell command to pipe the message through. This
provides an automatic interface with any program that reads the standard
input, such as lp(1) for recording outgoing mail on paper. Alias groups
are set by the alias command (see COMMANDS below) and are lists of
recipients of any type.
Regular commands are of the form
[ command ] [ msglist ] [ arguments ]
If no command is specified in command mode, print is assumed. In input
mode, commands are recognized by the escape character, and lines not
treated as commands are taken as input for the message.
Each message is assigned a sequential number, and there is at any time
the notion of a current message, marked by a right angle bracket (>) in
the header summary. Many commands take an optional list of messages
(msglist) to operate on. The default for msglist is the current message.
A msglist is a list of message identifiers separated by spaces, which may
include:
n Message number n.
. The current message.
^ The first undeleted message.
$ The last message.
* All messages.
n-m An inclusive range of message numbers.
user All messages from user.
/string All messages with string in the subject line (case ignored).
:c All messages of type c, where c is one of:
d Deleted messages
n New messages
o Old messages
r Read messages
u Unread messages
Note that the context of the command determines whether this
type of message specification makes sense.
Other arguments are usually arbitrary strings whose usage depends on the
command involved. File names, where expected, are expanded via the
normal shell conventions (see sh(1)). Special characters are recognized
by certain commands and are documented with the commands below.
At start-up time, mailx tries to execute commands from the optional
system-wide file (/usr/lib/mailx/mailx.rc) to initialize certain
parameters, then from a private start-up file ($HOME/.mailrc) for
personalized variables. With the exceptions noted below, regular
commands are legal inside start-up files. The most common use of a
start-up file is to set up initial display options and alias lists. The
following commands are not legal in the start-up file: !, Copy, edit,
followup, Followup, hold, mail, preserve, reply, Reply, shell, and
visual. An error in the start-up file causes the remaining lines in the
file to be ignored. The .mailrc file is optional, and must be
constructed locally.
OPTIONS
-e Test for presence of mail. The mailx command prints
nothing and exits with a successful return code if
there is mail to read.
-f [filename] Read messages from filename instead of mailbox. If
no filename is specified, the mbox is used.
-F Record the message in a file named after the first
recipient. Overrides the "record" variable, if set
(see ENVIRONMENT VARIABLES).
-h number The number of network "hops" made so far. This is
provided for network software to avoid infinite
delivery loops. (See addsopt under ENVIRONMENT
VARIABLES)
-H Print header summary only.
-i Ignore interrupts. See also "ignore" (ENVIRONMENT
VARIABLES).
-n Do not initialize from the system default mailx.rc
file.
-N Do not print initial header summary.
-r address Pass address to network delivery software. All tilde
commands are disabled. (See addsopt under
ENVIRONMENT VARIABLES)
-s subject Set the Subject header field to subject.
-u user Read user's mailbox. This is only effective if
user's mailbox is not read protected.
-U Convert uucp-style addresses to internet standards.
Overrides the "conv" environment variable. (See
addsopt under ENVIRONMENT VARIABLES)
COMMANDS
The following is a complete list of mailx commands:
!shell-command
Escape to the shell. See "SHELL" (ENVIRONMENT
VARIABLES).
# comment
Null command (comment). This may be useful in
.mailrc files.
=
Print the current message number.
?
Prints a summary of commands.
group alias name ...
Declare an alias for the given names. The names will
be substituted when alias is used as a recipient.
Useful in the .mailrc file.
alternates name ...
Declares a list of alternate names for your login.
When responding to a message, these names are removed
from the list of recipients for the response. With
no arguments, alternates prints the current list of
alternate names. See also "allnet" (ENVIRONMENT
VARIABLES).
cd [directory]
chdir [directory]
Change directory. If directory is not specified,
$HOME is used.
copy [filename]
copy [msglist] filename
Copy messages to the file without marking the
messages as saved. Otherwise equivalent to the save
command.
Copy [msglist]
Save the specified messages in a file whose name is
derived from the author of the message to be saved,
without marking the messages as saved. Otherwise
equivalent to the Save command.
delete [msglist]
Delete messages from the mailbox. If "autoprint" is
set, the next message after the last one deleted is
printed (see ENVIRONMENT VARIABLES).
ignore [header-field ...]
Suppresses printing of the specified header fields
when displaying messages on the screen. Examples of
header fields to ignore are "status" and "cc." The
fields are included when the message is saved. The
Print and Type commands override this command.
dp [msglist]
dt [msglist]
Delete the specified messages from the mailbox and
print the next message after the last one deleted.
Roughly equivalent to a delete command followed by a
print command.
echo string ...
Echo the given strings (like echo(1)).
edit [msglist]
Edit the given messages. The messages are placed in
a temporary file and the "EDITOR" variable is used to
get the name of the editor (see ENVIRONMENT
VARIABLES). Default editor is ed(1).
exit
xit
Exit from mailx, without changing the mailbox. No
messages are saved in the mbox (see also quit).
file [filename]
folder [filename]
Quit from the current file of messages and read in
the specified file. Several special characters are
recognized when used as file names, with the
following substitutions:
% the current mailbox.
%user the mailbox for user.
# the previous file.
& the current mbox.
Default file is the current mailbox.
folders
Print the names of the files in the directory set by
the "folder" variable (see ENVIRONMENT VARIABLES).
followup [message]
Respond to a message, recording the response in a
file whose name is derived from the author of the
message. Overrides the "record" variable, if set.
See also the Followup, Save, and Copy commands and
"outfolder" (ENVIRONMENT VARIABLES).
Followup [msglist]
Respond to the first message in the msglist, sending
the message to the author of each message in the
msglist. The subject line is taken from the first
message and the response is recorded in a file whose
name is derived from the author of the first message.
See also the followup, Save, and Copy commands and
"outfolder" (ENVIRONMENT VARIABLES).
from [msglist]
Prints the header summary for the specified messages.
alias alias name ...
Declare an alias for the given names. The names will
be substituted when alias is used as a recipient.
Useful in the .mailrc file.
headers [message]
Prints the page of headers which includes the message
specified. The "screen" variable sets the number of
headers per page (see ENVIRONMENT VARIABLES). See
also the z command.
help
Prints a summary of commands.
hold [msglist]
preserve [msglist]
Holds the specified messages in the mailbox.
if s | r
mail-commands
else
mail-commands
endif
Conditional execution, where s will execute following
mail-commands, up to an else or endif, if the program
is in send mode, and r causes the mail-commands to be
executed only in receive mode. Useful in the .mailrc
file.
discard header-field ...
Suppresses printing of the specified header fields
when displaying messages on the screen. Examples of
header fields to ignore are "status" and "cc." All
fields are included when the message is saved. The
Print and Type commands override this command.
list
Prints all commands available. No explanation is
given.
mail name ...
Mail a message to the specified users.
Mail name
Mail a message to the specified user and record a
copy of it in a file named after that user.
mbox [msglist]
Arrange for the given messages to end up in the
standard mbox save file when mailx terminates
normally. See "MBOX" (ENVIRONMENT VARIABLES) for a
description of this file. See also the exit and quit
commands.
next [message]
Go to next message matching message. A msglist may
be specified, but in this case the first valid
message in the list is the only one used. This is
useful for jumping to the next message from a
specific user, since the name would be taken as a
command in the absence of a real command. See the
discussion of msglists above for a description of
possible message specifications.
| [msglist] [shell-command]
Pipe the message through the given shell-command.
The message is treated as if it were read. If no
arguments are given, the current message is piped
through the command specified by the value of the
"cmd" variable. If the "page" variable is set, a
form feed character is inserted after each message
(see ENVIRONMENT VARIABLES).
preserve [msglist]
hold [msglist]
Preserve the specified messages in the mailbox.
Print [msglist]
Type [msglist]
Print the specified messages on the screen, including
all header fields. Overrides suppression of fields
by the ignore command.
print [msglist]
type [msglist]
Print the specified messages. If "crt" is set, the
messages longer than the number of lines specified by
the "crt" variable are paged through the command
specified by the "PAGER" variable. The default
command is pg(1) (see ENVIRONMENT VARIABLES).
quit
Exit from mailx, storing messages that were read in
mbox and unread messages in the mailbox. Messages
that have been explicitly saved in a file are
deleted.
Reply [msglist]
Respond [msglist]
Send a response to the author of each message in the
msglist. The subject line is taken from the first
message. If "record" is set to a file name, the
response is saved at the end of that file (see
ENVIRONMENT VARIABLES).
reply [message]
respond [message]
Reply to the specified message, including all other
recipients of the message. If "record" is set to a
file name, the response is saved at the end of that
file (see ENVIRONMENT VARIABLES).
Save [msglist]
Save the specified messages in a file whose name is
derived from the author of the first message. The
name of the file is taken to be the author's name
with all network addressing stripped off. See also
the Copy, followup, and Followup commands and
"outfolder" (ENVIRONMENT VARIABLES).
save [filename]
save [msglist] filename
Save the specified messages in the given file. The
file is created if it does not exist. The message is
deleted from the mailbox when mailx terminates unless
"keepsave" is set (see also ENVIRONMENT VARIABLES and
the exit and quit commands).
set
set name
set name=string
set name=number
Define a variable called name. The variable may be
given a null, string, or numeric value. Set by
itself prints all defined variables and their values.
See ENVIRONMENT VARIABLES for detailed descriptions
of the mailx variables.
shell
Invoke an interactive shell (see also "SHELL"
(ENVIRONMENT VARIABLES)).
size [msglist]
Print the size in characters of the specified
messages.
source filename
Read commands from the given file and return to
command mode.
top [msglist]
Print the top few lines of the specified messages.
If the "toplines" variable is set, it is taken as the
number of lines to print (see ENVIRONMENT VARIABLES).
The default is 5.
touch [msglist]
Touch the specified messages. If any message in
msglist is not specifically saved in a file, it will
be placed in the mbox upon normal termination. See
exit and quit.
Type [msglist]
Print [msglist]
Print the specified messages on the screen, including
all header fields. Overrides suppression of fields
by the ignore command.
type [msglist]
print [msglist]
Print the specified messages. If "crt" is set, the
messages longer than the number of lines specified by
the "crt" variable are paged through the command
specified by the "PAGER" variable. The default
command is pg(1) (see ENVIRONMENT VARIABLES).
undelete [msglist]
Restore the specified deleted messages. Will only
restore messages deleted in the current mail session.
If "autoprint" is set, the last message of those
restored is printed (see ENVIRONMENT VARIABLES).
unset name ...
Causes the specified variables to be erased. If the
variable was imported from the execution environment
(i.e., a shell variable) then it cannot be erased.
version
Prints the current version and release date.
visual [msglist]
Edit the given messages with a screen editor. The
messages are placed in a temporary file and the
"VISUAL" variable is used to get the name of the
editor (see ENVIRONMENT VARIABLES).
Write the given messages on the specified file, minus
the header and trailing blank line. Otherwise
equivalent to the save command.
xit
exit
Exit from mailx, without changing the mailbox. No
messages are saved in the mbox (see also quit).
z[+ | -]
Scroll the header display forward or backward one
screen-full. The number of headers displayed is set
by the "screen" variable (see ENVIRONMENT VARIABLES).
TILDE ESCAPES
The following commands may be entered only from input mode, by beginning
a line with the tilde escape character (~). See "escape" (ENVIRONMENT
VARIABLES) for changing this special character.
~! shell-command
Escape to the shell.
~.
Simulate end of file (terminate message input).
~: mail-command
Perform the command-level request. Valid only when sending a
message while reading mail.
~_ mail-command
Perform the command-level request. Valid only when sending a
message while reading mail.
~?
Print a summary of tilde escapes.
~A
Insert the autograph string "Sign" into the message (see ENVIRONMENT
VARIABLES).
~a
Insert the autograph string "sign" into the message (see ENVIRONMENT
VARIABLES).
~b name ...
Add the names to the blind carbon copy (Bcc) list.
~c name ...
Add the names to the carbon copy (Cc) list.
~d
Read in the dead.letter file. See "DEAD" (ENVIRONMENT VARIABLES)
for a description of this file.
~e
Invoke the editor on the partial message. See also "EDITOR"
(ENVIRONMENT VARIABLES).
~f [msglist]
Forward the specified messages. The messages are inserted into the
message, without alteration.
~h
Prompt for Subject line and To, Cc, and Bcc lists. If the field is
displayed with an initial value, it may be edited as if you had just
typed it.
~i string
Insert the value of the named variable into the text of the message.
For example, ~A is equivalent to '~i Sign.'
~m [msglist]
Insert the specified messages into the letter, shifting the new text
to the right one tab stop. Valid only when sending a message while
reading mail.
~p
Print the message being entered.
~q
Quit from input mode by simulating an interrupt. If the body of the
message is not null, the partial message is saved in dead.letter.
See "DEAD" (ENVIRONMENT VARIABLES) for a description of this file.
~r filename
Read in the specified file.
~< filename
Read in the specified file.
~< !shell-command
Read in the specified file. If the argument begins with an
exclamation point (!), the rest of the string is taken as an
arbitrary shell command and is executed, with the standard output
inserted into the message.
~s string ...
Set the subject line to string.
~t name ...
Add the given names to the To list.
~v
Invoke a preferred screen editor on the partial message. See also
"VISUAL" (ENVIRONMENT VARIABLES).
~w filename
Write the partial message onto the given file, without the header.
~x
Exit as with ~q except the message is not saved in dead.letter.
~| shell-command
Pipe the body of the message through the given shell-command. If
the shell-command returns a successful exit status, the output of
the command replaces the message.
ENVIRONMENT VARIABLES
The following are environment variables taken from the execution
environment and are not alterable within mailx.
HOME=directory
The user's base of operations.
MAILRC=filename
The name of the start-up file. Default is $HOME/.mailrc.
The following variables are internal mailx variables. They may be
imported from the execution environment or set via the set command at any
time. The unset command may be used to erase variables.
addsopt
Enabled by default. If /bin/mail is not being used as the deliverer,
noaddsopt should be specified. (See WARNINGS below)
allnet
All network names whose last component (login name) match are
treated as identical. This causes the msglist message
specifications to behave similarly. Default is noallnet. See also
the alternates command and the "metoo" variable.
append
Upon termination, append messages to the end of the mbox file
instead of prepending them. Default is noappend.
askcc
Prompt for the Cc list after message is entered. Default is
noaskcc.
asksub
Prompt for subject if it is not specified on the command line with
the -s option. Enabled by default.
autoprint
Enable automatic printing of messages after delete and undelete
commands. Default is noautoprint.
bang
Enable the special-casing of exclamation points (!) in shell escape
command lines as in vi(1). Default is nobang.
cmd=shell-command
Set the default command for the pipe command. No default value.
conv=conversion
Convert uucp addresses to the specified address style. The only
valid conversion now is internet, which requires a mail delivery
program conforming to the RFC822 standard for electronic mail
addressing. Conversion is disabled by default. See also "sendmail"
and the -U command line option.
crt=number
Pipe messages having more than number lines through the command
specified by the value of the "PAGER" variable (pg(1) by default).
Disabled by default.
DEAD=filename
The name of the file in which to save partial letters in case of
untimely interrupt. Default is $HOME/dead.letter.
debug
Enable verbose diagnostics for debugging. Messages are not
delivered. Default is nodebug.
dot
Take a period on a line by itself during input from a terminal as
end-of-file. Default is nodot.
EDITOR=shell-command
The command to run when the edit or ~e command is used. Default is
ed(1).
escape=c
Substitute c for the ~ escape character. Takes effect with next
message sent.
folder=directory
The directory for saving standard mail files. User-specified file
names beginning with a plus (+) are expanded by preceding the file
name with this directory name to obtain the real file name. If
directory does not start with a slash (/), $HOME is prepended to it.
In order to use the plus (+) construct on a mailx command line,
"folder" must be an exported sh environment variable. There is no
default for the "folder" variable. See also "outfolder" below.
header
Enable printing of the header summary when entering mailx. Enabled
by default.
hold
Preserve all messages that are read in the mailbox instead of
putting them in the standard mbox save file. Default is nohold.
ignore
Ignore interrupts while entering messages. Handy for noisy dial-up
lines. Default is noignore.
ignoreeof
Ignore end-of-file during message input. Input must be terminated
by a period (.) on a line by itself or by the ~. command. Default
is noignoreeof. See also "dot" above.
keep
When the mailbox is empty, truncate it to zero length instead of
removing it. Disabled by default.
keepsave
Keep messages that have been saved in other files in the mailbox
instead of deleting them. Default is nokeepsave.
MBOX=filename
The name of the file to save messages which have been read. The xit
command overrides this function, as does saving the message
explicitly in another file. Default is $HOME/mbox.
metoo
If your login appears as a recipient, do not delete it from the
list. Default is nometoo.
LISTER=shell-command
The command (and options) to use when listing the contents of the
"folder" directory. The default is ls(1).
onehop
When responding to a message that was originally sent to several
recipients, the other recipient addresses are normally forced to be
relative to the originating author's machine for the response. This
flag disables alteration of the recipients' addresses, improving
efficiency in a network where all machines can send directly to all
other machines (i.e., one hop away).
outfolder
Causes the files used to record outgoing messages to be located in
the directory specified by the "folder" variable unless the path
name is absolute. Default is nooutfolder. See "folder" above and
the Save, Copy, followup, and Followup commands.
page
Used with the pipe command to insert a form feed after each message
sent through the pipe. Default is nopage.
PAGER=shell-command
The command to use as a filter for paginating output. This can also
be used to specify the options to be used. Default is pg(1).
prompt=string
Set the command mode prompt to string. Default is "? ".
quiet
Refrain from printing the opening message and version when entering
mailx. Default is noquiet.
record=filename
Record all outgoing mail in filename. Disabled by default. See
also "outfolder" above.
save
Enable saving of messages in dead.letter on interrupt or delivery
error. See "DEAD" for a description of this file. Enabled by
default.
screen=number
Sets the number of lines in a screen-full of headers for the headers
command.
sendmail=shell-command
Alternate command for delivering messages. Default is mail(1).
sendwait
Wait for background mailer to finish before returning. Default is
nosendwait.
SHELL=shell-command
The name of a preferred command interpreter. Default is sh(1).
showto
When displaying the header summary and the message is from you,
print the recipient's name instead of the author's name.
sign=string
The variable inserted into the text of a message when the ~a
(autograph) command is given. No default (see also ~i (TILDE
ESCAPES)).
Sign=string
The variable inserted into the text of a message when the ~A command
is given. No default (see also ~i (TILDE ESCAPES)).
toplines=number
The number of lines of header to print with the top command.
Default is 5.
VISUAL=shell-command
The name of a preferred screen editor. Default is vi(1).
FILES
$HOME/.mailrc personal start-up file
$HOME/mbox secondary storage file
/usr/mail/* post office directory
/usr/lib/mailx/mailx.help* help message files
/usr/lib/mailx/mailx.rc optional global start-up file
/tmp/R[emqsx]* temporary files
WARNINGS
The -h, -r and -U options can be used only if mailx is built with a
delivery program other than /bin/mail.
BUGS
Where shell-command is shown as valid, arguments are not always allowed.
Experimentation is recommended.
Internal variables imported from the execution environment cannot be
unset.
The full internet addressing is not fully supported by mailx. The new
standards need some time to settle down.
Attempts to send a message having a line consisting only of a "." are
treated as the end of the message by mail(1) (the standard mail delivery
program).
SEE ALSO
ls(1), mail(1), pg(1). "