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 forward-
       ing 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.


INSTRUCTION FORMAT

       A  forwarding  instruction contains a target, a colon, a	series of com-
       mands, 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  forward-
       ing instruction across lines.  It also ignores spaces and tabs.	Excep-
       tion: 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 com-
       mands 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
       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  remain-
       ing 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 setmail-
       list:

	  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, setfor-
       ward 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 dis-
       carded.)

       Exception: If a target has an owner address, commands for  that	target
       are considered different	from commands for ``outside'' targets.


SEE ALSO



Man(1) output converted with man2html