


PROCMAIL(1)              USER COMMANDS                PROCMAIL(1)



NAME
     procmail - autonomous mail processor

SYNOPSIS
     procmail [ -+PRESERVOPT++TEMPFAILOPT+ ] [ _p_a_r_a_m_e_t_e_r=_v_a_l_u_e |
     _r_c_f_i_l_e ] ...
     procmail [ -+PRESERVOPT++TEMPFAILOPT+ ] -+DELIVEROPT+ _r_e_c_i_-
     _p_i_e_n_t
     procmail -+VERSIONOPT+

DESCRIPTION
     For a quick start, see NOTES at the end.

     Procmail  should   be   invoked   automatically   over   the
     +DOT_FORWARD+  file  mechanism  as  soon  as  mail  arrives.
     Alternatively, when installed by a system administrator,  it
     can  be  invoked  from  within the mailer immediately.  When
     invoked, it first sets some environment variables to default
     values,  reads  the  mail  message  from stdin until an EOF,
     separates the body from the header, and then, if no  command
     line  arguments  are  present,  it starts to look for a file
     named +PROCMAILRC+ in your home directory.  According to the
     processing  recipes in this file, the mail message that just
     arrived gets distributed into the right folder (and more).

     If running suid root or with root priviliges, procmail  will
     be  able  to  perform  as a functionally enhanced, backwards
     compatible mail delivery agent.

  Defaults
     USER, HOME and SHELL  Your (the recipient's) defaults

     SHELLMETAS            +DEFshellmetas+

     SHELLFLAGS            +DEFshellflags+

     ORGMAIL               +SYSTEM_MBOX+

     MAILDIR               +DEFmaildir+

     DEFAULT               +DEFdefault+

     MSGPREFIX             +DEFmsgprefix+

     SENDMAIL              +DEFsendmail+










BuGless              Last change: 1992/01/31                    1






PROCMAIL(1)              USER COMMANDS                PROCMAIL(1)



     LOCKEXT               +DEFlockext+

     LOCKFILE              +DEFdefaultlock+
                           (only if in explicit delivery mode and
                           no rcfile is found)

  Environment
     Before you get lost in the multitude  of  environment  vari-
     ables,  keep  in  mind  that  all  of  them  have reasonable
     defaults.

     MAILDIR     Current directory while  procmail  is  executing
                 (that  means  that  all  paths  are  relative to
                 $MAILDIR).

     DEFAULT     Default mailbox file  (if  not  told  otherwise,
                 procmail will dump mail in this mailbox).

     MSGPREFIX   Filename prefix that is used when delivering  to
                 a  directory  (not used when delivering to an MH
                 directory).

     LOGFILE     All incoming messages will be logged  here  with
                 their  `+FROM+'  and  `Subject:'  lines  in  the
                 header, and an additional line  specifying  what
                 folder  it  finally  went  to  and  how long (in
                 bytes) the message was.   This  file  will  also
                 contain  any  error  or diagnostic messages from
                 procmail (normally none :-) or  any  other  pro-
                 grams  started by procmail.  If this file is not
                 specified it defaults  to  +console+.   You  can
                 turn  on  _e_x_t_e_n_d_e_d  _d_i_a_g_n_o_s_t_i_c_s  by prepending a
                 `+DEBUGPREFIX+' to the desired pathname.

     LOG         Anything  assigned  to  this  variable  will  be
                 echoed in $LOGFILE.

     ORGMAIL     Usually the system mailbox  (ORiGinal  MAILbox).
                 If,  for  some  obscure reason (like `filesystem
                 full') the mail could  not  be  delivered,  then
                 this  mailbox will be the last resort.  If proc-
                 mail fails to save the mail in here (deep,  deep
                 trouble  :-),  then the mail will bounce back to
                 the sender.











BuGless              Last change: 1992/01/31                    2






PROCMAIL(1)              USER COMMANDS                PROCMAIL(1)



     LOCKFILE    Global semaphore file.   If  this  file  already
                 exists,  procmail  will  wait  until it has gone
                 before proceeding, and  will  create  it  itself
                 (cleaning it up when ready, of course).  If more
                 than one _l_o_c_k_f_i_l_e are specified, then the previ-
                 ous  one will be removed before trying to create
                 the new one.

     LOCKEXT     Default extension that is appended to a destina-
                 tion  file  to  determine what local _l_o_c_k_f_i_l_e to
                 use (only if turned on, on a per-recipe basis).

     LOCKSLEEP   Number of seconds  procmail  will  sleep  before
                 retrying  on a _l_o_c_k_f_i_l_e (if it already existed);
                 if not specified, it defaults to  +DEFlocksleep+
                 seconds.

     LOCKTIMEOUT Number of seconds that have to have passed since
                 a  _l_o_c_k_f_i_l_e  was  last  modified/created  before
                 procmail decides that this must  be  an  errone-
                 ously  leftover  lockfile that can be removed by
                 force now.  If zero, then  no  timeout  will  be
                 used  and  procmail  will wait forever until the
                 lockfile  is  removed;  if  not  specified,   it
                 defaults   to  +DEFlocktimeout+  seconds.   This
                 variable is useful to prevent indefinite hangups
                 of sendmail/procmail.

     TIMEOUT     Number of  seconds  that  have  to  have  passed
                 before  procmail  decides  that  some  child  it
                 started must be hanging.  The offending  program
                 will  receive  a TERMINATE signal from procmail,
                 and processing of the rcfile will continue.   If
                 zero,  then no timeout will be used and procmail
                 will wait  forever  until  the  child  has  ter-
                 minated;  if not specified, it defaults to +DEF-
                 timeout+ seconds.

     HOST        If this is not the _h_o_s_t_n_a_m_e of the machine, pro-
                 cessing  of  the current _r_c_f_i_l_e will immediately
                 cease. If other rcfiles were  specified  on  the
                 command  line, processing will continue with the
                 next one.  If all  rcfiles  are  exhausted,  the
                 program will terminate, but will not generate an
                 error (i.e. to the mailer it will seem that  the
                 mail has been delivered).  Only the first +HOST-
                 NAMElen+ characters of the HOST are significant.








BuGless              Last change: 1992/01/31                    3






PROCMAIL(1)              USER COMMANDS                PROCMAIL(1)



     UMASK       The name says it all (if it doesn't, then forget
                 about  this  one  :-).   It is taken as an octal
                 number.   If  not  specified,  it  defaults   to
                 +INIT_UMASK+.

     SHELLMETAS  If any of the characters in  SHELLMETAS  appears
                 in  the line specifying a filter or program, the
                 line will be fed to $SHELL instead of being exe-
                 cuted directly.

     SHELLFLAGS  Any invocation of $SHELL will be like:
                 "$SHELL" "$SHELLFLAGS" "$*";

     SENDMAIL    If you're  not  using  the  _f_o_r_w_a_r_d_i_n_g  facility
                 don't  worry  about  this one.  It specifies the
                 program being called to forward any mail.
                 It gets invoked as: "$SENDMAIL" "$@";

     NORESRETRY  Number of retries that are to  be  made  if  any
                 `process table full', `file table full', `out of
                 memory' or `out  of  swap  space'  error  should
                 occur.   If  this number is negative, then proc-
                 mail will retry indefinitely; if not  specified,
                 it  defaults  to  two  times.  The retries occur
                 with  a  $SUSPEND  second  interval.   The  idea
                 behind  this is, that if the _s_w_a_p _s_p_a_c_e has been
                 exhausted or the _p_r_o_c_e_s_s _t_a_b_l_e is full,  usually
                 several  other  programs will either detect this
                 and abort or  crash  8-),  and  thereby  freeing
                 valuable _r_e_s_o_u_r_c_e_s for procmail.

     SUSPEND     Number of seconds that procmail will pause if it
                 has to wait for something that is currently una-
                 vailable (memory, fork, etc.); if not specified,
                 it  will  default  to +DEFsuspend+ seconds.  See
                 also: LOCKSLEEP.

     LINEBUF     Length of the internal line buffers,  cannot  be
                 set  smaller  than +MINlinebuf+.  All lines read
                 from the rcfile (_n_o_t the mail itself, which  can
                 have  arbitrary  line  lengths,  or  could  be a
                 binary file for that matter) should  not  exceed
                 $LINEBUF  characters before and after expansion.
                 If not specified, it defaults to +DEFlinebuf+.











