TH REWRITE 6
SH NAME
rewrite \- mail rewrite rules
SH SYNOPSIS
B /mail/lib/rewrite
SH DESCRIPTION
IR Mail (1)
uses rewrite rules to convert mail destinations into
commands used to dispose of the mail.
Each line of the file
F /mail/lib/rewrite
is a rule.
Blank lines and lines beginning with
B #
are ignored.
PP
Each rewriting rule consists of (up to) 4 strings:
TF pattern
TP
I pattern
A regular expression in the style of
IR regexp (6).
The
I pattern
is applied to mail destination addresses.
The pattern match is case-insensitive
and must match the entire address.
TP
I type
The type of rule; see below.
TP
I arg1
An
IR ed (1)
style replacement string, with
BI \e n
standing for the text matched by the
IR n th
parenthesized subpattern.
TP
I arg2
Another
IR ed (1)
style replacement string.
PD
PP
In each of these fields the substring
B \es
is replaced by the login id of the
sender and the substring
B \el
is replaced by the name of the local machine.
PP
When delivering a message,
I 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 the
I type
of the rule:
TF alias
TP
B >>
Append the mail to the file indicated by expanding
IR arg1 ,
provided that file appears to be a valid mailbox.
TP
B |
Pipe the mail through the command formed from concatenating the
expanded
I arg1
and
I arg2.
TP
B alias
Replace the address by the address(es) specified
by expanding
I arg1
and recur.
TP
B translate
Replace the address by the address(es) output by the
command formed by expanding
I arg1
and recur.
PP
I Mail
expands the addresses recursively until each address has matched a
B >>
or
B |
rule or until the recursion depth indicates a rewriting loop
(currently 32).
PD
PP
If
IR mail (1)
is called with more than one address and
several addresses match
B |
rules and result in the same
expanded
IR arg1 ,
the message is delivered to all those addresses
by a single command,
composed by concatenating the common expanded
I arg1
and each expanded
IR arg2 .
This mail bundling is performed to reduce the number
of times the same message is transmitted across a
network.  For example, with the following
rewrite rule
PP
EX
  ([^!]*\.att\.com)!(.*)  |  "/mail/lib/qmail '\es' 'net!\e1'" "'\e2'"
EE
PP
if user
B presotto
runs the command
PP
EX
  % mail research.att.com!ken research.att.com!rob
EE
PP
there will follow only one execution of the command
PP
EX
  /mail/lib/qmail presotto net!research.att.com ken rob
EE
PP
Here
B /mail/lib/qmail
is an
IR rc (1)
script used for locally queuing remote mail.
PP
In the event of an error, the disposition of the mail depends on the name of the
command executing the rewrite.  If the command is called
B mail
and is run by
BR $user ,
the command will print an error and deposit the message in
BR /mail/box/$user/dead.letter .
If the command is called
BR rmail ,
usually because it was invoked to deliver mail arriving over the network,
the message will be returned to the sender.  The returned message will
appear to have been sent by user
BR postmaster .
SH "SEE ALSO"
IR mail (1)