MAIL(7)                                                   MAIL(7)

          mail - address conventions and rewrite rules

          Mail(1) accepts and converts among the addressing conven-
          tions of several computer networks, according to rules given
          in the file /usr/lib/upas/rewrite.  Each line of the file is
          a rule.  Blank lines and lines beginning with '#' are

          Each rewriting rule consists of (up to) 6 strings:

               An ed(1)-like regular expression, with simple parenthe-
               ses () playing the role of \(\) and with the + and ?
               operators of egrep(1). The pattern is applied to mail

               An ed(1) style replacement string to generate a command
               to deliver messages to the destination matched by the
               pattern. The substring `\s', is replaced by the login
               id of the sender.  The default is no command.

          next hop
               An ed(1) style replacement string that represents the
               name of next routing hop.  The default is the empty
               string.  See the section below on forwarding.

          next address
               An ed(1) style replacement string that represents the
               address as it will be seen at the next hop.  The
               default is the empty string.  See the section below on

               The name of the conversion that must be performed
               before the message is piped to the command. If this
               field is empty, no conversion is performed.  The only
               conversion now known is rfc822, which makes the message
               conform to the ARPA RFC 822 mailer standard.

               The name to use for the current system.  The default
               name is found in /etc/whoami.

          Each field, except for pattern, is optional if it and all
          fields following it are to assume the default values.  Any
          empty field (e.g. ``'') assumes the default value.

     MAIL(7)                                                   MAIL(7)

          When delivering a message, mail starts with the first rule
          and continues down the list until a pattern matches the des-
          tination address.  If the rule contains no command, the mail
          is appended to the user's mailbox in the standard way (see
          mail(1)). If the rule does contain a command, upas(8) starts
          the command and pipes the message to it, performing any
          requested conversion.

          Forwarding is controlled using the next hop and next address
          fields and the forwarding files.  Using these fields, the
          rewriting rules are recursively applied to the source and
          destination addresses.  If all hops in either source or des-
          tination are in the forwarding files, forwarding is allowed.
          If the forwarding files do not exist, blanket forwarding is

          Rewriting rules for major networks are:

          network: UUCP (machine!machine!...!person)

               ^([^!]+)!([^!]+)$  \1 \
                 "uux 2>>/tmp/uuxl - -a \s \1!rmail \\(\2\\)"
               ^([^!]+)!((.+!)?([^!]+)![^!]+)$ \4 "uux - -a \s
               \1!rmail \\(\2\\)"

          network: ARPANET (arpa!person@machine)

               ^arpa!(.+)$ csnet "cs-inject \1.csnet-relay" rfc822

          network: CSNET (csnet!person@machine)

               ^csnet!(.+)$ csnet "cs-inject \1.csnet-relay" rfc822

          network: CSNET or ARPANET (person@machine)

               ^.+[@%.][^@%.]+$ csnet "cs-inject &.csnet-relay" rfc822

          network: ACSNET (acsnet!person@machine.acsnet)

               ^acsnet!(.+)$ ACSnet "acs-inject \1" rfc822

          network: BITNET (bitnet!person@machine)

               ^bitnet!(.+)[.@](.+)$ csnet
                 "cs-inject \1%\"

          The address on incoming mail depends largely on the origi-
          nating mail program.  However, the following can usually be
          relied upon to reach CS researchers at Bell Labs.

     MAIL(7)                                                   MAIL(7)

          UUCP:  research!person

          CSNET:  person@btl or person.machine@btl

          ARPANET:  person@btl.csnet or person.btl@csnet-relay

          ACSNET:  person@research or research!person

          BITNET: person%btl.csnet@wiscvm

          If in any of the above addresses, `person' is not on
          research, use `machine!...!person' in place of `person'.

          /usr/lib/upas/rewrite the rewriting rules

          uucp(1), mail(1), upas(8)