Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

chmod(1)

login(1)

mailcap(4)

mailcheck(1)

mailcnfg(4)

mail_pipe(1M)

mailR(5)

mailsurr(4)

mailx(1)

metamail(1)

notify(1)

vacation(1)

write(1)






       mail(1)                                                      mail(1)


       NAME
             mail, rmail - read mail or send mail to users

       SYNOPSIS
          Sending mail:
             mail [-Mtw] [-m message_type] recipient . . .
             rmail [-tw] [-m message_type] [-r originator]  recipient . . .

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

          Forwarding mail:
             mail -F recipient . . .

          Debugging:
             mail [-d] [-#] [-xdebug_level] [other_mail_options] [recipient . . .]
             mail -T mailsurr_file recipient . . .
             mail -R mailR_rewrite_file recipient . . .

       DESCRIPTION
             A recipient is usually a user name recognized by login(1).
             When recipient is specified, 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 (/var/mail/user) 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
             followed by one or more standardized message header lines.
             The first UNIX postmark has the form:

                   From sender date_and_time [remote from remote_system_name]

             Any subsequent UNIX postmarks have the form:
                   >From sender date_and_time [remote from remote_system_name]

             Some older UNIX Systems may also generate postmarks of the
             form:
                   >From sender date_and_time [forwarded by user_name]





                           Copyright 1994 Novell, Inc.               Page 1













      mail(1)                                                      mail(1)


            The standardized message header lines have the form:
                  keyword-name: [printable text]

            where keyword-name is comprised of any printable, non-
            whitespace, characters other than colon (`:').  If there is
            text after the keyword-name, the colon must be followed by
            whitespace.  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.
            mail processes supplementary code set characters according to
            the locale specified in the LC_CTYPE and LANG environment
            variables [see LANG on environ(5)].

            The return address for a mail message is constructed by
            concatenating all of the remote_system_names found in the UNIX
            postmarks, top to bottom and separated with exclamation
            points, and then concatenating the sender found on the last
            UNIX postmark.

         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.
            -r originator
                        Used only with rmail, this option sets the sender
                        of the mail.  It overrides the pid.  -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 recipient without
                        waiting for the completion of the delivery.
            -M          causes mail to act as if it had been invoked as
                        rmail.

            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.  The return address used will be the
            first domain-style address found on the Sender: or Errors-to:
            headers.  If no domain-style addresses are found, the return
            path generated from the UNIX postmark headers will be used.





                          Copyright 1994 Novell, Inc.               Page 2













       mail(1)                                                      mail(1)


             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 invoke rmail rather than mail for message
             transport and/or delivery.  rmail permits a mail message to
             begin with UNIX postmarks; mail does not.  Both rmail and mail
             prefix a new UNIX postmark indicating the user who ran the
             command, as determined by the effective user ID.

             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.)

             When sending mail, delivery is controlled by the
             /etc/mail/mailsurr file, and the form of the delivered mail is
             controlled by the /etc/mail/rewrite file.  Both of these files
             may be administered by the local system administrator.

          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.



                           Copyright 1994 Novell, Inc.               Page 3













      mail(1)                                                      mail(1)


            -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 $HOME/mbox) instead of
                  the default mailfile.

            mail prints a user's mail messages in last-in, first-out order
            unless the -r option is specified.  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.)

            If the mail message is in Multi-Purpose Internet Message
            Extensions (MIME) format and contains something other than a
            text message, or contains text in character set other than
            that associated with your current locale, the message will be
            piped to the metamail program for parsing.  (If the
            environment variable $NOMETAMAIL is set, metamail will not be
            invoked.)  The character set associated with your current
            locale may be overridden by using the $MM_CHARSET environment
            variable.

            Only one invocation of mail is permitted to modify the mailbox
            at a time; other invocations are permitted to read the mail
            but will not update the mailbox.





                          Copyright 1994 Novell, Inc.               Page 4













       mail(1)                                                      mail(1)


             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 persons (yourself is default).

             M persons            Send mail to the named persons (yourself
                                  is default), attaching a copy of the
                                  current message, then delete the current
                                  message.

             n                    Print message number n.




                           Copyright 1994 Novell, Inc.               Page 5













      mail(1)                                                      mail(1)


            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.  The return
                                 address used will be the first domain-
                                 style address found on the Reply-to:,
                                 From: or Sender: headers.  If no domain-
                                 style addresses are found, the return
                                 path generated from the UNIX postmark
                                 headers will be used.

            R [users]            Reply to the sender, and other user(s),
                                 attaching a copy of the current message,
                                 then delete the message.  The return
                                 address used will be the first domain-
                                 style address found on the Reply-to:,
                                 From: or Sender: headers.  If no domain-
                                 style addresses are found, the return
                                 path generated from the UNIX postmark
                                 headers will be used.

            s [files]            Save message in the named file(s)
                                 ($HOME/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 ($HOME/mbox is
                                 default) and delete the message.

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





                          Copyright 1994 Novell, Inc.               Page 6













       mail(1)                                                      mail(1)


             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 -F option causes the file /var/mail/:forward/user 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 of 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


                           Copyright 1994 Novell, Inc.               Page 7













      mail(1)                                                      mail(1)


            To forward to more than one recipient enter:
                  mail -F 'user1, user2@xyz.com, systemc!systemd!user3'

            Note that when more than one recipient is specified, the
            entire list should be enclosed in 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/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, double quotes should be used to have
            strings with embedded whitespace be considered as single
            arguments to the command being executed.  Backslashes (\) may
            be used to escape a double quote from being treated as such.
            No shell syntax or metacharacters may be used unless the
            command specified is /usr/bin/sh.  For example,
                  mail -F '|/usr/bin/sh -c "shell_command_line"'

            The user's mail box is locked while the personal surrogate is
            being executed, thus guaranteeing that only one personal
            surrogate command can execute at a time.  It also means that
            any attempts to send mail to the user within the personal
            surrogate will fail.

            Certain %keyletters are allowed within the piped-to command
            specification and will be textually substituted (surrounded by
            quotation marks) before the command line is executed.

            %R    Return path to the message originator.




                          Copyright 1994 Novell, Inc.               Page 8













       mail(1)                                                      mail(1)


             %c    Value of the Content-Type: header line if present.
             %S    Value of the Subject: header line if present.

             Because of the quotation marks surrounding the substituted
             strings, care must be used when invoking commands which also
             use quotation marks.  From the previous example, to get a %S
             passed as part of the single string to the shell, the quoted
             string must be ended before the %S, which includes its own
             quotation marks, and will be concatenated to the previous
             string:
                   mail -F '|/usr/bin/sh -c "shell_command_line "%S'

             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'

             If the first two characters of any forwarded-to recipient name
             are `>|', the remainder of the line will be interpreted as a
             personal surrogate, just as above, but the mail message will
             additionally be appended to the user's mailfile and the exit
             value from the program will be ignored.  This is known as a
             Post-processed Personal Surrogate.

             It is possible to control exactly how mail will treat
             different exit codes from the personal surrogate command.
             Following the | may be placed an exit code specification list
             which determines which exit codes are to be treated as
             indicating successful message delivery, which exit codes are
             to be treated as failed message delivery, and which exit codes
             are to indicate that mail should continue on and append the
             message to the user's mailfile.  An exit code specification
             looks like S=ec;C=ec;F=ec;.  In each case, ec is a list of
             numbers or ranges of numbers, separated by commas, or the wild
             card *.  For example, the personal surrogate | S=1-
             5,99;C=0,12;F=*; mysurrogate %R will run the command, treating
             exit codes of 1 through 5 and 99 as a successful message
             delivery, exit codes of 0 and 12 as indicating continuing with
             local delivery, and all other exit codes indicating a failed
             message delivery.

             If no exit code specification is given, the default for | is
             S=0;F=*; and the default for >| is C=*;.



                           Copyright 1994 Novell, Inc.               Page 9













      mail(1)                                                      mail(1)


            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.

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

                        -d recipients . . .
                        -# recipients . . .

            The -d and -# options provide a trace, causing mail to display
            how  a  recipient  name  will be handled when delivering mail.
            The -d option shows how the mail to  each  mail  recipient  is
            treated,  reflecting  all  address translations, while sending
            mail.  The -# option does not send mail, but  reports  instead
            how  the  mail  would be sent: the sender, the next machine to
            handle the mail, and the recipient's address relative to  that
            machine.  The report reflects address translation but does not
            follow any forwarded mail addresses.

            -T mailsurr_file      causes mail to display how it will parse
                                  and interpret the mailsurr file.

            -x debug_level        causes  mail  to  create  a  trace  file
                                  containing debugging information.

            -R mailR_rewrite_file causes mail to use a different file  for
                                  commands on how to rewrite headers.




                          Copyright 1994 Novell, Inc.              Page 10













       mail(1)                                                      mail(1)


             The -T option requires an argument that will be taken  as  the
             pathname of a test mailsurr file.  If empty (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.

             The -R option requires an argument that will be taken  as  the
             pathname of a test rewrite file written in the mailR language.
             This   file   will   be   used   instead   of   the    default
             /etc/mail/rewrite file.

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

                   Default-Options: [/options]
                   Transport-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.





                           Copyright 1994 Novell, Inc.              Page 11













      mail(1)                                                      mail(1)


            /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.  The >To: options have precedence over
            the Transport-Options: options, which in turn have precedence
            over the Default-Options: options.  The default for mail
            coming from the user IDs postmaster, mailer-daemon, mailer-
            demon, uucp and mmdf is /nodeliver/ignore.

         $HOME/mbox
            The default file for saving mail is $HOME/mbox.  If $HOME/mbox
            is a directory, then the file $HOME/mbox/mbox will be used
            instead.

      FILES
            dead.letter    unmailable text
            /etc/passwd    to identify sender and locate recipients
            /etc/mail/mailsurr
                           routing and name translation information
            /etc/mail/rewrite
                           mail header rewriting functions
            /etc/mail/mailcnfg
                           initialization information
            $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/:forward
                           directory for holding mail forwarding
                           information.


                          Copyright 1994 Novell, Inc.              Page 12













       mail(1)                                                      mail(1)


             /var/mail/:readlocks
                            directory for locks while reading mail.
             /var/mail/user incoming mail for user; that is, the mailfile
             /usr/lib/locale/locale/LC_MESSAGES/uxemail
                            language-specific message file [See LANG on
                            environ(5).]

       REFERENCES
             chmod(1), login(1), mailcap(4), mailcheck(1), mailcnfg(4),
             mail_pipe(1M), mailR(5), mailsurr(4), mailx(1), metamail(1),
             notify(1), vacation(1), write(1)

       NOTICES
             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!usera 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 u+s is
             performed on the forwarding file whenever forwarding is
             activated via the -F option.  If the setUID 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.





                           Copyright 1994 Novell, Inc.              Page 13








Typewritten Software • bear@typewritten.org • Edmonds, WA 98026