BuGless              Last change: 1992/01/31                    4






PROCMAIL(1)              USER COMMANDS                PROCMAIL(1)



     DELIVERED   If set (to a dummy value) procmail will  pretend
                 (to the mail agent) the mail has been delivered.
                 If mail cannot be delivered after  meeting  this
                 assignment,  the mail will be lost (i.e. it will
                 not bounce).

  Signals
     TERMINATE   Terminate prematurely and requeue the mail.

     HANGUP      Terminate prematurely and bounce the mail.

     INTERRUPT   Terminate prematurely and bounce the mail.

     QUIT        Terminate  prematurely  and  silently  lose  the
                 mail.

     ALARM       Force a timeout (see TIMEOUT).

OPTIONS
     -+VERSIONOPT+
          Procmail will print its version number and exit.

     -+PRESERVOPT+
          Preserve any old environment.  Normally procmail clears
          the environment upon startup. However, in any case: any
          default values will override any  preexisting  environ-
          ment  variables,  i.e. procmail will not pay any atten-
          tion to any predefined environment variables,  it  will
          happily overwrite them with his own defaults.

     -+TEMPFAILOPT+
          Make procmail fail  softly,  i.e.  if  procmail  cannot
          deliver  the  mail to any of the destinations you gave,
          the mail will not bounce, but will return to the  mail-
          queue.   Another  delivery-attempt will be made at some
          time in the future.

     -+DELIVEROPT+ _r_e_c_i_p_i_e_n_t
          This turns on explicit delivery mode, delivery will  be
          to  the local user _r_e_c_i_p_i_e_n_t.  This, of course, only is
          possible if procmail has root priviliges.  For security
          reasons  procmail  will refuse to accept more arguments
          when using this  mode,  procmail  will  setuid  to  the
          intended  recipient  and will _o_n_l_y read the recipient's
          +PROCMAILRC+ file (if present, if not, delivery is like
          ordinary mail).









