This chapter describes how to send or receive messages over the network by using one of the following commands:
mailx
or
Mail
write
Message Handling (MH) program
talk
Examples in this chapter use the
mailx
program rather
than
Mail
.
Using
mailx
, you can do the
following tasks:
Send a message to a user
Edit a message before sending it
Include files within messages
Save or organize incoming messages
Using
mailx
you can also send entire files,
a task described in
Chapter 12.
The Tru64 UNIX
mailx
or
Mail
command accesses the same mail program as the ULTRIX
mail
(that is,
/usr/ucb/mail
) command.
Refer to Chapter 2 of
the
ULTRIX to DIGITAL UNIX Migration Guide
for more information.
The
write
and
talk
commands work
interactively; the recipient must be logged in.
Before using these interactive
commands, you can verify the name and availability of a user or host by using
the following commands described in
Chapter 10:
finger
or
who
to find
a user on the local host
finger
,
rhwo
, or
ruptime
to find a user on a remote host
ping
or
ruptime
to find
a currently reachable host
Using
mailx
, you can send a message to one or more
users at the following locations:
On your local host
On a remote host connected to your local host through TCP/IP
On a host in another network, through either TCP/IP, DECnet, or UUCP addressing
Use the following syntax for the
mailx
command:
mailx
user [
@
{ host
| domain
| host.domain
} ] ...
To send mail to users on the local host, enter the
mailx
command and specify a
user
parameter
for each user.
For users on remote hosts, you must specify additional information
about the location of the host after the "at sign" (@
).
For example, to send mail from host
orange
to users
smith
and
jones
on the same local host, you would enter the following command:
orange%
mailx smith jones
To send mail to user
hobbes
on a different host,
pluto
, in the same
domain, you would enter
the following command:
orange%
mailx hobbes@pluto
In the preceding example, if user
hobbes
were in
another domain called
planets
, you would add the name of
the remote network domain, as shown in the following command:
orange%
mailx hobbes@pluto.planets
The domain is sometimes split into further subdivisions with the name
of each separated by a period (.
) in the destination name.
Depending on how the network has been configured by the network administrator,
you can address a user on a remote host in another domain by specifying only
the domain name, as in the following command:
orange%
mailx hobbes@planets
If necessary, see your system administrator for help addressing a mail
message.
11.2 Sending a Mail Message Using mailx
This section explains how to use
mailx
to send a
message to a user on a local host and a copy of the message to other users.
To begin the example, user Jones enters the
mailx
command
at the local system prompt,
orange%
:
orange%
mailx suzuki [Return]
After pressing the Return key, the
Subject:
prompt
is displayed.
Pressing the Return key again immediately would leave the subject
blank.
Instead, user Jones enters the subject of the message before pressing
the Return key, and then begins writing the message:
Subject:
Baseball question [Return]
Are there any Japanese baseball simulation games?
I want to compare Sadharu Oh's hitting statistics
to those of Hank Aaron. To do this, I need to set
up a simulated baseball season having each hitter
play for one year in the other player's league.
User Jones ends the message by typing a period (.
) on a blank line, followed by the Return key, as shown:
.
.
.play for one year in the other player's league.
. [Return]
Cc:
In this example,
the message has not yet been sent; instead the
Cc:
(that
is, "carbon copy") prompt appears because user Jones has customized
his mail session by adding
set askcc
to the
.mailrc
file in his home directory.
(See
Section 11.6
and
Appendix D
on customizing your mail session.)
The
Cc:
prompt enables you to send copies to other users.
If you choose
not to, press the Return key to exit
mailx
, and send the
message; the end-of-text message (EOT
), then appears followed
by the system prompt.
In this example, user Jones sends copies to local user
cranton
and remote users
gillis
and
vincep
by entering the appropriate address for each at the
Cc:
prompt and pressing the Return key to exit
mailx
and send the message:
.
.
.Cc:
cranton gillis@strato vincep@mlb.bbs.com [Return]
EOT
orange%
The
mailx
program enables you to recover from addressing errors.
For example, if your
intended recipient on the local host is
cranton
, but you
mistakenly type
crantom
, the following message appears
immediately on your screen:
crantom... User unknown
The message is mailed back to you. You can then save and resend it to the right person.
If you send a message to an unknown person on a remote host, it may
take as long as three days before
mailx
sends it back to
you.
Section 11.3.3.1
explains how to save and resend
a returned message.
11.2.1 Editing a Message
To edit a mail message before sending it, after replying to the
Subject:
prompt, enter one of the following
escape
commands to activate an editor within
mailx
:
Enter
~v
to activate the screen editor
that you set with the
set VISUAL
entry in your
.mailrc
file.
Enter
~e
to activate the text editor that
you set with the
set EDITOR
entry in your
.mailrc
file.
To use the
~e
command from within
mailx
to activate a text editor, enter
~e
as the first
two characters on a new line -- you may need to type the tilde ( ~
) a few times before it is displayed.
For example:
Subject:
network documentation meeting at 2 PM
Everyone, please bring the Table of Contents
for your book so that we can look for areas
of overlapping subject matter and
~e
If your
.mailrc
file contains
set EDITOR=/usr/ucb/vi
, you can now use the
vi
editor to correct the
spelling mistake in the first line and finish writing the message.
When you
end the editing session, you are back in
mailx
.
You can
end the message and exit
mailx
or reinvoke
vi
and continue writing.
11.2.2 Aborting a Message
You may decide not to send a message that you have started.
There are
two ways to abort a message before sending it.
11.2.2.1 Aborting a Message with Ctrl/C
You can abort a mail message by pressing Ctrl/C twice, anywhere within a message. When you first press Ctrl/C, the following message is displayed:
(Interrupt -- one more to kill letter)
You can now reconsider your decision to abort the message. If you decide not to abort it, continue entering text. If you decide to abort the message, press Ctrl/C again, and the following message will be displayed:
(Last Interrupt -- letter saved in dead.letter)
The message is aborted, you exit
mailx
, and the system
prompt is displayed.
By default, the aborted message is saved in the
dead.letter
file in your home directory.
If you choose not to save aborted
messages, you can enter
set nosave
in your
.mailrc
file.
See
Section 11.6
and
Appendix D
for more information.
Only the most-recently
aborted message is saved in the
dead.letter
file.
You can
edit and resend it by including it within a mail message.
(See
Section 11.2.3
for information on including files within messages.)
The following example shows how to abort a mail message by pressing Ctrl/C:
orange%
mailx sally
Subject:
Update to reference page files
What should the mailx(1) reference page include
about sending to remote users? [Ctrl/C]
(Interrupt -- one more to kill letter) [Ctrl/C] (Last Interrupt -- letter saved in dead.letter)orange%
11.2.2.2 Aborting a Message with an Escape Command
You can abort a mail message by entering either the
~q
or the
~x
escape command on a blank line.
Unlike aborting
a message by pressing Ctrl/C, these commands abort the message immediately,
without prompting you to reconsider.
The
~q
escape command
saves the aborted text in the
dead.letter
file in your
home directory, but
~x
does not, even if you have
set save
in your
.mailrc
file.
The following example shows how to abort a mail message by using the
~x
escape command:
orange%
mailx sally
Subject:
Update to reference page files
What should the mailx(1) reference page include
~x
orange%
You may need to enter the beginning tilde character ( ~
) a few times before it appears.
11.2.3 Including a File Within a Message
You can include any file (except an unconverted binary file) within
a mail message.
You will do this often when you save and resend any incorrectly-addressed
mail that is returned to you (See
Section 11.3.3.1) or
when you edit and resend an aborted message saved in the
dead.letter
file in your home directory.
From an example in the previous section, the
dead.letter
file contains the following text:
What should the mailx(1) reference page include about sending to remote users?
Suppose that you want to resend this file to user
sally
after adding additional information.
While in
mailx
, use
the
~d
escape command to automatically add the text of
dead.letter
to the mail message, regardless of the current working
directory.
Example 11-1
starts a message to user
sally
before adding the text of
dead.letter
through the
~d
command:
Example 11-1: Including the dead.letter File
orange%
mailx sally
Subject:
the mailx(1) reference page
The uucp(1) reference page has formatting
information for sending to remote users.
~d
"/usr/staff/r2/sally/dead.letter" 2/76
After including the file, its full pathname is displayed, with the number
of lines (2
) and characters (76
) that
the file contains (including the Return key or a control character at the
end of each line).
After the display, you can exit or continue writing your
message, but you may want to look at the included file, which is not displayed
otherwise, with the
~p
escape command, or you may want.to
enter a text editor (for example, by typing
~v
for
vi
) to modify the file.
Note
The
dead.letter
file contains only the most-recently aborted mail message. You may want to verify that it contains the text that you want to send.
To include a file (including
dead.letter
) within
a mail message, you can use either of two escape commands,
~<
or
~r
followed by the file name.
These commands
work in the same way.
If the file is not in the same directory from which
you entered
mailx
, you must precede the file name with
a full path name or one that is relative to the current directory.
Example 11-2
uses the
~<
escape command to include a file called
strato_prob
from
the
environ
directory below the current working directory.
Example 11-2: Including a File with the mailx Command
orange%
mailx sally
Subject:
Dan, here's the stratosphere data file
~< environ/strato_prob
"environ/strato_prob" 41/1309
See
Section 12.1.3
for information about transferring
a file noninteractively through the
mailx
utility.
11.3 Receiving a Mail Message
When you receive a mail message, you have the following options:
Delete or read any message waiting for you.
Reply to the sender and any other recipients to whom the mail was sent.
Save the message in a file.
Organize the message by topic in a file of saved messages called a folder.
The
mailx
program notifies you if you have new mail when you log in, enter any operating
system command, or press the Return key.
You can also enter the
mailx
command at the system prompt to see if you have new mail.
In
Example 11-3
user Jones on host
orange
enters
mailx
and finds two messages waiting.
Example 11-3: Entering the mailx Environment
orange%
mailx
Mail $Revision: 1.1.4.7 $ Type ? for help.
"/usr/spool/mail/jones": 2 messages 1 new 1 unread
U 1 root Mon Jul 20 10:39 14/438 "System news"
>N 2 root Mon Jul 20 11:30 11/292 "Welcome"
?
In
this example, two messages are waiting from the system administrator (root
); one is unread (denoted by
U
in column
1) from a previous
mailx
session and the other is new (denoted
by
N
).
The question-mark (?
) at the
end of the message is the
mailx
prompt.
You can type another
question-mark at this prompt to display a list of available
mailx
commands, as indicated in the header and as described in
Section 11.4.
You can press the Return key at the
mailx
prompt
to read message
2
, which is indicated by the right-angle
bracket (>
), in the list of waiting messages.
Example 11-4
shows this message being read.
Example 11-4: Reading a mailx Message
?
[Return]
Message 2:
From root Wed Aug 4 11:17:36 1999
Date: Wed, 4 Aug 1999 11:17:29 -0400
From: root (system administrator)
To: jones
Subject: Welcome
Welcome to the company computer network. I'm the
person who manages this system. If you have
questions or problems, send mail to root. You
can also send mail to manager or admin; messages
will be forwarded to me.
I will be on vacation for the next two weeks after
this week... starting Monday, August 10. I'll be
stdin
[Space]
back on Monday, August 24.
?
In
Example 11-4,
stdin
displays because the
PAGER
variable
has been set to
more
(the default).
If the
PAGER
variable had been set to
pg
nothing
would have been displayed.
Also,
stdin
appears after the
15th line of the message because user Jones has customized the
mailx
environment by adding
set crt=15
to the
.mailrc
file.
In the
.mailrc
file,
set crt=
specifies the number of lines to display at one time
before invoking the pager (either
pg
or
more
)
to display the remainder of the message.
As shown in the example, because
the message is more than 15 lines long,
set crt
instructs
mailx
to invoke the pager after 15 lines.
By pressing the Space
bar, the next screen full of the message is displayed.
You should customize
your
mailx
environment by using
set crt=
.
Otherwise, long mail messages will scroll rapidly, requiring you
to quickly press the Hold Screen key.
See
Section 11.6.2
and
Appendix D
for more information on customizing
mailx
.
To read another message, enter the
message number at the
mailx
prompt.
To list the messages
again, enter
h
at the
mailx
prompt.
In
Example 11-5, user Jones uses the
h
command to list the mail messages, sees that the first message is still unread,
and enters a
1
at the
?
prompt to read
it.
Example 11-5: Reading Another mailx Message
?
h
U 1 root Mon Jul 20 10:39 14/438 "System news"
> 2 root Mon Jul 20 11:30 11/292 "Welcome"
?
1
Message 1:
From root Mon Jul 20 11:30:07 1999
Date: Mon, 20 Jul 1999 11:30:04 -0400
From: root (system administrator)
To: jones
Subject: System news
The newest release of the text processing
software will be installed after 5 o'clock
today. Send mail if you have questions or
concerns before or after the installation.
?
The message you are reading is called the
current message.
To reread the message, press the Return key.
To read the next message, press
n
.
This message becomes
the current message.
You can read all your messages in succession by pressing
n
after each message.
You may change this by modifying the variable
gonext
as described in
Appendix D.
11.3.1 Deleting a Message
Your messages stay in
mailx
until you delete them
before or after storing them in a file or in a folder.
To delete the current
message after reading it, enter the
d
(delete) command
at the
mailx
prompt.
To delete a different message, enter
the
d
command at the
mailx
prompt, followed
by the message number.
You can delete several messages by listing their numbers
after the
d
command.
For example, enter the following command
at the
mailx
prompt to delete messages
7
and
9
:
?
d 7 9
You can also delete a range of messages by using a hyphen between the
first and last message.
For example, to delete messages
7
through
11
, enter the following command at the
mailx
prompt:
?
d 7-11
If you accidentally delete a message, you can recover
it with the
u
(undelete) command.
For example, to undelete
message
7
, enter the following command at the
mailx
prompt:
?
u 7
If you exit
mailx
by entering
q
or
quit
instead of
x
, any previously
read messages that you do not delete are added to the end of a file of previously
undeleted messages named
mbox
, in your home directory.
11.3.2 Replying to a Message
Replying to a mail message is similar to sending a mail message. You have the same options to edit, abort, or include a file in a message, as described in Section 11.2.
To reply to the sender of a message that you have just finished reading,
enter an uppercase
R
(reply) command at the mail prompt,
as shown in
Example 11-6.
Example 11-6: Replying to a Message
Message 3:
From deedee Mon Jul 20 14:13:32 1999
Date: Mon, 20 Jul 1999 14:13:05 -0400
From: deedee (DeeDee Smith)
To: jones, mays@sf24.usernet, susannah@artwrk
Subject: Testing text-processing software
I think we should test the new text processing
software on the older machines as well as the
newer. Remember that many customers still have
the older models.
?
R
To: deedee
Subject: Re: Testing text-processing software
I agree. Also, we should test different machine
configurations to determine if, for example,
it performs satisfactorily when run remotely.
.
EOT
?
After you enter
R
, the recipient and subject line
display, enabling you to verify that you are replying to the intended recipient.
If you enter a lowercase
r
, the
reply will be sent to the recipients of the original mail as well as to the
sender; in
Example 11-6, to
mays@sf24.usernet
and
susannah@artwrk
, as well as to
deedee
.
Note
To reply only to the sender of a mail message, enter an uppercase
R
at the mail prompt. To reply to the sender and all recipients of a mail message, enter a lowercaser
at the prompt.
In
Example 11-6, the
Cc:
prompt
does not appear because user
jones'
.mailrc
file does not contain the
set askcc
command.
11.3.3 Saving a Message
If you leave
mailx
by entering the
q
command (instead of the
x
or
exit
command),
the messages that you have just read are stored in the
mbox
file in your home directory.
To store mail messages in a more useful way, you can save them in individually-named
files or in folders as described in the following sections.
11.3.3.1 Saving a Message in a File
There are several kinds of mail that you might want to save in a file:
A brief but important message that you read
An incorrectly-addressed mail message that
mailx
returns to you
A long message that you want to print and read later
To save a brief message that you read or a mail message that
mailx
returned to you, enter the
s
command at
the
mailx
prompt and supply a name for the file.
A returned message is shown in the second item in the following output
from the
mailx
command:
orange%
mailx
Mail $Revision: 1.1.4.7 $ Type ? for help.
"/usr/spool/mail/jones": 2 messages 1 new 1 unread
U 1 root Mon Jul 20 10:39 14/438 "System news"
>N 2 MAILER-DAEMON Wed Aug 5 09:39 19/498 "Returned mail: User unknown"
?
As shown in the following example, user Jones decides to save the returned
message from the previous example in the file,
verify-resend
,
as a reminder to find the correct address before resending it.
.
.
.>N 2 MAILER-DAEMON Wed Aug 5 09:39 19/498 "Returned mail: User unknown"
?
s verify-resend
The file,
verify-resend
, is saved in the current
directory unless an explicit pathname is specified.
For example, user Jones
could have saved it in a subdirectory called
fix-later
by entering the following command:
?
s fix-later/verify-resend
To save a long message without reading the entire text on line, press Ctrl/C
to stop the message from scrolling and to display the
mailx
prompt.
You can now save (or delete) the message.
In the following example,
user Jones receives a 20-page report in message
1
, and
presses Ctrl/C to access the
mailx
prompt where a
command is entered for saving the file:
?
1
Message 1:
From smith Wed Aug 5 16:43:42 1999
Date: Wed, 5 Aug 1999 16:43:41 -0400
From: smith (Cassandra Smith
)To: jones
Subject: 20-page report: host configuration results
Mortimer,
Here's the report on host configuration that the
[Ctrl/C]
Interrupt
?
s sys-config-report
"sys-config-report" [New file] 2147/48353
?
dp
.
.
.
In the previous example, after creating the file, user Jones enters
dp
(that is, delete-proceed) at the
mailx
prompt
to prevent the large 20-page file from being saved in
mbox
,
and to start reading the next mail message.
Otherwise, the
mailx
command,
d
(delete
) and pressing
the Return key could have been entered to do the same.
11.3.3.2 Saving a Message in a Folder
To organize messages for easier reference and to minimize the size of
the
mbox
file (which is a folder itself) you can save messages
in files called
folders.
Before using a folder other
than
mbox
, you must create a folder sub-directory in your
home directory and add a pointer to the folder in your
.mailrc
file.
For example, if you make a directory named
sys-config
in your home directory, you must add the following line to your
.mailrc
file:
set folder=sys-config
.
To add a message to a folder,
use the
mailx
command,
s
and the folder
name.
For example, to save a message about host configuration with other messages
on that topic, write it to a folder named
sys-config
, as
follows:
Message 7:
From smith Thu Aug 6 09:32:09 1999
Date: Thu, 6 Aug 1999 09:32:08 -0400
From: smith (Cassandra Smith
)To: jones
Subject: host configuration testing
According to the report that each LAN ...
?
s sys-config
"sys-config [New file] 11/235
When you save the
first message in a folder,
mailx
stores it and displays
the message,
New file
.
If you save more messages in that
folder,
mailx
appends them to the end of the file and displays
the message,
Appended
.
There are two ways to read messages
stored in a folder other than
mbox
:
From the shell prompt you can start
mailx
with the
-f
option and the folder name.
For example, to
read the
sys-config
folder, enter the following command:
orange%
mailx -f sys-config
If you are already in
mailx
,
use the
folder
command to switch to a different folder.
For example, if you are reading the
sys-config
folder
and you want to read the
meetings
folder, enter the following
command:
?
folder meetings
When you switch folders,
mailx
makes
any changes to the folder you are leaving before it opens the new folder.
You can use the
folder
command without arguments to find out what folder you are
in.
For example:
?
folder
"sys-config": 17 messages
Example 11-7
shows how to use the
m
command and the
~f
escape command in
mailx
to forward message number
3
to user
deedee
and include a subject line and introductory note.
Example 11-7: Forwarding a Message
?
m deedee
[1]Subject:
forwarding a message
[2]I received this note from Gary. Do you agree?
[3]~f 3
[4]Interpolating: 3
[5](continue)
~p
[6]------- Message contains: To: deedee Subject: forwarding a message I received this note from Gary. Do you agree? From gary Wed Mar 4 16:10:48 1999 Date: Wed, 4 Mar 1999 16:10:48 -0500 From: To: csug@myhost.mydomain Subject: Forwarding Cc: smith I think forwarding should be tomorrow's topic. Gary (continue)
.
EOT
Use the
m
command to
initiate message composition.
[Return to example]
Enter the subject for the new message. [Return to example]
Enter new text. [Return to example]
The
~f
escape command
in
mailx
to forward message number
3
[Return to example]
The
mailx
command indicates
that the message is being read, then prompts when it is ready to accept additional
input.
[Return to example]
Use the
~p
escape command
to verify that the message to be forwarded is properly included.
[Return to example]
As shown, after you enter the
~f
and
~p
commands, you can continue writing or end the message.
To forward
the current message, do not enter a number after the
~f
.
11.4 Getting Help from mailx
When you enter
mailx
and messages are waiting, the
following line is displayed at the top of the header:
Mail $Revision: 1.1.4.7 $ Type ? for help.
This
is a reminder that you can type a question mark (?
) at
the
mailx
prompt to display a brief description of available
mailx
commands, as shown in
Example 11-8.
Example 11-8: Output from mailx Help Command
?
?
Control Commands: q Quit - apply mailbox commands entered this session. x Quit - restore mailbox to original state. ! <cmd> Start a shell, run <cmd>, and return to mailbox. cd [<dir>] Change directory to <dir> or $HOME. Display Commands: t [<msg_list>] Display messages in <msg_list> or current message. n Display next message. f [<msg_list>] Display headings of messages. h [<num>] Display headings of group containing message <num>. Message Handling: e [<num>] Edit message <num> (default editor is e). d [<msg_list>] Delete messages in <msg_list> or current message. u [<msg_list>] Recall deleted messages. s [<msg_list>] <file> Append messages (with headings) to <file>. w [<msg_list>] <file> Append messages (text only) to <file>. pre [<msg_list>] Keep messages in system mailbox. Creating New Mail: m <addrlist> Create/send new message to addresses in <addrlist>. r [<msg_list>] Send reply to senders and recipients of messages. R [<msg_list>] Send reply only to senders of messages. a Display list of aliases and their addresses. ============================ Mailbox Commands ==========================
There are three commands you can use to exit from
mailx
:
The
q
command returns you to the shell
prompt and saves in the
mbox
file in your home directory,
any messages you read but did not delete.
The
x
and
exit
commands
are the same.
Each returns you to the shell prompt without changing your mailbox.
11.6 Customizing Mail Sessions
When setting up an account for a new user, the system manager defines
certain
mailx
default settings in the
/usr/share/lib/Mail.rc
file.
As supplied by the operating system, this file contains the
following
mailx
settings, which a user can override:
The
set ask
setting activates the
Subject:
prompt.
The
set noaskcc
setting deactivates
the
Cc:
prompt.
The
set dot
setting means that a single
dot on a blank line (.
) terminates the mail message.
The
set nokeep
setting means that
the system mailbox is deleted when it becomes empty.
This setting is unimportant
to most users.
The
set save
setting means that aborted
messages are saved in the
dead.letter
file.
You can customize your
mailx
session by defining aliases and setting variables in the
.mailrc
file in your home directory.
Example 11-9
shows a sample
.mailrc
file:
Example 11-9: Sample .mailrc File
alias sue susannah alias wombats tom, jeff, craig, jim, ken set ask set askcc set prompt=> unset dot set record=/usr/users/hale/outgoing set folder=folder set crt=20
You can use the
alias
command in
mailx
to create alternate names for users or user groups.
Note
The
mailx
alias is not the samealias
command used by the shell; you cannot use it to modify mail commands.
To define a permanent mail alias, enter the
alias
command in the
.mailrc
file, specifying the alias name
and one or more login names.
The following
.mailrc
file
defines two aliases:
alias sue susannah alias wombats tom, jeff, craig, jim, ken
The first alias defines the name
sue
to mean user
susannah
.
This enables you to send mail to
susannah
by using the name
sue
.
The second alias enables you to
send mail to members of a team called the Wombats -
tom
,
jeff
,
craig
,
jim
, and
ken
, by addressing your message to
wombats
.
Another
way to enter this line in
.mailrc
is this:
alias wombats tom,\ jeff,\ craig,\ jim,\ ken
The backslash
(\
) enables you
to write a single long command on several lines.
While in
mailx
, you can
see what aliases are defined by using the
alias
command
without arguments.
You can also define temporary aliases at the
mailx
prompt that are in effect during that
mailx
session.
11.6.2 Setting Mail Variables
Mail variables are similar to variables in your
.login
file.
They can be binary, string, or numeric.
To set a binary mail variable in your
.mailrc
file,
enter the
set
command followed by the option name.
The
sample
.mailrc
file includes these binary variables:
set ask set askcc unset dot
Setting
ask
makes
mailx
prompt you for the subject line of messages you send.
Setting
askcc
makes
mailx
prompt you for carbon-copy recipients.
Unsetting
dot
makes
mailx
refuse to end a message when
you type a line with just a period on it; you would have to end a message
by pressing Ctrl/D instead.
String mail variables accept characters or numbers as values.
The sample
.mailrc
file includes the following three string variables:
set folder=folder set record=/usr/users/hale/folder/outgoing set crt=20
The
folder
variable defines a subdirectory
to contain your mail folders.
If you set this variable, the
mailx
utility creates folders as files in this directory when you save
messages using the
save
folder
command.
The
mailx
utility interprets the file name as
a subdirectory of your home directory.
The
record
variable
tells
mailx
to put a copy of each message you send in the
file you specify.
If you do not set this variable, no automatic record is
kept.
This example specifies a file that will be treated as an ordinary folder
by
mailx
.
To select the record file, use the following
command:
orange%
mail -f outgoing
The
crt
variable
tells
mailx
how many lines of a message should be displayed
before invoking the pager program.
11.7 The Message Handling (MH) Program
An alternative to
the
mailx
program is the Message Handling program (MH).
The MH program is a set of small mail-handling programs that you use by entering
the command you want to execute from the shell prompt.
The MH program is
optional; it may not be installed on your host.
To determine if MH is available,
look for the
/usr/bin/mh
directory.
To use MH, you must add the
/usr/bin/mh
directory to your path by editing the
set path
line in your
.cshrc
or
.login
file.
Then, notify the shell about the change in your path by logging out
and logging back in, or by entering the following command (for the C shell):
orange%
source .login
If your path is set in
.cshrc
, use
.cshrc
instead of
.login
in this command.
For either the Bourne, Korn, or POSIX shell,
you would add this information to the
.profile
file and
notify the shell by entering the following command:
orange$
. .profile
With the MH program,
folders are organized differently from
mailx
folders.
New
and unread mail is kept in a folder called
inbox
, into
which you move the mail that arrives in your system mailbox by using the
inc
command.
You must enter the
inc
command every
time you want to include new mail.
You
select a folder with the
folder
command.
If you enter it
without a folder name,
folder
displays the currently selected
folder.
You can enter the
folder
command with the
-all
option to display
a list of your folders and the number of messages in each.
You use the
show
,
prev
, and
next
commands to read the current,
previous, and next messages in your current folder.
If you enter a message
number with the
show
command, that message becomes your
current message.
For example:
orange%
show 7
Message 7:
From deedee Mon Jul 23 10:02:10 1999
Date: Mon, 23 Jul 1999 10:01:25 edt
To: hale
Subject: Cafeteria hours
Cc:
Status: R
I'm sorry you didn't ask that sooner. The cafeteria
closes its breakfast service at 10. Lunch starts
at 11:30.
The
rmm
command removes messages from your current folder.
If you use the
rmm
command with no argument, it deletes the current message.
If
you specify one or more message numbers, the messages you specify are removed.
For example, to remove messages
2
,
5
,
and
7
, enter the following command:
orange%
rmm 2 5 7
Table 11-1
lists most of the MH commands.
For
a complete list, see the
mh
(1)
reference page.
For more information about each
MH command, see the reference page for each.
Table 11-1: Commands for the MH Message-Handling Program
Command | Description |
ali |
Searches the specified alias files and displays the addresses corresponding to the specified aliases. |
anno |
Annotates messages to keep track of distribution, forwarding, and replies for your messages. |
burst |
Extracts the original messages from a forwarded message, discards the forwarding header, and places the original messages at the end of the current folder. |
comp |
Creates a new mail message, providing a template for you to fill in and invoking an editor to finish the message. |
dist |
Redistributes the current message to addresses that are not on its original distribution list. |
folder |
Selects a folder or displays the contents of your current folder. |
folders |
Lists all your folders and the number of messages each one contains. |
forw |
Forwards messages to recipients who were not the original addressees. The message is encapsulated (included with a Forwarded Message notice) and a header is added. |
inc |
Incorporates mail from your system mailbox
into your
inbox
folder. |
mark |
Assigns a name to a sequence of messages
in your current folder.
You can then use the
pick
command
to select messages marked in this way. |
mhl |
Lists formatted MH messages.
You can use
this command as a replacement for the
more
command to display
messages. |
mhmail |
Sends mail to the specified users.
If you
do not specify any users,
mhmail
works like the
inc
command. |
msgchk |
Checks your system mailbox and any other
files that can receive new mail for you, looking for new messages.
If any
new messages are found,
msgchk
reports. |
next |
Displays the next message in the current folder or in the specified folder. |
packf |
Compresses a folder into a single file.
(Each
message is usually stored as a separate file.) Do not confuse the
packf
command with the
pack
command. |
pick |
Selects messages based on content, sequence name, or other criteria. |
prev |
Displays the previous message in the current folder. |
prompter |
Invokes a simple editor designed for composing
messages.
The
prompter
command is invoked by
comp ,
dist ,
forw , and
repl ; you do not need to call
prompter
directly. |
rcvstore |
Incorporates a message from the standard input directly into a folder. |
refile |
Moves messages from the current folder to one or more other folders. |
repl |
Replies to either the current message or the message you specify. |
rmf |
Removes all of the messages in a folder and then removes the folder itself. |
rmm |
Removes messages from a folder.
The message
files are not actually destroyed; instead,
rmm
renames
them by inserting a number sign ( # ) as
the first character of the file names.
On most hosts, files whose names begin
with a number sign are deleted once a day by an automatic process.
Until they
are actually deleted, you can recover removed messages by using the
mv
command to rename the files. |
scan |
Displays a list of the messages in a folder. |
send |
Sends a message that you have created by
using
comp ,
prompter , or another editor. |
show |
Displays the contents of a message. |
sortm |
Sorts messages in a folder into chronological
order according to the
Date:
field of the message header. |
whatnow |
Prompts you for what to do with a message you have just composed. You can reexamine an original message to which you are replying, resume editing the new message, or do other tasks associated with sending the message. |
whom |
Expands the header of a message into a set of addresses and optionally checks to see that the message can be delivered to those addresses. |
The following example shows how the MH
msgchk
command
reports new messages:
orange%
msgchk
You have new mail waiting, last read on
date
You can tailor the features of
MH by creating a
.mh_profile
file in your top-level directory.
The MH reference pages describe the features that you can modify.
11.8 Sending and Receiving Messages with write
The
write
command enables two users on the same or
different hosts to communicate on either a video display terminal or on nonvideo
devices (for example, a teletypewriter) that print messages on paper.
You can use
write
to send a message immediately to
someone who you cannot reach by telephone, especially if you do not require
a reply.
(See also the
talk
command in
Section 11.9.)
The
write
command displays a message on the terminal
screen of the recipient.
You can prevent users from communicating with you
through
write
and
talk
by entering the
mesg n
command in the
.login
file in your home
directory.
You cannot disable incoming messages from those with superuser
privileges.
To determine whether a user on a local host has disabled messages from
write
and
talk
, use the
finger
command and look at the first line of output for the phrase
messages
off
.
For example:
Login name: smith (messages off) In real life: John Smith
.
.
.
For users on a remote host, the disabling of
write
and
talk
is denoted by an asterisk (*
)
in the
TTY
field of the output line, for example:
.
.
.
Login Name TTY Idle When Office chang Peter Chang *p1 2:58 Thu 10:16 103
See
Section 10.2.2
and the
finger
(1)
reference page
for more information.
Your intended recipient may be running a command that temporarily disables
write
to prevent its interference.
If so, and the sender would receive
the following message just as if the recipient had explicitly disabled
write
.
Write: Permission denied
You can use the
write
command only when the recipient
is logged in.
Use the
who
command, as described in
Section 10.1, to list current users.
If, for example, user
smith
is not logged on when you send a message through
write
, the following message is displayed on your terminal screen:
smith is not logged on
The following steps show how user
wang
sends a message
to user
chung
, both of whom are logged in on local host
dancer
:
User
wang
enters the
write
command at the system prompt:
dancer%
write chung
The
write
program rings a bell and sends the following message to the
terminal screen of
chung
:
message from wang tty04 Feb 14 10:32:45
A bell rings user
wang's
terminal when the connection
is made.
User
wang
types the message, pressing the
Return key after each line, and ends the message by pressing Ctrl/D.
For example,
wang
sends the following message in two lines
to user
chung
:
The double-sided lab printer is working. [Return]
Re-send your job, and I'll check it. [Return]
[Ctrl/D]
After
wang
presses Ctrl/D, the
EOF
(end of file)
signal is displayed on the screen of user
chung
to indicate
the end of the message.
Note
See your system administrator if pressing Ctrl/D does not produce the
EOF
signal on the recipient's screen or if a bell does not ring on the sender's terminal.
You can use the exclamation point (!
) at the beginning
of a new message line to access the shell prompt and execute any operating
system command (including
write
).
For example, if
wang
forgot the name of the current directory from which
chung
is to retrieve certain files,
wang
can
enter the
!pwd
command to remind himself, as shown:
dancer%
write chung
You can copy the network user files from: [Return]
!pwd [Return]
/ufs/usr/staff/r0/net-dir/network_comm
!
/ufs/usr/staff/r0/net-dir/network_comm
[Ctrl/D]
dancer%
The
write
command can be used interactively, but
it is difficult for both sender and receiver to determine when the other has
finished and is waiting for a reply.
For example,
wang
can enter the following command:
dancer%
write chung
Wang
will then wait for
chung
to reply, but
chung
might also wait, thinking that
wang
intends to continue the message.
To
minimize problems, it is a good idea to establish a simple, temporary protocol
each time you want to use
write
interactively.
For example,
user
wang
can start his message to
chung
as follows:
dancer%
write chung
I'll mark the end of each message with 'ZZZ' [Return]
and wait for a reply. Please do the same. [Return]
I'll install a driver for the new printer. [Return]
Do you want to test it? ZZZ [Return]
For more information, see the
write
(1)
reference page.
11.9 Sending and Receiving Messages with talk
The
talk
command enables a user to send a message
to another user on the same or on a remote host, interactively and more easily
than through
write
.
However,
talk
works
only on video display terminals.
Like
write
, you can use
talk
to
send a message immediately to someone who you cannot reach by telephone.
Also,
like
write
, the
talk
command may disrupt
the receiver because it sends a notification message directly to a terminal
and continues doing so until a reply is entered.
To disable incoming messages (except from those with superuser privileges)
from
talk
(and from
write
, as described
earlier) you can put the command,
mesg n
in your
.login
file.
To determine whether a user has done this, use the
finger
command as described in
Section 10.2.1
or in the
finger
(1)
reference page.
During an online
talk
session, a send window and
a receive window are opened on each user's terminal.
Each user can type into
the send window while
talk
displays in the receive window
what the other user is typing.
For example, to send a message to user
hoover
on
the same local host
apple
, user
coolidge
enters the following
talk
command:
apple%
talk hoover
The program then divides the terminal screen of
coolidge
into two parts; the top half assigned to
coolidge
and the
bottom half assigned to
hoover
.
Next, the following message is displayed in the top of the screen:
[No connection yet]
When the connection is established, the following message is displayed:
[Waiting for your party to respond]
After this message, a bell rings on
hoover's
terminal
and the following message is displayed:
Message from Talk_Daemon@apple at 16:18 ... talk: connection requested by coolidge@apple talk: respond with: talk coolidge@apple
If
hoover
does not respond quickly, the following
message is displayed on
coolidge's
screen:
[Ringing your party again]
When
hoover
responds, a message about the established connection appears on
coolidge's
screen.
Each user can now enter text.
If the screen fills
up,
talk
overwrites the text at the beginning of the screen.
Either user can end the conversation by pressing Ctrl/C.
The end of
the
talk
session is marked as follows:
[Connection closing. Exiting]