Provided by: fastforward_0.51-6_amd64 bug


       setforward - create a forwarding database


       setforward cdb tmp


       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,


       says   that   mail   for  should  be  forwarded  to  the  recipient  addresses and

       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.)


       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.


       If a command begins with an ampersand, setforward takes the remaining bytes in the command
       as a recipient address:


       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:



       If  a  command  begins  with  a question mark, setforward takes the remaining bytes in the
       command as an owner address:


       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.)


       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:


       fastforward will read and obey the commands in that file.  The file must be world-readable
       and accessible to fastforward.


       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.


       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:


       A  message  to will be sent 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.


       newaliases(1), preline(1), printforward(1), setmaillist(1)