BuGless              Last change: 1992/01/31                    5






PROCMAIL(1)              USER COMMANDS                PROCMAIL(1)



ARGUMENTS
     Any  arguments  containing  an  '='  are  considered  to  be
     environment variable assignments, they will _a_l_l be evaluated
     after the default values have been assigned and  before  the
     first rcfile is opened.

     Any other arguments are presumed to be rcfile  paths  (abso-
     lute  or  relative  to  $HOME); procmail will start with the
     first one it finds on the command line.  The following  ones
     will  only be parsed if the preceding ones have a not match-
     ing HOST-directive entry, or in case they should not exist.

     If   no   rcfiles    are    specified,    it    looks    for
     $HOME/+PROCMAILRC+.   If not even that can be found process-
     ing will continue according to the default settings  of  the
     environment  variables and the ones specified on the command
     line.

RCFILE FORMAT
     Environment variable assignments and recipes can  be  freely
     intermixed  in the rcfile. If any environment variable has a
     special meaning to procmail, it will  be  used  appropiately
     the  moment  it  is parsed. (i.e. you can change the current
     directory whenever you want by  specifying  a  new  MAILDIR,
     switch  lockfiles  by specifying a new LOCKFILE (usually one
     won't need this particular application though),  change  the
     umask at any time, etc., the possibilities are endless :-).

     The assignments and substitutions of these environment vari-
     ables  are  handled exactly like in sh(1) (that includes all
     possible quotes and escapes),  with  the  added  bonus  that
     blanks  around  the  '='  sign  are  ignored and that, if an
     environment variable appears without a trailing '=', it will
     be removed from the environment.

  Comments
     A word beginning with # and all the following characters  up
     to a NEWLINE are ignored.

  Recipes
     A line starting with ':' marks the beginning  of  a  recipe.
     It has the following format:

     : [ _n_u_m_b_e_r ] [ _f_l_a_g_s ] [ : [ _l_o_c_a_l_l_o_c_k_f_i_l_e ] ]

     The _n_u_m_b_e_r is optional (defaults to  1)  and  specifies  the
     number  of  conditionals  following this line.  Conditionals
     are complete lines that are passed on to the internal  egrep
     literally,  except  for  leading  blanks.   If a conditional
     starts with an '!',  the  condition  is  inverted.   If  you
     really  want  the  conditional to start with an '!', precede
     the  '!'  by  a  '\'.   These  conditionals  are  completely



BuGless              Last change: 1992/01/31                    6






PROCMAIL(1)              USER COMMANDS                PROCMAIL(1)



     compatible  to the normal egrep regular expressions.  Condi-
     tionals are anded; if _n_u_m_b_e_r is zero, then the condition  is
     always true and no conditionals are expected next.

     _F_l_a_g_s can be any of the following:

     +HEAD_GREP+
          Egrep the header (default).

     +BODY_GREP+
          Egrep the body.

     +DISTINGUISH_CASE+
          Tell the internal egrep to  distinguish  between  upper
          and lower case (defaults to ignoring case).

     +ALSO_NEXT_RECIPE+
          This recipe will depend on the  last  preceding  recipe
          without  the `+ALSO_NEXT_RECIPE+' or `+ALSO_N_IF_SUCC+'
          flag.  This allows you to chain actions that depend  on
          a  common  condition.   The number of conditionals that
          are expected to follow default to none.

     +ALSO_N_IF_SUCC+
          Has the same meaning as the `+ALSO_NEXT_RECIPE+'  flag,
          but  will  depend  on  the _s_u_c_c_e_s_s_f_u_l completion of the
          immediately preceding recipe as well.

     +PASS_HEAD+
          Feed the header to the pipe (default).

     +PASS_BODY+
          Feed the body to the pipe (default).

     +FILTER+
          Consider the pipe as a filter (ignored if a file).

     +CONTINUE+
          Continue processing rcfile even if this recipe  matches
          (not needed if 'f' specified).

     +WAIT_EXIT+
          Wait for the filter or program to finish and check  its
          exitcode  (normally  ignored);  if the filter is unsuc-
          cessful, then the text will  not  have  been  filtered.
          This  flag  is  also  recommended  if you specified any
          _l_o_c_a_l_l_o_c_k_f_i_l_e on this recipe.








BuGless              Last change: 1992/01/31                    7






PROCMAIL(1)              USER COMMANDS                PROCMAIL(1)



     +IGNORE_WRITERR+
          Ignore any write errors on this  recipe  (i.e.  usually
          due to an early closed pipe).

  Local lockfile
     If you put a second ':' on the first recipe line, then proc-
     mail  will  use a _l_o_c_a_l_l_o_c_k_f_i_l_e (for this recipe only).  You
     optionally can specify the  locallockfile  to  use;  if  you
     don't  however,  procmail will use the filename specified as
     the destination (or the filename following the  first  '>>')
     and will append $LOCKEXT to it.

  Recipe destination
     The next line can start with the following characters:

     !    Forwards to all the specified mail addresses.

     |    Starts the specified program, possibly in $SHELL if any
          of the characters $SHELLMETAS are found.

     Anything else will be taken as  a  mailbox  name  (either  a
     filename or a directory, absolute or relative to the current
     directory (see $MAILDIR)).  If it is a filename  (or  nonex-
     istent), the mail will be appended to it.  If it is a direc-
     tory, the  mail  will  be  delivered  to  a  newly  created,
     guaranteed  to  be  unique,  file  named  $MSGPREFIX* in the
     specified directory.  If the directory name  ends  in  "/.",
     then  this  directory  is  presumed to be an MH folder; i.e.
     procmail will use the lowest number it finds available.

EXAMPLES
     Some example recipes are listed below:
     Sort out all mail to mailling list scuba-dive.

          :
          ^TOscuba
          scubafile

     Forward all mail from peter about compilers to william  (and
     keep a copy of it here in petcompil).

          :2 +PASS_BODY++CONTINUE+
          ^From.*peter
          ^Subject:.*compilers
          ! william@somewhere.edu
          :+ALSO_NEXT_RECIPE+
          petcompil

     Add the headers of all messages that didn't  come  from  the
     postmaster to your private header collection (for statistics
     or mail debugging); and use the lockfile  `headc.lock'.   In
     order  to  make  sure  the lockfile is not removed until the



BuGless              Last change: 1992/01/31                    8






PROCMAIL(1)              USER COMMANDS                PROCMAIL(1)



     pipe has finished, you have to specify option 'w'; otherwise
     the  lockfile  would  be  removed  as  soon  as the pipe has
     accepted the mail.

          :+PASS_HEAD++WAIT_EXIT++CONTINUE+:
          !From +(postmaster|Mailer)
          | uncompress headc.Z; cat >>headc; compress headc

CAVEATS
     If you don't explicitly tell procmail to wait (recipe option
     'w')  for  a  program to finish, it won't wait and will ter-
     minate early (not knowing if the program  returns  success).
     That  also means that any locallockfile on this recipe might
     get removed _b_e_f_o_r_e the program has terminated.

     Continued lines in a recipe that are to be executed are con-
     catenated  _b_e_f_o_r_e  being parsed, hence _a_n_y backslash-newline
     combinations in them are removed regardless.

     Don't put comments  on  the  condition  lines  (the  regular
     expressions)  in a recipe, these lines are fed to the inter-
     nal egrep _l_i_t_e_r_a_l_l_y.  (Except for  any  _l_e_a_d_i_n_g  whitespace,
     `!' or `\', it will be stripped.  Precede it by a `\' if you
     want it to be taken literally too.)

     Watch out for deadlocks when  doing  unhealthy  things  like
     forwarding  mail to your own account.  Deadlocks can be bro-
     ken by proper use of LOCKTIMEOUT.

     Any default values that procmail has  for  some  environment
     variables  will  always  override the ones that were already
     defined.  If you really want to override the  defaults,  you
     either have to put them in the rcfile or in the command line
     as arguments.

