procmail(1)


NAME

   procmail - autonomous mail processor

SYNOPSIS

   procmail [-ptoY] [-f fromwhom]
        [parameter=value | rcfile] ...
   procmail [-toY] [-f fromwhom] [-a argument] ...
        -d recipient ...
   procmail [-ptY] -m [parameter=value] ...  rcfile
        [argument] ...
   procmail -v

DESCRIPTION

   For a quick start, see NOTES at the end.

   Procmail  should  be  invoked  automatically  over  the  .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
   $HOME/.procmailrc.  According to the processing recipes in  this  file,
   the  mail  message  that  just  arrived gets distributed into the right
   folder (and more).  If no rcfile is found, or processing of the  rcfile
   falls  off  the end, procmail will store the mail in the default system
   mailbox.

   If no rcfiles and no -p  have  been  specified  on  the  command  line,
   procmail  will,  prior to reading $HOME/.procmailrc, interpret commands
   from /etc/procmailrc (if present).  Care must be  taken  when  creating
   /etc/procmailrc,  because, if circumstances permit, it will be executed
   with  root  privileges  (contrary  to  the  $HOME/.procmailrc  file  of
   course).

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

   Procmail  can  also  be  used  as  a general purpose mail filter, i.e.,
   provisions have been made to enable procmail to be invoked in a special
   sendmail rule.

   The rcfile format is described in detail in the procmailrc(5) man page.

   The   weighted   scoring  technique  is  described  in  detail  in  the
   procmailsc(5) man page.

   Examples for rcfile recipes can be looked up in the  procmailex(5)  man
   page.

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

   USR1        Equivalent to a VERBOSE=off.

   USR2        Equivalent to a VERBOSE=on.

