UPAS(8)

NAME
upas, rmail, translate - mail delivery system

SYNOPSIS
rmail person ...

/usr/lib/upas/translate name

/usr/lib/upas/auth sender receiver

DESCRIPTION
Users send mail by mail(1). Remote machines use rmail. Both call on upas programs.

Mail addresses are interpreted according to rewrite rules as described below. When the addresses for a mail or rmail command have been interpreted, they are bundled by network and passed to network-specific handlers, such as route.inet.

Translate looks up a mail name in an alias list (see mail(6)) and places the result on standard output.

Auth is called by upas to authorize mail delivery for each sender, receiver pair. The mail is accepted if the previous hop was a trusted gateway machine in or all the machines in the source or destination path are in

  Rewrite rules
Each line of the file is a rule. Blank lines and lines beginning with # are ignored.

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

pattern
    A regular expression in the style of regexp(3). The pattern is applied to mail destination addresses. The pattern match is case-insensitive and must match the entire address.

type
    The type of rule; see below.

arg1
    An ed(1) style replacement string, with \n standing for the text matched by the nth parenthesized subpattern.

arg2
    Another ed(1) style replacement string.

In each of these fields the substring is replaced by the login id of the sender and the substring is replaced by the name of the local machine.

When delivering a message, mail starts with the first rule and continues down the list until a pattern matches the destination address. It then performs one of the following actions depending on rule type:
>>  Append the mail to the file indicated by expanding arg1, provided that file appears to be a valid mailbox.
|   Pipe the mail through the command formed from concatenating the expanded arg1 and arg2.
alias
    Replace the address by the address(es) specified by expanding arg1 and recur.
translate
    Replace the address by the address(es) output by the command formed by expanding arg1 and recur.
auth
    Call the program in expanded arg1 and authorize(reject) the mail if it returns a zero(non-zero) return code.

Mail expands the addresses recursively until each address has matched a or rule or until the recursion depth indicates a rewriting loop (currently 32).

An operator is only applied once per address. If no rule is encountered, the mail is accepted.

If several addresses match rules and result in the same expanded arg1, the message is delivered to all those addresses by a single command, composed by concatenating the common expanded arg1 and each expanded arg2. This is meant to make less work of a message to several recipients on the same machine. For example, the rule

    ([^!]+)!(.+) | "uux - -a \s \1!rmail" \2

causes to generate the single delivery command

EXAMPLES
A sample rewrite file:

    # local mail
    [^!@%]+	translate  "exec translate '&'"
    local!([^!@%]+)	>>	/usr/spool/mail/\1
    \l!(.+)	alias	\1

    # convert %@ format to ! format
    (_822_)!((.+)!)?([^!]+)[%@]([^!%@]+)  \
    	alias	\1!\2\5!\4
    ([^!]+)[%@]([^!@%]+)	alias	_822_!\2!\1
    _822_!(.+)	alias	\1

    # special domains
    [^!]+wisc\.edu!.+	alias	xunet!&

    # network gateways
    (csnet|bitnet)!(.+)	alias	inet!&
    acsnet!.+

    # real networks
    inet!([^!]+)!(.+)	|	"/usr/lib/upas/route.inet '\s' '\1'" "'\2'"
    ([^!]+)!(.+)	|	"/usr/lib/upas/route '\s' '\1'" "'\2'"

FILES

list of files to search

private aliases

rewriting rules

known AT&T machines

machines that check mail authorization reliably

alias lookup

mail interfaces to specific networks

interface to local (i.e. AT&T) Datakit network

shell file that calls the mailer

actually delivery program

linked to /usr/lib/upas/send

mailboxes

delivery logs

updates various mail and uucp files

authentication

temp file

lock file

unmailable text

SEE ALSO
uucp(1), mail(1), mail(6), smtp(8)
D. L. Presotto and W. R. Cheswick, `Upas—a simpler approach to network mail', this manual, Volume 2