mail(1) DG/UX R4.11MU05 mail(1)
NAME
mail, rmail, rmail_sysv4 - 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 (Ctrl-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-white-space,
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 continued on the following line
if that line starts with white space.
On a system with DG/UX information security, mail may only be
received at the same label as the process that sent it. Thus, if mail
is sent to a user at two distinct labels, that user must login at the
first label, read any mail at that level, then login at the other
level and read any mail present there.
A user may determine that there is mail at any label dominated by his
current process clearance by running the ckmail command. In this
way, the user may login at his highest permitted clearance, run the
ckmail command, and then know what mail is present.
International Features
mail enables the retrieval, editing and processing of mail messages
which include characters from supplementary code sets. Supplementary
code set characters can be used in the subject line.
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.
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 followed 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 Ctrl-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 mail file must be mail to allow new messages to
be delivered, and the mail file 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 with the environment set to
contain only HOME, LOGNAME, TZ, PATH (= /usr/bin:/usr/lbin:), and
SHELL (= /usr/bin/sh). The command will execute in the recipient's
HOME directory, with LOGNAME set to the recipient of the message
(that is, base name of the mailfile). For example, if the mail file
is /var/mail/foo, foo will be looked up in /etc/passwd to determine
the correct userID, groupID, and HOME directory. The /etc/TIMEZONE
file will be used to set the TZ variable if possible (otherwise, TZ
will not be set). 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 white space 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 generate a non-
delivery notification to the message's originator. 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.
On systems running a DG/UX information security option when eval is
present, forwarding is disabled.
mail will exit with a return code of 0 if forwarding was successfully
installed or removed.
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 path
name 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 Ctrl-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 successfully
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
/etc/TIMEZONE to set TZ for mail forwarding
$HOME/mbox saved mail
$MAIL variable containing path name of mailfile
/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), ckmail(1) in the security man pages, login(1), mailx(1),
notify(1), write(1), vacation(1), rmail_bsd(1),
mail_pipe(1M), mailsurr(4M), mailcnfg(4M).
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.
In some cases, text messages originating in one locale may be treated
as binary when received in another locale (see environ(5)). This can
occur when the locales use different character sets. To allow such
messages to be treated as text when received, the LC_CTYPE or LANG
environment variable should be set to match the value used on the
sending system.
If a user's mail folder resides on a non-DG/UX system, or if the user
has saved a mail folder from a pre-5.4 DG/UX system, and these
folders contain messages that use 8-bit characters, there may be
difficulties in processing the messages with mail. In such a case,
the difficulties should be eliminated if the locale is set so that
the ISO 8859-1 character set will be used.
When using the standard DG/UX mail system with UUCP based mail, mail
headers may be regenerated by sendmail leaving the return address
incorrect. If, when using UUCP based mail, a user encounters
problems with the return address being set to a uucp login such as
"From: uucp", he should use rmail_bsd. One way to use rmail_bsd is
to change the /usr/bin/rmail symbolic link on the system receiving
mail so that it points to rmail_bsd instead of rmail_sysv4. The
other way to use rmail_bsd is to edit either the sendmail.cf or
mailsurr file on the remote uucp system(s). The file you edit
depends on which method that particular system uses to pass on uucp
mail. Edit the file such that rmail_bsd is invoked instead of rmail.
Licensed material--property of copyright holder(s)