Amiga Unix — 68040 · 68060

Manual pages › General commands (1)

mail(1)

read mail or send mail to users

From the original Amiga UNIX 2.1 manual. Some things it mentions may not be in this release.

NAME · SYNOPSIS · DESCRIPTION · FILES · SEE ALSO · NOTES

NAME

mail, rmail - read mail or send mail to users

SYNOPSIS

Sending mail:
   mail [ -tw ] [ -m message_type ] recipient . . .

   rmail [ -tw ] [ -m message_type ] recipient . . .

Reading mail:
   mail [ -ehpPqr ] [ -f file ]

Forwarding mail:
   mail -F recipient . . .

Debugging:
   mail [ -xdebug_level ] [ other_mail_options ] recipient .  .
   .

   mail -T mailsurr_file recipient . . .

DESCRIPTION

A recipient is usually a user name recognized by login(1). When recipients are named, mail assumes a message is being sent (except in the case of the -F option). It reads from the standard input up to an end-of-file (cntrl-d) or, if reading from a terminal device, until it reads a line consisting of just a period. When either of those indicators is received, mail adds the letter to the mailfile for each recipient.

A letter is composed of some header lines followed by a blank line followed by the message content. The header lines section of the letter consists of one or more UNIX postmarks:

     From     sender     date_and_time     [remote      from
     remote_system_name]
followed by one or more standardized message header lines of
the form:

     keyword-name: [printable text]