FILES
     /etc/passwd            to get the recipient's USER, HOME and
                            SHELL variable defaults

     +SYSTEM_MBOX+          system mailbox

     $HOME/+PROCMAILRC+     default rcfile

     +SYSTEM_MBOX+.lock     lockfile  for  the   system   mailbox
                            (automatically  used  if no rcfile is
                            found, not used by procmail otherwise
                            unless you explicitly tell it to)








BuGless              Last change: 1992/01/31                    9






PROCMAIL(1)              USER COMMANDS                PROCMAIL(1)



     +DEFsendmail+          default mail forwarder

     +UNIQ_PREFIX+???`hostname`
                            temporary `unique' zero-length  files
                            created by procmail

SEE ALSO
     sh(1), csh(1), mail(1), binmail(1), uucp(1C), aliases(5),
     sendmail(8), egrep(1V), lockfile(1), formail(1)

DIAGNOSTICS
     Bad substitution of "x"
                            Not a valid environment variable name
                            specified.

     Couldn't unlock "x"    Lockfile was already gone,  or  write
                            permission  to the directory were the
                            lockfile is has been denied.

     Error while writing to "x"
                            Nonexistent  subdirectory,  no  write
                            permission, pipe died or disk full.

     Exceeded LINEBUF       Buffer overflow detected, LINEBUF was
                            too small, memory might be corrupted.

     Failed forking "x"     Process table is full (and NORESRETRY
                            has been exhausted).

     Failed to execute "x"  Program not in path, or  not  execut-
                            able.

     Forced unlock denied on "x"
                            No write permission in the  directory
                            where  lockfile resides, or more than
                            one procmail trying to force  a  lock
                            at exactly the same time.

     Forcing lock on "x"    Specified lockfile  is  going  to  be
                            removed by force because of a timeout
                            (see also: LOCKTIMEOUT).

     Lock failure on "x"    Can only occur if  you  specify  some
                            real   weird   (and   illegal)  lock-
                            filenames or if  the  lockfile  could
                            not  be  created  because of insuffi-
                            cient permissions or noexistent  sub-
                            directories.







BuGless              Last change: 1992/01/31                   10






PROCMAIL(1)              USER COMMANDS                PROCMAIL(1)



     Mail bounced           Procmail hasn't been able to  deliver
                            the mail correctly.

     Mail lost              Procmail could not bounce or  requeue
                            the mail anymore.

     Mail requeued          Procmail could not deliver the  mail,
                            another delivery attempt will be done
                            some time in the future.

     Out of memory          The system is out of swap space  (and
                            NORESRETY has been exhausted).

     Processing continued   The unrecognised options on the  com-
                            mand  line are ignored, proceeding as
                            usual.

     Program failure of "x" Program that was started by  procmail
                            didn't return EX_OK (=0).

     Skipped: "x"           Couldn't do anything with "x" in  the
                            rcfile (syntax error), ignoring it.

     Terminating prematurely whilst waiting for ...
                            Procmail received a signal  while  it
                            was waiting for ...

     Timeout, terminating "x"
                            Timeout     has      occurred      on
                            program/filter "x".

     Truncating "x" and retrying lock
                            "x" does  not  seem  to  be  a  valid
                            filename or the file is not empty.

     Rescue of unfiltered data succeeded/failed
                            A  filter  returned   unsuccessfully,
                            procmail tried to get back the origi-
                            nal text.

     Unexpected EOL         Missing closing quote, or  trying  to
                            escape EOF.













BuGless              Last change: 1992/01/31                   11






PROCMAIL(1)              USER COMMANDS                PROCMAIL(1)



EXTENDED DIAGNOSTICS
     Assigning "x"          Environment variable assignment

     Executing "x"          Starting program "x"

     HOST mismatched "x"    This host was called "x",  HOST  con-
                            tained something else

     Locking "x"            Creating lockfile "x"

     Match on "x"           Conditional matched

     No match on "x"        Conditional  didn't   match,   recipe
                            skipped

     Opening "x"            Opening file "x" for appending

     Rcfile: "x"            Rcfile changed to "x"

     Unlocking "x"          Removing lockfile "x" again

WARNINGS
     You should create  a  shell  script  that  uses  lockfile(1)
     before  invoking  your  mail shell on any mailbox file other
     than the system mailbox (unless of course, your  mail  shell
     uses  the  same lockfiles (local or global) you specified in
     your rcfile).

     In the unlikely event that you absolutely need to kill proc-
     mail  before  it has finished, first try and use the regular
     kill command (i.e.  _n_o_t kill -9, see the subsection  _S_i_g_n_a_l_s
     for  suggestions),  otherwise  some  _l_o_c_k_f_i_l_e_s might not get
     removed.

     Beware when using the  -+TEMPFAILOPT+  option,  if  procmail
     repeatedly  is  unable  to  deliver the mail (e.g. due to an
     incorrect rcfile), the system mailqueue could fill up.  This
     could aggravate both the local postmaster and other users.

     +IFS_DISCARDING+

BUGS
     The only substitutions of environment variables that can  be
     handled  by  procmail itself are of the type $name, ${name},
     $$ and $-; whereas $- will be substituted by the name of the
     last folder delivered to.

     If the standard getpwnam()(3) is case  sensitive,  and  some
     users have login names with uppercase letters in them, proc-
     mail will be unable to deliver mail to them, unless  started
     with their uid.




BuGless              Last change: 1992/01/31                   12






PROCMAIL(1)              USER COMMANDS                PROCMAIL(1)



     After a lockfile  is  removed  by  force,  a  suspension  of
     $SUSPEND  seconds is taken into account, in order to prevent
     the inadvertent immediate removal of any newly created lock-
     file by another program.

     A line buffer of length $LINEBUF is used when processing the
     _r_c_f_i_l_e,  any  expansions  have  to fit within this limit; if
     they don't, behaviour is undefined.

     Procmail uses the regular TERMINATE signal to terminate  any
     runaway filter, but it does not check if the filter responds
     to that signal and it only sends it to  the  filter  itself,
     not to any of the filter's children.

     If the global lockfile has a _r_e_l_a_t_i_v_e path, and the  current
     directory  is  not  the same as when the global lockfile was
     created, then the global lockfile will  not  be  removed  if
     procmail  exits at that point (remedy: use _a_b_s_o_l_u_t_e paths to
     specify global lockfiles).

     Some braindamaged mailers want _a_l_l  lines  that  start  with
     `+FROM+'  to  be  escaped,  procmail only escapes those that
     could really be dangerous; to support  those  other  mailers
     you  should  consider  using  formail(1) as a filter for all
     your mail.

