123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- .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
- .IR 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.
- .PD
- .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
- ([^!]*\.bell-labs\.com)!(.*) | "/mail/lib/qmail '\es' 'net!\e1'" "'\e2'"
- .EE
- .PP
- if user
- .B presotto
- runs the command
- .PP
- .EX
- % mail plan9.bell-labs.com!ken plan9.bell-labs.com!rob
- .EE
- .PP
- there will follow only one execution of the command
- .PP
- .EX
- /mail/lib/qmail presotto net!plan9.bell-labs.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)
|