OPTIONS

   -v   Procmail  will  print its version number, display its compile time
        configuration and exit.

   -p   Preserve  any  old  environment.   Normally  procmail  clears  the
        environment upon startup, except for the value of TZ.  However, in
        any  case:  any  default  values  will  override  any  preexisting
        environment  variables,  i.e., procmail will not pay any attention
        to any predefined environment variables, it will happily overwrite
        them with its own defaults.  For the list of environment variables
        that procmail will preset see the procmailrc(5) man page.  If both
        -p  and -m are specified, the list of preset environment variables
        shrinks to just: LOGNAME, HOME, SHELL, ORGMAIL and MAILDIR.

   -t   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  mailqueue.   Another  delivery-
        attempt will be made at some time in the future.

   -f fromwhom
        Causes  procmail  to  regenerate  the  leading  `From  ' line with
        fromwhom as the sender (instead of -f one could use the  alternate
        and  obsolete  -r).   If fromwhom consists merely of a single `-',
        then procmail will only update the timestamp on the `From  '  line
        (if present, if not, it will generate a new one).

   -o   Instead  of  allowing  anyone  to  generate  `From ' lines, simply
        override the fakes.

   -Y   Assume traditional Berkeley mailbox format,  ignore  any  Content-
        Length: fields.

   -a argument
        This  will  set  $1  to  be equal to argument.  Each succeeding -a
        argument will set the next number variable ($2, $3, etc).  It  can
        be  used  to  pass  meta  information  along to procmail.  This is
        typically done by passing  along  the  $@x  information  from  the
        sendmail mailer rule.

   -d recipient ...
        This  turns  on  explicit  delivery  mode, delivery will be to the
        local user recipient.   This,  of  course,  only  is  possible  if
        procmail  has  root  privileges (or if procmail is already running
        with the recipient's euid and egid).  Procmail will setuid to  the
        intended recipients and delivers the mail as if it were invoked by
        the recipient with no arguments (i.e.,  if  no  rcfile  is  found,
        delivery is like ordinary mail).  This option is incompatible with
        -p.

   -m   Turns procmail into a general purpose mail filter.  In  this  mode
        one  rcfile  must  be  specified  on  the command line.  After the
        rcfile, procmail will accept an unlimited number of arguments.  If
        the  rcfile  is  an  absolute path starting with /etc/procmailrcs/
        without backward references (i.e. the parent directory  cannot  be
        mentioned)  procmail  will,  only  if  no  security violations are
        found, take on the  identity  of  the  owner  of  the  rcfile  (or
        symbolic link).  For some advanced usage of this option you should
        look in the EXAMPLES section below.

ARGUMENTS

   Any arguments containing  an  '='  are  considered  to  be  environment
   variable  assignments,  they  will  all  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  (either  absolute,
   or if they start with `./' relative to the current directory; any other
   relative path is relative to $HOME,  unless  the  -m  option  has  been
   given,  in  which  case  all relative paths are relative to the current
   directory); 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 matching 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,  processing  will  continue  according  to  the
   default settings of the environment variables and the ones specified on
   the command line.

EXAMPLES

   Examples for rcfile recipes can be looked up in the  procmailex(5)  man
   page.  A small sample rcfile can be found in the NOTES section below.

   Skip  the  rest  of  this  EXAMPLES  section  unless  you  are a system
   administrator who is vaguely familiar with sendmail.cf syntax.

   The -m option is typically used when procmail is called from  within  a
   rule  in  the  sendmail.cf  file.  In order to be able to do this it is
   convenient to create an extra `procmail'  mailer  in  your  sendmail.cf
   file  (in  addition  to the perhaps already present `local' mailer that
   starts up procmail).  To create such a `procmail'  mailer  I'd  suggest
   something like:

          Mprocmail, P=/usr/bin/procmail, F=mSDFMhun, S=11, R=21,
                  A=procmail -m $h $g $u

   This  enables  you  to  use  rules  like  the following (most likely in
   ruleset 0) to filter mail through the procmail mailer (please note  the
   leading  tab  to  continue  the  rule,  and  the  tab  to  separate the
   comments):

          R$*<@some.where>$*
                  $#procmail $@/etc/procmailrcs/some.rc $:$1@some.where.procmail$2
          R$*<@$*.procmail>$*
                  $1<@$2>$3       Already filtered, map back

   And /etc/procmailrcs/some.rc could be as simple as:

          SENDER = "<$1>"                 # fix for empty sender addresses
          SHIFT = 1                       # remove it from $@

          :0                              # sink all junk mail
          * ^Subject:.*junk
          /dev/null

          :0 w                            # pass along all other mail
          ! -oi -f "$SENDER" "$@"

   Do watch out when sending mail from within the /etc/procmailrcs/some.rc
   file,  if  you send mail to addresses which match the first rule again,
   you could be creating an endless mail loop.

FILES

   /etc/passwd            to set the recipient's LOGNAME, HOME  and  SHELL
                          variable defaults

   /var/mail/$LOGNAME     system  mailbox; both the system mailbox and the
                          immediate directory it is  in  will  be  created
                          every time procmail starts and either one is not
                          present

   /etc/procmailrc        initial global rcfile

   /etc/procmailrcs/      special privileges path for rcfiles

   $HOME/.procmailrc      default rcfile

   /var/mail/$LOGNAME.lock
                          lockfile   for   the   system    mailbox    (not
                          automatically  used by procmail, unless $DEFAULT
                          equals  /var/mail/$LOGNAME   and   procmail   is
                          delivering to $DEFAULT)

   /usr/sbin/sendmail     default mail forwarder

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

SEE ALSO

   procmailrc(5), procmailsc(5), procmailex(5), sh(1), csh(1), mail(1),
   mailx(1), uucp(1), aliases(5), sendmail(8), egrep(1), grep(1), biff(1),
   comsat(8), lockfile(1), formail(1), cron(1)

DIAGNOSTICS

   Autoforwarding mailbox found
                          The system mailbox had its suid or sgid bit set,
                          procmail terminates with EX_NOUSER assuming that
                          this mailbox must not be delivered to.

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

   Closing brace unexpected
                          There  was  no   corresponding   opening   brace
                          (nesting block).

   Conflicting options    Not all option combinations are useful

   Conflicting x suppressed
                          Flag x is not compatible with some other flag on
                          this recipe.

   Couldn't create "x"    The  system  mailbox  was  missing   and   could
                          not/will not be created.

   Couldn't create maildir part "x"
                          The  maildir  folder  "x" is missing one or more
                          required subdirectories and procmail  could  not
                          create them.

   Couldn't create or rename temp file "x"
                          An   error   occurred   in   the   mechanics  of
                          delivering to the directory folder "x".

   Couldn't determine implicit lockfile from "x"
                          There were no  `>>'  redirectors  to  be  found,
                          using simply `$LOCKEXT' as locallockfile.

   Couldn't read "x"      Procmail  was unable to open an rcfile or it was
                          not a regular file, or procmail couldn't open an
                          MH directory to find the highest numbered file.

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

   Deadlock attempted on "x"
                          The  locallockfile  specified  on this recipe is
                          equal to a still active $LOCKFILE.

   Denying special privileges for "x"
                          Procmail will not  take  on  the  identity  that
                          comes   with   the  rcfile  because  a  security
                          violation  was  found  (e.g.   -p  or   variable
                          assignments on the command line) or procmail had
                          insufficient privileges to do so.

   Descriptor "x" was not open
                          As procmail was started, stdin, stdout or stderr
                          was   not  connected  (possibly  an  attempt  to
                          subvert security)

   Enforcing stricter permissions on "x"
                          The system mailbox of the recipient was found to
                          be unsecured, procmail secured it.

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

   Exceeded LINEBUF       Buffer overflow detected, LINEBUF was too small,
                          PROCMAIL_OVERFLOW has been set.

   MAILDIR is not an absolute path

   MAILDIR path too long

   ORGMAIL is not an absolute path

   ORGMAIL path too long

   default rcfile is not an absolute path

   default rcfile path too long
                          The  specified  item's full path, when expanded,
                          was longer than LINEBUF or didn't start  with  a
                          file separator.

   Excessive output quenched from "x"
                          The  program  or filter "x" tried to produce too
                          much output for the current  LINEBUF,  the  rest
                          was  discarded  and  PROCMAIL_OVERFLOW  has been
                          set.

   Extraneous x ignored   The action line or other flags  on  this  recipe
                          makes flag x meaningless.

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

   Failed to execute "x"  Program not in path, or not executable.

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

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

   Incomplete recipe      The start of a recipe was found, but it stranded
                          in an EOF.

   Insufficient privileges
                          Procmail either needs root privileges,  or  must
                          have  the  right  (e)uid  and  (e)gid  to run in
                          delivery mode.  The mail will bounce.

   Invalid regexp "x"     The regular expression "x" contains errors (most
                          likely some missing or extraneous parens).

   Kernel-lock failed     While trying to use the kernel-supported locking
                          calls, one of them failed (usually indicates  an
                          OS  error),  procmail  ignores  this  error  and
                          proceeds.

   Kernel-unlock failed   See above.

   Lock failure on "x"    Can only occur if you specify  some  real  weird
                          (and  illegal)  lockfilenames or if the lockfile
                          could not be  created  because  of  insufficient
                          permissions or nonexistent subdirectories.

   Lost "x"               Procmail  tried  to  clone  itself but could not
                          find back rcfile "x" (it either got  removed  or
                          it was a relative path and you changed directory
                          since procmail opened it last time).

   Missing action         The current recipe was found to be incomplete.

   Missing closing brace  A nesting block was started, but never finished.

   Missing name           The -f option needs an extra argument.

   Missing argument       You specified  the  -a  option  but  forgot  the
                          argument.

   Missing rcfile         You  specified  the  -m option, procmail expects
                          the name of an rcfile as argument.

   Missing recipient      You specified the -d option or  called  procmail
                          under  a  different name, it expects one or more
                          recipients as arguments.

   No space left to finish writing "x"
                          The filesystem  containing  "x"  does  not  have
                          enough  free  space  to  permit  delivery of the
                          message to the file.

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

   Processing continued   The unrecognised options on the command line are
                          ignored, proceeding as usual.

   Program failure (nnn) of "x"
                          Program that was started  by  procmail  returned
                          nnn  instead  of  EXIT_SUCCESS  (=0);  if nnn is
                          negative, then this is the  signal  the  program
                          died on.

   Quota exceeded while writing "x"
                          The  filesize  quota  for  the  recipient on the
                          filesystem  containing  "x"  does   not   permit
                          delivering the message to the file.

   Renaming bogus "x" into "x"
                          The system mailbox of the recipient was found to
                          be bogus, procmail performed evasive actions.

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

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

   Suspicious rcfile "x"  The owner of the rcfile was not the recipient or
                          root,  the  file  was  world  writable,  or  the
                          directory that contained it was world  writable,
                          or     this     was     the    default    rcfile
                          ($HOME/.procmailrc)  and  either  it  was  group
                          writable  or the directory that contained it was
                          group writable (the rcfile was not used).

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

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

   Timeout, was waiting for "x"
                          Timeout  has occurred on program, filter or file
                          "x".  If it was a program  or  filter,  then  it
                          didn't seem to be running anymore.

   Truncated file to former size
                          The file could not be delivered to successfully,
                          so the file was truncated to its former size.

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

   Unable to treat as directory "x"
                          Either  the suffix on "x" would indicate that it
                          should be an MH or maildir  folder,  or  it  was
                          listed  as  an second folder into which to link,
                          but it already exists and is not a directory.

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

   Unknown user "x"       The  specified  recipient  does   not   have   a
                          corresponding uid.

EXTENDED DIAGNOSTICS

   Extended  diagnostics  can  be  turned  on  and off through setting the
   VERBOSE variable.

   [pid] time & date      Procmail's  pid  and  a  timestamp.    Generated
                          whenever procmail logs a diagnostic and at least
                          a second has elapsed since the last timestamp.

   Acquiring kernel-lock  Procmail  now  tries  to  kernel-lock  the  most
                          recently opened file (descriptor).

   Assigning "x"          Environment variable assignment.

   Assuming identity of the recipient, VERBOSE=off
                          Dropping  all  privileges  (if  any), implicitly
                          turns off extended diagnostics.

   Bypassed locking "x"   The mail spool directory was not  accessible  to
                          procmail, it relied solely on kernel locks.

   Executing "x"          Starting  program  "x".   If  it  is  started by
                          procmail  directly  (without   an   intermediate
                          shell),  procmail  will  show where it separated
                          the arguments by inserting commas.

   HOST mismatched "x"    This  host  was  called  "x",   HOST   contained
                          something else.

   Locking "x"            Creating lockfile "x".

   Linking to "x"         Creating a hardlink between directory folders.

   Match on "x"           Condition matched.

   Matched "x"            Assigned "x" to MATCH.

   No match on "x"        Condition didn't match, recipe skipped.

   Non-zero exitcode (nnn) by "x"
                          Program  that  was  started  by  procmail  as  a
                          condition or as the action of a recipe with  the
                          `W'  flag  returned  nnn instead of EXIT_SUCCESS
                          (=0); the usage indicates that this  is  not  an
                          entirely unexpected condition.

   Notified comsat: "$LOGNAME@offset:file"
                          Sent  comsat/biff a notice that mail arrived for
                          user $LOGNAME at `offset' in `file'.

   Opening "x"            Opening file "x" for appending.

   Rcfile: "x"            Rcfile changed to "x".

   Reiterating kernel-lock
                          While attempting several locking methods, one of
                          these  failed.   Procmail  will  reiterate until
                          they all succeed in rapid succession.

   Score: added newtotal "x"
                          This  condition  scored  `added'  points,  which
                          resulted in a `newtotal' score.

   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 procmail  before
   it  has finished, first try and use the regular kill command (i.e., not
   kill -9, see the subsection Signals for  suggestions),  otherwise  some
   lockfiles might not get removed.

   Beware  when  using  the -t 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.

   The /etc/procmailrc file might be executed with root privileges, so  be
   very careful of what you put in it.  SHELL will be equal to that of the
   current recipient, so if procmail has to invoke the shell, you'd better
   set it to some safe value first.  See also: DROPPRIVS.

   Keep   in   mind   that   if   chown(1)   is   permitted  on  files  in
   /etc/procmailrcs/, that they can be chowned to root (or anyone else) by
   their  current  owners.  For maximum security, make sure this directory
   is executable to root only.

   Procmail is not the proper tool for  sharing  one  mailbox  among  many
   users,  such  as  when  you  have  one POP account for all mail to your
   domain. It can be done if you manage to configure your MTA to add  some
   headers  with the envelope recipient data in order to tell Procmail who
   a message is for, but this is  usually  not  the  right  thing  to  do.
   Perhaps  you  want  to  investigate  if  your  MTA offers `virtual user
   tables', or check out the `multidrop' facility of Fetchmail.

BUGS

   After removing a lockfile by force,  procmail  waits  $SUSPEND  seconds
   before  creating a new lockfile so that another process that decides to
   remove the stale lockfile will not remove the  newly  created  lock  by
   mistake.

   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.

   A continued Content-Length: field is not handled correctly.

   The embedded newlines in a continued  header  should  be  skipped  when
   matching instead of being treated as a single space as they are now.

MISCELLANEOUS

   If there is an existing Content-Length: field in the header of the mail
   and the -Y option is not specified, procmail will  trim  the  field  to
   report the correct size.  Procmail does not change the fieldwidth.

   If  there  is  no  Content-Length:  field  or  the  -Y  option has been
   specified and procmail appends to regular mailfolders, any lines in the
   body  of  the  message  that look like postmarks are prepended with `>'
   (disarms bogus mailheaders).  The regular expression that  is  used  to
   search for these postmarks is:
          `\nFrom '

   If  the  destination  name  used  in  explicit  delivery mode is not in
   /etc/passwd, procmail will proceed as if explicit delivery mode was not
   in  effect.   If  not  in  explicit  delivery  mode  and should the uid
   procmail is running under, have  no  corresponding  /etc/passwd  entry,
   then  HOME  will default to /, LOGNAME will default to #uid, SHELL will
   default to /bin/sh, and ORGMAIL will default to /tmp/dead.letter.

   When in explicit delivery mode, procmail will generate a leading  `From
   '  line  if  none  is present.  If one is already present procmail will
   leave it intact.  If procmail is not invoked with one of the  following
   user  or  group  ids :  root,  daemon, uucp, mail, x400, network, list,
   slist, lists or news, but still has to generate or accept a new `From '
   line,  it will generate an additional `>From ' line to help distinguish
   fake mails.

   For security reasons procmail will  only  use  an  absolute  or  $HOME-
   relative  rcfile  if  it  is  owned by the recipient or root, not world
   writable, and the directory it is contained in is not  world  writable.
   The  $HOME/.procmailrc  file has the additional constraint of not being
   group-writable or in a group-writable directory.

   If /var/mail/$LOGNAME 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
   `BOGUS.$LOGNAME.'  and ending in an inode-sequence-code.  If this turns
   out to be impossible, ORGMAIL will have no  initial  value,  and  hence
   will inhibit delivery without a proper rcfile.

   If /var/mail/$LOGNAME already is a valid mailbox, but has got too loose
   permissions on it, procmail will correct  this.   To  prevent  procmail
   from doing this make sure the u+x bit is set.

   When  delivering  to  directories,  MH folders, or maildir folders, you
   don't need to use lockfiles to  prevent  several  concurrently  running
   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  next available number (instead of having the filename
   immediately available).

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

   To  make  `egrepping' of headers more consistent, procmail concatenates
   all continued header fields; but only internally.  When delivering  the
   mail, line breaks will appear as before.

   If  procmail is called under a name not starting with `procmail' (e.g.,
   if it is linked to another name and invoked as such), it  comes  up  in
   explicit  delivery  mode,  and expects the recipients' names as command
   line arguments (as if -d had been specified).

   Comsat/biff notifications are done using udp.  They are sent  off  once
   when  procmail  generates  the regular logfile entry.  The notification
   messages have the following extended format (or as close as you can get
   when final delivery was not to a file):
          $LOGNAME@offset_of_message_in_mailbox:absolute_path_to_mailbox

   Whenever  procmail  itself  opens a file to deliver to, it consistently
   uses the following kernel locking strategies: fcntl(2).

   Procmail is NFS-resistant and eight-bit clean.

NOTES

   Calling up procmail with the -h or -? options will cause it to  display
   a command-line help and recipe flag quick-reference page.

   There exists an excellent newbie FAQ about mailfilters (and procmail in
   particular); it is maintained by Nancy McGough <nancym@ii.com> and  can
   be  obtained  by  sending  a  mail to mail-server@rtfm.mit.edu with the
   following in the body:
          send usenet/news.answers/mail/filtering-faq

   If procmail is not 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/.forward
   (beware,  it  has  to  be  world readable) file should contain the line
   below.  Be sure to include the single and double quotes, and unless you
   know  your site to be running smrsh (the SendMail Restricted SHell), it
   must be an absolute path.

   "|exec /usr/bin/procmail"

   Some mailers (notably exim) do not currently accept the  above  syntax.
   In such case use this instead:

   |/usr/bin/procmail

   Procmail  can  also  be invoked to postprocess an already filled system
   mailbox.  This can be useful if you  don't  want  to  or  can't  use  a
   $HOME/.forward   file   (in  which  case  the  following  script  could
   periodically be called from  within  cron(1),  or  whenever  you  start
   reading mail):

          #!/bin/sh

          ORGMAIL=/var/mail/$LOGNAME

          if cd $HOME &&
           test -s $ORGMAIL &&
           lockfile -r0 -l1024 .newmail.lock 2>/dev/null
          then
            trap "rm -f .newmail.lock" 1 2 3 13 15
            umask 077
            lockfile -l1024 -ml
            cat $ORGMAIL >>.newmail &&
             cat /dev/null >$ORGMAIL
            lockfile -mu
            formail -s procmail <.newmail &&
             rm -f .newmail
            rm -f .newmail.lock
          fi
          exit 0

   A sample small $HOME/.procmailrc:
   PATH=/usr/local/bin:/usr/bin:/bin
   MAILDIR=$HOME/Mail      #you'd better make sure it exists
   DEFAULT=$MAILDIR/mbox   #completely optional
   LOGFILE=$MAILDIR/from   #recommended

   :0:
   * ^From.*berg
   from_me

   :0
   * ^Subject:.*Flame
   /dev/null

   Other examples for rcfile recipes can be looked up in the procmailex(5)
   man page.

SOURCE

   This program is part of the procmail mail-processing-package (v3.23pre)
   available    at   http://www.procmail.org/   or   ftp.procmail.org   in
   pub/procmail/.

MAILINGLIST

   There exists a mailinglist for questions relating to any program in the
   procmail package:
          <procmail-users@procmail.org>
                 for submitting questions/answers.
          <procmail-users-request@procmail.org>
                 for subscription requests.

   If  you  would  like  to  stay informed about new versions and official
   patches send a subscription request to
          procmail-announce-request@procmail.org
   (this is a readonly list).

AUTHORS

   Stephen R. van den Berg
          <srb@cuci.nl>
   Philip A. Guenther
          <guenther@sendmail.com>





Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.





Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.


Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.





Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.


Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.





Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.


Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.