MISCELLANEOUS
     Whitespace is ignored in the rcfile,  except  on  the  lines
     that  are  fed to the internal egrep where only leading whi-
     tespace is ignored; i.e. you can indent everything.

     If the regular expression starts with `+TOkey+' it  will  be
     substituted by `+TOsubstitute+', which should catch all des-
     tination specifications.

     Any lines in the body of the message that  look  like  post-
     marks  are  prepended  with  `+ESCAP+'  (disarms bogus mail-
     headers).  The regular expression that is used to search for
     these postmarks is:
          "+FROM_EXPR+"

     Should  the  uid  procmail  is  running   under,   have   no
     corresponding  /etc/passwd  entry, then HOME will default to
     +Tmp+, USER will default to #uid.

     If +SYSTEM_MBOX+ is a bogus mailbox (i.e. does not belong to
     the  recipient,  is  unwritable,  is a symbolic link or is a
     hard link), procmail will upon startup try to rename it into
     a  file  starting  with  `+BOGUSprefix+'  and  ending  in an
     inode-sequence-code.  If this turns out  to  be  impossible,
     ORGMAIL will have _n_o initial value.




BuGless              Last change: 1992/01/31                   13






PROCMAIL(1)              USER COMMANDS                PROCMAIL(1)



     When delivering to directories (or to MH folders) you  don't
     need  to  use lockfiles to prevent several concurrently run-
     ning procmail programs from messing up.

     Delivering to MH folders is  slightly  more  time  consuming
     than  delivering to normal directories or mailboxes, because
     procmail has  to  search  for  the  first  available  number
     (instead of having the filename immediately available).

     On general failure procmail will return EX_CANTCREAT, unless
     option  -+TEMPFAILOPT+  is  specified, in which case it will
     return EX_TEMPFAIL.

     Procmail performs the locking in an NFS-secure way.

NOTES
     For _r_e_a_l_l_y complicated processing you can even consider cal-
     ling procmail recursively.

     If procmail is _n_o_t installed globally as  the  default  mail
     delivery  agent (ask your system administrator), you have to
     make sure it is invoked when your  mail  arrives.   In  this
     case  your  $HOME/+DOT_FORWARD+  (beware, it has to be world
     readable) file should contain (include the single and double
     quotes, _m_u_s_t be an _a_b_s_o_l_u_t_e path):

     +FW_content+

  A sample small +PROCMAILRC+:
     PATH=/bin:/usr/bin:/usr/local/bin
     MAILDIR=$HOME/Mail      #you'd better make sure it exists
     DEFAULT=$MAILDIR/mbox
     LOGFILE=$MAILDIR/from
     LOCKFILE=$HOME/.lockmail
     :
     ^From.*berg
     from_me
     :
     ^Subject:.*Flame
     /dev/null

AUTHOR
     Stephen R. van den Berg at RWTH-Aachen, Germany
          berg@messua.informatik.rwth-aachen.de
          berg@physik.tu-muenchen.de










BuGless              Last change: 1992/01/31                   14