where keyword-name  is  comprised  of  any  printable,  non-
whitespace,  characters  other than colon (`:').  A Content-
Length: header line, indicating the number of bytes  in  the
message  content  will  always  be present.  A Content-Type:
header line that describes the type of the  message  content
(such  as  text,  binary,  multipart,  etc.)  will always be
present unless the letter consists of only header lines with
no  message  content.   Header  lines may be contined on the
following line if that line starts with white space.

Sending mail:

The following command-line arguments affect SENDING mail:
-m   causes a Message-Type: line to be added to the  message
     header with the value of message_type.
-t   causes a To: line to be added to the message header for
     each of the intended recipients.
-w   causes a letter  to  be  sent  to  a  remote  recipient
     without  waiting  for  the  completion  of  the  remote
     transfer program.

If a letter is found to be undeliverable, it is returned to the sender with diagnostics that indicate the location and nature of the failure. If mail is interrupted during input, the message is saved in the file dead.letter to allow editing and resending. dead.letter is always appended to, thus preserving any previous contents. The initial attempt to append to (or create) dead.letter will be in the current directory. If this fails, dead.letter will be appended to (or created in) the user's login directory. If the second attempt also fails, no dead.letter processing will be done. rmail only permits the sending of mail; uucp(1C) uses rmail as a security precaution. Any application programs that generate mail messages should be sure to invoke rmail rather than mail for message transport and/or delivery.

If the local system has the Basic Networking Utilities installed, mail may be sent to a recipient on a remote system. There are numerous ways to address mail to recipients on remote systems depending on the transport mechanisms available to the local system. The two most prevalent addressing schemes are UUCP-style and Domain-style. With UUCP-style addressing, remote recipients are specified by prefixing the recipient name with the remote system name and an exclamation point (such as sysa!user). A series of system names separated by exclamation points can be used to direct a letter through an extended network (such as sysa!sysb!sysc!user). With Domain-style addressing, remote recipients are specified by appending an `@' and domain (and possibly sub-domain) information to the recipient name (such as user@sf.att.com). (The local System Administrator should be consulted for details on which addressing conventions are available on the local system.)

Reading Mail:

The following command-line arguments affect READING mail:
-e   causes mail not to be printed.  An exit value of  0  is
     returned if the user has mail; otherwise, an exit value
     of 1 is returned.
-h   causes a window of headers to  be  initially  displayed
     rather  than  the  latest message.  The display is fol-
     lowed by the `?' prompt.

-p   causes all messages to be printed without prompting for
     disposition.
-P   causes all messages to be printed with all header lines
     displayed,  rather  than  the  default selective header
     line display.
-q   causes mail to terminate after interrupts.  Normally an
     interrupt  causes  only  the termination of the message
     being printed.
-r   causes messages to be printed  in  first-in,  first-out
     order.
-f file
     causes mail to use file (such as mbox) instead  of  the
     default mailfile.

mail, unless otherwise influenced by command-line arguments, prints a user's mail messages in last-in, first-out order. The default mode for printing messages is to display only those header lines of immediate interest. These include, but are not limited to, the UNIX From and >From postmarks, From:, Date:, Subject:, and Content-Length: header lines, and any recipient header lines such as To:, Cc:, Bcc:, etc. After the header lines have been displayed, mail will display the contents (body) of the message only if it contains no unprintable characters. Otherwise, mail will issue a warning statement about the message having binary content and not display the content. (This may be overridden via the p command. See below.)

For each message, the user is prompted with a ?, and a line is read from the standard input. The following commands are available to determine the disposition of the message:

# Print the number of the current message.

- Print previous message.

<new-line>, +, or n Print the next message.

!command Escape to the shell to do command.

a Print message that arrived during the mail session.

d, or dp Delete the current message and print the next message.

d n Delete message number n. Do not go on to next message.

dq Delete message and quit mail.

h Display a window of headers around current message.

h n Display a window of headers around message number n.

h a Display headers of all messages in the user's mailfile.

h d Display headers of messages scheduled for deletion.

m [ persons ] Mail (and delete) the current message to the named person(s).

n Print message number n.

p Print current message again, overriding any indications of binary (that is, unprintable) content.

P Override default brief mode and print current message again, displaying all header lines.

q, or cntrl-D Put undeleted mail back in the mailfile and quit mail.

r [ users ] Reply to the sender, and other user(s), then delete the message.

s [ files ] Save message in the named file(s) (mbox is default) and delete the message.

u [ n ] Undelete message number n (default is last read).

w [ files ] Save message contents, without any header lines, in the named files (mbox is default) and delete the message.

x Put all mail back in the mailfile unchanged and exit mail.

y [ files ] Same as save.

? Print a command summary.

When a user logs in, the presence of mail, if any, is usually indicated. Also, notification is made if new mail arrives while using mail.

The permissions of mailfile may be manipulated using chmod in two ways to alter the function of mail. The other permissions of the file may be read-write (0666), read-only (0664), or neither read nor write (0660) to allow different levels of privacy. If changed to other than the default (mode 0660), the file will be preserved even when empty to perpetuate the desired permissions. (The administrator may override this file preservation using the DEL_EMPTY_MAILFILE option of mailcnfg.) The group id of the mailfile must be mail to allow new messages to be delivered, and the mailfile must be writable by group mail.

Forwarding mail:

The following command-line argument affects FORWARDING of mail:

-F recipients

Causes all incoming mail to be forwarded to recipients. The mailbox must be empty.

The -F option causes the mailfile to contain  a  first  line
of:
     Forward to recipient. . .

Thereafter, all mail sent to the owner of the mailfile will be forwarded to each recipient.

An Auto-Forwarded-From: ... line will be added to the forwarded message's header. This is especially useful in a multi-machine environment to forward all a person's mail to a single machine, and to keep the recipient informed if the mail has been forwarded.

Installation and removal of forwarding is done with  the  -F
invocation option.  To forward all your mail to systema!user
enter:
     mail -F systema!user

To forward to more than one recipient enter:

     mail -F "user1,user2@att.com,systemc!systemd!user3"

Note that when more than one recipient is specified, the entire list should be enclosed in double quotes so that it may all be interpreted as the operand of the -F option. The list can be up to 1024 bytes; either commas or white space can be used to separate users.

If the first character of any forwarded-to recipient name is
the  pipe  symbol  (`|'),  the remainder of the line will be
interpreted as a command to pipe the  current  mail  message
to.  The  command,  known  as  a Personal Surrogate, will be
executed in the environment of the recipient of the  message
(that  is,  basename  of the mailfile).  For example, if the
mailfile  is  /var/mail/foo,  foo  will  be  looked  up   in
/etc/passwd  to  determine  the correct userID, groupID, and
HOME directory.  The command's environment will  be  set  to
contain  only HOME, LOGNAME, TZ, PATH (= /usr/usr/bin:), and
SHELL (= /usr/bin/sh), and the command will execute  in  the
recipient's HOME directory.  If the message recipient cannot
be found in /etc/passwd, the command will  not  be  executed
and a non-delivery notification with appropriate diagnostics
will be sent to the message's originator.

After the pipe symbol, escaped double quotes should be used to have strings with embedded whitespace be considered as single arguments to the command being executed. No shell syntax or metacharacters may be used unless the command specified is /usr/bin/sh. For example,

     mail -F "|/bin/sh -c \"shell_command_line\""
will work, but is not advised since using double quotes  and
backslashes within the shell_command_line is difficult to do
correctly and becomes tedious very quickly.

Certain %keywords are allowed within the piped-to command specification and will be textually substituted for before the command line is executed.

%R   Return path to the message originator.
%c   Value of the Content-Type: header line if present.
%S   Value of the Subject: header line if present.

If the command being piped to exits with any non-zero value,
mail  will assume that message delivery failed and will gen-
erate a non-delivery notification to the message's  origina-
tor. It is allowable to forward mail to other recipients and
pipe it to a command, as in
     mail -F "carol,joe,|myvacationprog %R"

Two UNIX System facilities that use the forwarding of messages to commands are notify(1), which causes asynchronous notification of new mail, and vacation(1), which provides an auto-answer capability for messages when the recipient will be unavailable for an extended period of time.

To remove forwarding enter:

mail -F ""

The pair of double quotes is mandatory to set a NULL argument for the -F option.

In order for forwarding to work properly the mailfile should have mail as group ID, and the group permission should be read-write.

mail will exit with a return code of 0 if forwarding was successfully installed or removed.

Mail may also be forwarded by placing the list of recipients in a .forward file in your home directory. Forwarding to a pipe is not supported for .forward.

In the event that forwarding is set both in the recipient's mailfile as well as in the .forward file, the forward list specified in the mailfile will take precedence.

Debugging:

The following command-line arguments cause mail to provide DEBUGGING information:

-T mailsurr_file      causes mail to  display  how  it  will
                      parse and interpret the mailsurr file.
-xdebug_level         causes mail to  create  a  trace  file
                      containing debugging information.

The -T option requires an argument that will be taken as the pathname of a test mailsurr file. If NULL (as in -T ""), the system mailsurr file will be used. To use, type 'mail -T test_file recipient' and some trivial message (like "testing"), followed by a line with either just a dot (`.') or a cntrl-D. The result of using the -T option will be displayed on standard output and show the inputs and resulting transformations as mailsurr is processed by the mail command for the indicated recipient. Mail messages will never actually be sent or delivered when the -T option is used.

The -x option causes mail to create a file named /tmp/MLDBGprocess_id that contains debugging information relating to how mail processed the current message. The absolute value of debug_level controls the verboseness of the debug information. Zero implies no debugging. If debug_level is greater than zero, the debug file will be retained only if mail encountered some problem while processing the message. If debug_level is less than zero the debug file will always be retained. The debug_level specified via -x overrides any specification of DEBUG in /etc/mail/mailcnfg. The information provided by the -x option is esoteric and is probably only useful to System Administrators. The output produced by the -x option is a superset of that provided by the -T option.

Delivery Notification

Several forms of notification are available for mail by including one of the following lines in the message header.

Transport-Options: [ /options ]
Default-Options: [ /options ]
>To: recipient [ /options ]

Where the ``/options'' may be one or more of the following:
/delivery   Inform the sender that the message was  success-
            fully delivered to the recipient's mailbox.

/nodelivery Do  not  inform   the   sender   of   successful
            deliveries.

/ignore Do not inform the sender of unsuccessful deliveries.

/return Inform the sender if mail delivery fails. Return the failed message to the sender.

/report Same as /return except that the original message is not returned.

The default is /nodelivery/return. If contradictory options are used, the first will be recognized and later, conflicting, terms will be ignored.

FILES

dead.letter         unmailable text
/etc/passwd         to identify sender and locate recipients
/etc/mail/mailsurr  routing / name translation information
/etc/mail/mailcnfg  initialization information
$HOME/mbox          saved mail
$MAIL               variable containing path name  of  mail-
                    file
/tmp/ma*            temporary file
/tmp/MLDBG*         debug trace file
/var/mail/*.lock    lock for mail directory
/var/mail/:saved    directory  for  holding  temp  files  to
                    prevent  loss  of data in the event of a
                    system crash.
/var/mail/user      incoming mail for  user;  that  is,  the
                    mailfile

SEE ALSO

chmod(1), login(1),  mailx(1),  notify(1),  write(1),  vaca-
tion(1)
mail_pipe(1M),  mailsurr(4),  mailcnfg(4)  in   the   System
Administrator's Reference Manual.
User's Guide.

NOTES

The "Forward to recipient" feature may result in a loop. Local loops (messages sent to usera, which are forwarded to userb, which are forwarded to usera) will be detected immediately. Remote loops (mail sent to sys1!usera1 which is forwarded to sys2!userb, which is forwarded to sys1!usera) will also be detected, but only after the message has exceeded the built-in hop count limit of 20. Both cases of forwarding loops will result in a non-delivery notification being sent to the message originator.

As a security precaution, the equivalent of a chmod s+g is performed on the mailfile whenever forwarding is activated via the -F option, and a chmod s-g is done when forwarding is removed via the -F option. If the setGID mode bit is not set when mail attempts to forward an incoming message to a command, the operation will fail and a non-delivery report with appropriate diagnostics will be sent to the message's originator.

The interpretation and resulting action taken because of the header lines described in the Delivery Notifications section above will only occur if this version of mail is installed on the system where the delivery (or failure) happens. Earlier versions of mail may not support any types of delivery notification.

Conditions sometimes result in a failure to remove a lock file.

After an interrupt, the next message may not be printed; printing may be forced by typing a p.