NAME¶
setforward - create a forwarding database
SYNOPSIS¶
setforward cdb tmp
DESCRIPTION¶
setforward reads a table of forwarding instructions from its standard
input. It converts the table into a forwarding database. The forwarding
database can be used by
fastforward.
setforward writes the forwarding database to
tmp; it then moves
tmp to
cdb.
tmp and
cdb must be on the same
filesystem.
If there is a problem creating
tmp,
setforward complains and
leaves
cdb alone.
The forwarding database format is portable across machines.
A forwarding instruction contains a
target, a colon, a series of
commands, and a semicolon. Each command is a
recipient address,
owner address, external mailing list, or
program.
Commands are separated by commas.
For example,
root@yp.to: god@heaven.af.mil, staff@af.mil;
says that mail for
root@yp.to should be forwarded to the recipient
addresses
god@heaven.af.mil and
staff@af.mil.
When
setforward sees # it ignores all text from # to the end of the line:
# this is a comment
setforward ignores all other line endings, so you can split a forwarding
instruction across lines. It also ignores spaces and tabs. Exception: you can
put a space (or tab or comma or whatever) into a target or command by putting
a backslash in front of it. (However, NUL bytes are not permitted anywhere.)
TARGETS¶
When
fastforward sees the incoming address
user@host.dom, it tries
three targets:
user@host.dom,
@host.dom, and
user@. It
obeys the commands for the first target that it finds. Target names are
interpreted without regard to case.
All the commands for a single target must be listed in a single instruction.
Exception: an owner address can be listed in a separate instruction.
RECIPIENT ADDRESSES¶
If a command begins with an ampersand,
setforward takes the remaining
bytes in the command as a recipient address:
boss@yp.to: &god@heaven.af.mil;
fastforward sends each incoming mail message to the recipient address.
The recipient address must include a fully qualified domain name. It cannot be
longer than 800 bytes.
If a recipient address is itself a target in the forwarding table,
fastforward will recursively handle the instructions for that target.
Note that
@host.dom and
user@ wildcards do not apply here; they
apply only to the incoming address.
If a command begins with a letter or number,
setforward takes the entire
command as a recipient address:
boss@yp.to: god@heaven.af.mil;
OWNER ADDRESSES¶
If a command begins with a question mark,
setforward takes the remaining
bytes in the command as an owner address:
sos@heaven.af.mil: ?owner-sos@heaven.af.mil;
fastforward uses that address as the envelope sender for forwarded mail,
so bounces will go back to that address. (Normally, if a message is forwarded
to a bad address, it will bounce back to the original envelope sender.)
EXTERNAL MAILING LISTS¶
If a command begins with a dot or slash,
setforward takes the entire
command as the name of a binary mailing list file created by
setmaillist:
sos@heaven.af.mil: /etc/lists/sos.bin;
fastforward will read and obey the commands in that file. The file must
be world-readable and accessible to
fastforward.
PROGRAMS¶
If a command begins with a vertical bar or exclamation point,
setforward
takes the rest of the command as the name of a program to run:
dew@: |dew-monitor;
For a vertical bar,
fastforward feeds the message to that program. An
exclamation point works the same way except that
fastforward inserts
$UFLINE,
$RPLINE, and
$DTLINE in front of the message.
DUPLICATES¶
When
fastforward is building the recipient list for a message, it keeps
track of the recipient addresses and external mailing lists it has used. If
the same command shows up again, it skips it. For example:
everybody@yp.to: programmers@yp.to, testers@yp.to;
programmers@yp.to: joe@yp.to, bob@yp.to;
testers@yp.to: joe@yp.to, fred@yp.to;
A message to
everybody@yp.to will be sent to
joe@yp.to only once.
(This also means that addresses in an internal forwarding loop are discarded.)
Exception: If a target has an owner address, commands for that target are
considered different from commands for ``outside'' targets.
SEE ALSO¶
newaliases(1),
preline(1),
printforward(1),
setmaillist(1)