1PROCMAIL(1)                 General Commands Manual                PROCMAIL(1)
2
3
4

NAME

6       procmail - autonomous mail processor
7

SYNOPSIS

9       procmail [-ptoY] [-f fromwhom]
10            [parameter=value | rcfile] ...
11       procmail [-toY] [-f fromwhom] [-a argument] ...
12            -d recipient ...
13       procmail [-ptY] -m [parameter=value] ...  rcfile
14            [argument] ...
15       procmail [-toY] [-a  argument] -z
16       procmail -v
17

DESCRIPTION

19       For a quick start, see NOTES at the end.
20
21       Procmail  should be invoked automatically over the .forward file mecha‐
22       nism as soon as mail arrives.  Alternatively, when installed by a  sys‐
23       tem administrator (and in the standard Red Hat Linux configuration), it
24       can be invoked from within the mailer immediately.   When  invoked,  it
25       first sets some environment variables to default values, reads the mail
26       message from stdin until an EOF, separates the body  from  the  header,
27       and  then,  if no command line arguments are present, it starts to look
28       for a  file  named  $HOME/.procmailrc.   According  to  the  processing
29       recipes  in this file, the mail message that just arrived gets distrib‐
30       uted into the right folder (and more).  If no rcfile is found, or  pro‐
31       cessing  of  the rcfile falls off the end, procmail will store the mail
32       in the default system mailbox.
33
34       If no rcfiles and no -p have been specified on the command line,  proc‐
35       mail  will, prior to reading $HOME/.procmailrc, interpret commands from
36       /etc/procmailrc  (if  present).   Care  must  be  taken  when  creating
37       /etc/procmailrc,  because, if circumstances permit, it will be executed
38       with  root  privileges  (contrary  to  the  $HOME/.procmailrc  file  of
39       course).
40
41       If  running suid root or with root privileges, procmail will be able to
42       perform as a functionally enhanced, backwards compatible mail  delivery
43       agent.
44
45       Procmail  can also be used as a general purpose mail filter, i.e., pro‐
46       visions have been made to enable procmail to be invoked  in  a  special
47       sendmail rule.
48
49       The rcfile format is described in detail in the procmailrc(5) man page.
50
51       The  weighted  scoring  technique  is  described in detail in the proc‐
52       mailsc(5) man page.
53
54       Examples for rcfile recipes can be looked up in the  procmailex(5)  man
55       page.
56
57   Signals
58       TERMINATE   Terminate prematurely and requeue the mail.
59
60       HANGUP      Terminate prematurely and bounce the mail.
61
62       INTERRUPT   Terminate prematurely and bounce the mail.
63
64       QUIT        Terminate prematurely and silently lose the mail.
65
66       ALARM       Force a timeout (see TIMEOUT).
67
68       USR1        Equivalent to a VERBOSE=off.
69
70       USR2        Equivalent to a VERBOSE=on.
71

OPTIONS

73       -v   Procmail  will  print its version number, display its compile time
74            configuration and exit.
75
76       -p   Preserve any old environment.  Normally procmail clears the  envi‐
77            ronment upon startup, except for the value of TZ.  However, in any
78            case: any default values will override any preexisting environment
79            variables, i.e., procmail will not pay any attention to any prede‐
80            fined environment variables, it will happily overwrite  them  with
81            its  own  defaults.   For  the  list of environment variables that
82            procmail will preset see the procmailrc(5) man page.  If  both  -p
83            and  -m  are  specified,  the list of preset environment variables
84            shrinks to just: LOGNAME, HOME, SHELL, ORGMAIL and MAILDIR.
85
86       -t   Make procmail fail softly, i.e., if procmail  cannot  deliver  the
87            mail  to  any  of  the  destinations  you  gave, the mail will not
88            bounce, but will  return  to  the  mailqueue.   Another  delivery-
89            attempt will be made at some time in the future.
90
91       -f fromwhom
92            Causes  procmail  to  regenerate  the  leading  `From  ' line with
93            fromwhom as the sender (instead of -f one could use the  alternate
94            and  obsolete  -r).   If fromwhom consists merely of a single `-',
95            then procmail will only update the timestamp on the `From  '  line
96            (if present, if not, it will generate a new one).
97
98       -o   Instead of allowing anyone to generate `From ' lines, simply over‐
99            ride the fakes.
100
101       -Y   Assume traditional Berkeley mailbox format,  ignore  any  Content-
102            Length: fields.
103
104       -a argument
105            This  will  set  $1  to  be equal to argument.  Each succeeding -a
106            argument will set the next number variable ($2, $3, etc).  It  can
107            be used to pass meta information along to procmail.  This is typi‐
108            cally done by passing along the $@x information from the  sendmail
109            mailer rule.
110
111       -d recipient ...
112            This  turns  on  explicit  delivery  mode, delivery will be to the
113            local user recipient.  This, of course, only is possible if  proc‐
114            mail  has  root privileges (or if procmail is already running with
115            the recipient's euid and  egid).   Procmail  will  setuid  to  the
116            intended recipients and delivers the mail as if it were invoked by
117            the recipient with no arguments (i.e.,  if  no  rcfile  is  found,
118            delivery is like ordinary mail).  This option is incompatible with
119            -p.
120
121       -m   Turns procmail into a general purpose mail filter.  In  this  mode
122            one  rcfile  must  be  specified  on  the command line.  After the
123            rcfile, procmail will accept an unlimited number of arguments.  If
124            the  rcfile  is  an  absolute path starting with /etc/procmailrcs/
125            without backward references (i.e. the parent directory  cannot  be
126            mentioned)  procmail  will,  only  if  no  security violations are
127            found, take on the identity of the owner of the  rcfile  (or  sym‐
128            bolic  link).   For  some advanced usage of this option you should
129            look in the EXAMPLES section below.
130
131       -z   This turns on LMTP mode, wherein procmail acts as an RFC2033  LMTP
132            server.   Delivery  takes  place in the same  manner and under the
133            same restrictions as the delivery mode  enabled   with  -d.   This
134            option is incompatible with -p and -f.
135
136

ARGUMENTS

138       Any  arguments containing an '=' are considered to be environment vari‐
139       able assignments, they will all be evaluated after the  default  values
140       have been assigned and before the first rcfile is opened.
141
142       Any  other  arguments are presumed to be rcfile paths (either absolute,
143       or if they start with `./' relative to the current directory; any other
144       relative  path  is  relative  to  $HOME,  unless the -m option has been
145       given, in which case all relative paths are  relative  to  the  current
146       directory); procmail will start with the first one it finds on the com‐
147       mand line.  The following ones will only be  parsed  if  the  preceding
148       ones  have  a not matching HOST-directive entry, or in case they should
149       not exist.
150
151       If no rcfiles are specified, it looks for  $HOME/.procmailrc.   If  not
152       even  that  can  be  found,  processing  will continue according to the
153       default settings of the environment variables and the ones specified on
154       the command line.
155

EXAMPLES

157       Examples  for  rcfile recipes can be looked up in the procmailex(5) man
158       page.  A small sample rcfile can be found in the NOTES section below.
159
160       Skip the rest of this EXAMPLES section unless you are a system adminis‐
161       trator who is vaguely familiar with sendmail.cf syntax.
162
163       The  -m  option is typically used when procmail is called from within a
164       rule in the sendmail.cf file.  In order to be able to  do  this  it  is
165       convenient  to  create  an  extra `procmail' mailer in your sendmail.cf
166       file (in addition to the perhaps already present  `local'  mailer  that
167       starts  up  procmail).   To create such a `procmail' mailer I'd suggest
168       something like:
169
170              Mprocmail, P=/usr/bin/procmail, F=mSDFMhun, S=11, R=21,
171                      A=procmail -m $h $g $u
172
173       This enables you to use rules like the following (most likely in  rule‐
174       set  0)  to  filter  mail  through the procmail mailer (please note the
175       leading tab to continue the rule, and the  tab  to  separate  the  com‐
176       ments):
177
178              R$*<@some.where>$*
179                      $#procmail $@/etc/procmailrcs/some.rc $:$1@some.where.procmail$2
180              R$*<@$*.procmail>$*
181                      $1<@$2>$3       Already filtered, map back
182
183       And /etc/procmailrcs/some.rc could be as simple as:
184
185              SENDER = "<$1>"                 # fix for empty sender addresses
186              SHIFT = 1                       # remove it from $@
187
188              :0                              # sink all junk mail
189              * ^Subject:.*junk
190              /dev/null
191
192              :0 w                            # pass along all other mail
193              ! -oi -f "$SENDER" "$@"
194
195       Do watch out when sending mail from within the /etc/procmailrcs/some.rc
196       file, if you send mail to addresses which match the first  rule  again,
197       you could be creating an endless mail loop.
198

FILES

200       /etc/passwd            to  set  the recipient's LOGNAME, HOME and SHELL
201                              variable defaults
202
203       /var/spool/mail/$LOGNAME
204                              system mailbox; both the system mailbox and  the
205                              immediate  directory  it  is  in will be created
206                              every time procmail starts and either one is not
207                              present
208
209       /etc/procmailrc        initial global rcfile
210
211       /etc/procmailrcs/      special privileges path for rcfiles
212
213       $HOME/.procmailrc      default rcfile
214
215       /var/spool/mail/$LOGNAME.lock
216                              lockfile  for  the system mailbox (not automati‐
217                              cally used by procmail, unless  $DEFAULT  equals
218                              /var/spool/mail/$LOGNAME  and procmail is deliv‐
219                              ering to $DEFAULT)
220
221       /usr/sbin/sendmail     default mail forwarder
222
223       _????`hostname`        temporary `unique' zero-length files created  by
224                              procmail
225

SEE ALSO

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

DIAGNOSTICS

232       Autoforwarding mailbox found
233                              The system mailbox had its suid or sgid bit set,
234                              procmail terminates with EX_NOUSER assuming that
235                              this mailbox must not be delivered to.
236
237       Bad substitution of "x"
238                              Not a valid environment variable name specified.
239
240       Closing brace unexpected
241                              There  was no corresponding opening brace (nest‐
242                              ing block).
243
244       Conflicting options    Not all option combinations are useful
245
246       Conflicting x suppressed
247                              Flag x is not compatible with some other flag on
248                              this recipe.
249
250       Couldn't create "x"    The   system   mailbox  was  missing  and  could
251                              not/will not be created.
252
253       Couldn't create maildir part "x"
254                              The maildir folder "x" is missing  one  or  more
255                              required  subdirectories  and procmail could not
256                              create them.
257
258       Couldn't create or rename temp file "x"
259                              An error occurred in the mechanics of   deliver‐
260                              ing to the directory folder "x".
261
262       Couldn't determine implicit lockfile from "x"
263                              There  were no `>>' redirectors to be found, us‐
264                              ing simply `$LOCKEXT' as locallockfile.
265
266       Couldn't read "x"      Procmail was unable to open an rcfile or it  was
267                              not a regular file, or procmail couldn't open an
268                              MH directory to find the highest numbered file.
269
270       Couldn't unlock "x"    Lockfile was already gone, or  write  permission
271                              to  the directory where the lockfile is has been
272                              denied.
273
274       Deadlock attempted on "x"
275                              The locallockfile specified on  this  recipe  is
276                              equal to a still active $LOCKFILE.
277
278       Denying special privileges for "x"
279                              Procmail  will  not  take  on  the identity that
280                              comes with the rcfile because a security  viola‐
281                              tion was found (e.g.  -p or variable assignments
282                              on the command line) or  procmail  had  insuffi‐
283                              cient privileges to do so.
284
285       Descriptor "x" was not open
286                              As procmail was started, stdin, stdout or stderr
287                              was not connected (possibly an attempt  to  sub‐
288                              vert security)
289
290       Enforcing stricter permissions on "x"
291                              The system mailbox of the recipient was found to
292                              be unsecured, procmail secured it.
293
294       Error while writing to "x"
295                              Nonexistent subdirectory, no  write  permission,
296                              pipe died or disk full.
297
298       Exceeded LINEBUF       Buffer overflow detected, LINEBUF was too small,
299                              PROCMAIL_OVERFLOW has been set.
300
301       MAILDIR is not an absolute path
302
303       MAILDIR path too long
304
305       ORGMAIL is not an absolute path
306
307       ORGMAIL path too long
308
309       default rcfile is not an absolute path
310
311       default rcfile path too long
312                              The specified item's full path,  when  expanded,
313                              was  longer  than LINEBUF or didn't start with a
314                              file separator.
315
316       Excessive output quenched from "x"
317                              The program or filter "x" tried to  produce  too
318                              much  output  for  the current LINEBUF, the rest
319                              was discarded  and  PROCMAIL_OVERFLOW  has  been
320                              set.
321
322       Extraneous x ignored   The  action  line  or other flags on this recipe
323                              makes flag x meaningless.
324
325       Failed forking "x"     Process table is full (and NORESRETRY  has  been
326                              exhausted).
327
328       Failed to execute "x"  Program not in path, or not executable.
329
330       Forced unlock denied on "x"
331                              No write permission in the directory where lock‐
332                              file "x" resides, or more than one procmail try‐
333                              ing to force a lock at exactly the same time.
334
335       Forcing lock on "x"    Lockfile "x" is going to be removed by force be‐
336                              cause of a timeout (see also: LOCKTIMEOUT).
337
338       Incomplete recipe      The start of a recipe was found, but it stranded
339                              in an EOF.
340
341       Insufficient privileges
342                              Procmail  either  needs root privileges, or must
343                              have the right (e)uid and (e)gid to run  in  de‐
344                              livery mode.  The mail will bounce.
345
346       Invalid regexp "x"     The regular expression "x" contains errors (most
347                              likely some missing or extraneous parens).
348
349       Kernel-lock failed     While trying to use the kernel-supported locking
350                              calls,  one of them failed (usually indicates an
351                              OS error), procmail ignores this error and  pro‐
352                              ceeds.
353
354       Kernel-unlock failed   See above.
355
356       Lock failure on "x"    Can  only  occur  if you specify some real weird
357                              (and illegal) lockfilenames or if  the  lockfile
358                              could  not  be  created  because of insufficient
359                              permissions or nonexistent subdirectories.
360
361       Lost "x"               Procmail tried to clone  itself  but  could  not
362                              find  back  rcfile "x" (it either got removed or
363                              it was a relative path and you changed directory
364                              since procmail opened it last time).
365
366       Missing action         The current recipe was found to be incomplete.
367
368       Missing closing brace  A nesting block was started, but never finished.
369
370       Missing name           The -f option needs an extra argument.
371
372       Missing argument       You specified the -a option but forgot the argu‐
373                              ment.
374
375       Missing rcfile         You specified the -m  option,  procmail  expects
376                              the name of an rcfile as argument.
377
378       Missing recipient      You  specified  the -d option or called procmail
379                              under a different name, it expects one  or  more
380                              recipients as arguments.
381
382       No space left to finish writing "x"
383                              The  filesystem  containing  "x"  does  not have
384                              enough free space to permit delivery of the mes‐
385                              sage to the file.
386
387       Out of memory          The  system is out of swap space (and NORESRETRY
388                              has been exhausted).
389
390       Processing continued   The unrecognised options on the command line are
391                              ignored, proceeding as usual.
392
393       Program failure (nnn) of "x"
394                              Program  that  was  started by procmail returned
395                              nnn instead of EXIT_SUCCESS (=0); if nnn is neg‐
396                              ative,  then this is the signal the program died
397                              on.
398
399       Quota exceeded while writing "x"
400                              The filesize quota  for  the  recipient  on  the
401                              filesystem containing "x" does not permit deliv‐
402                              ering the message to the file.
403
404       Renaming bogus "x" into "x"
405                              The system mailbox of the recipient was found to
406                              be bogus, procmail performed evasive actions.
407
408       Rescue of unfiltered data succeeded/failed
409                              A filter returned unsuccessfully, procmail tried
410                              to get back the original text.
411
412       Skipped: "x"           Couldn't do anything  with  "x"  in  the  rcfile
413                              (syntax error), ignoring it.
414
415       Suspicious rcfile "x"  The owner of the rcfile was not the recipient or
416                              root, the file was world writable, or the direc‐
417                              tory  that  contained  it was world writable, or
418                              this was the default rcfile  ($HOME/.procmailrc)
419                              and either it was group writable or the directo‐
420                              ry that contained it was group writable (the rc‐
421                              file was not used).
422
423       Terminating prematurely whilst waiting for ...
424                              Procmail  received a signal while it was waiting
425                              for ...
426
427       Timeout, terminating "x"
428                              Timeout has occurred on program or filter "x".
429
430       Timeout, was waiting for "x"
431                              Timeout has occurred on program, filter or  file
432                              "x".   If  it  was  a program or filter, then it
433                              didn't seem to be running anymore.
434
435       Truncated file to former size
436                              The file could not be delivered to successfully,
437                              so the file was truncated to its former size.
438
439       Truncating "x" and retrying lock
440                              "x"  does not seem to be a valid filename or the
441                              file is not empty.
442
443       Unable to treat as directory "x"
444                              Either the suffix on "x" would indicate that  it
445                              should  be  an  MH  or maildir folder, or it was
446                              listed as an second folder into which  to  link,
447                              but it already exists and is not a directory.
448
449       Unexpected EOL         Missing closing quote, or trying to escape EOF.
450
451       Unknown user "x"       The  specified  recipient does not have a corre‐
452                              sponding uid.
453

EXTENDED DIAGNOSTICS

455       Extended diagnostics can be turned on and off through setting the  VER‐
456       BOSE variable.
457
458       [pid] time & date      Procmail's pid and a timestamp.  Generated when‐
459                              ever procmail logs a diagnostic and at  least  a
460                              second has elapsed since the last timestamp.
461
462       Acquiring kernel-lock  Procmail  now  tries to kernel-lock the most re‐
463                              cently opened file (descriptor).
464
465       Assigning "x"          Environment variable assignment.
466
467       Assuming identity of the recipient, VERBOSE=off
468                              Dropping all  privileges  (if  any),  implicitly
469                              turns off extended diagnostics.
470
471       Bypassed locking "x"   The  mail  spool directory was not accessible to
472                              procmail, it relied solely on kernel locks.
473
474       Executing "x"          Starting program "x".  If it is started by proc‐
475                              mail  directly  (without an intermediate shell),
476                              procmail will show where it separated the  argu‐
477                              ments by inserting commas.
478
479       HOST mismatched "x"    This  host  was called "x", HOST contained some‐
480                              thing else.
481
482       Locking "x"            Creating lockfile "x".
483
484       Linking to "x"         Creating a hardlink between directory folders.
485
486       Match on "x"           Condition matched.
487
488       Matched "x"            Assigned "x" to MATCH.
489
490       No match on "x"        Condition didn't match, recipe skipped.
491
492       Non-zero exitcode (nnn) by "x"
493                              Program that was started by procmail as a condi‐
494                              tion  or  as the action of a recipe with the `W'
495                              flag returned nnn instead of EXIT_SUCCESS  (=0);
496                              the usage indicates that this is not an entirely
497                              unexpected condition.
498
499       Notified comsat: "$LOGNAME@offset:file"
500                              Sent comsat/biff a notice that mail arrived  for
501                              user $LOGNAME at `offset' in `file'.
502
503       Opening "x"            Opening file "x" for appending.
504
505       Rcfile: "x"            Rcfile changed to "x".
506
507       Reiterating kernel-lock
508                              While attempting several locking methods, one of
509                              these failed.   Procmail  will  reiterate  until
510                              they all succeed in rapid succession.
511
512       Score: added newtotal "x"
513                              This  condition scored `added' points, which re‐
514                              sulted in a `newtotal' score.
515
516       Unlocking "x"          Removing lockfile "x" again.
517

WARNINGS

519       You should create a shell script that uses lockfile(1) before  invoking
520       your  mail shell on any mailbox file other than the system mailbox (un‐
521       less of course, your mail shell uses the same lockfiles (local or glob‐
522       al) you specified in your rcfile).
523
524       In  the unlikely event that you absolutely need to kill procmail before
525       it has finished, first try and use the regular kill command (i.e.,  not
526       kill  -9,  see  the subsection Signals for suggestions), otherwise some
527       lockfiles might not get removed.
528
529       Beware when using the -t option, if procmail repeatedly  is  unable  to
530       deliver  the  mail  (e.g.,  due  to  an  incorrect  rcfile), the system
531       mailqueue could fill up.  This could aggravate both the local  postmas‐
532       ter and other users.
533
534       The  /etc/procmailrc file might be executed with root privileges, so be
535       very careful of what you put in it.  SHELL will be equal to that of the
536       current recipient, so if procmail has to invoke the shell, you'd better
537       set it to some safe value first.  See also: DROPPRIVS.
538
539       Keep in mind that if chown(1) is permitted on files  in  /etc/procmail‐
540       rcs/,  that  they can be chowned to root (or anyone else) by their cur‐
541       rent owners.  For maximum security, make sure this  directory  is  exe‐
542       cutable to root only.
543
544       Procmail  is  not  the  proper  tool for sharing one mailbox among many
545       users, such as when you have one POP account for all mail to  your  do‐
546       main.  It  can  be done if you manage to configure your MTA to add some
547       headers with the envelope recipient data in order to tell Procmail  who
548       a  message is for, but this is usually not the right thing to do.  Per‐
549       haps you want to investigate if your MTA offers `virtual user  tables',
550       or check out the `multidrop' facility of Fetchmail.
551

BUGS

553       After removing a lockfile by force, procmail waits $SUSPEND seconds be‐
554       fore creating a new lockfile so that another process  that  decides  to
555       remove  the  stale  lockfile  will not remove the newly created lock by
556       mistake.
557
558       Procmail uses the regular TERMINATE signal  to  terminate  any  runaway
559       filter, but it does not check if the filter responds to that signal and
560       it only sends it to the filter itself, not to any of the filter's chil‐
561       dren.
562
563       A continued Content-Length: field is not handled correctly.
564
565       The  embedded  newlines  in  a  continued header should be skipped when
566       matching instead of being treated as a single space as they are now.
567

MISCELLANEOUS

569       If there is an existing Content-Length: field in the header of the mail
570       and the -Y option is not specified, procmail will trim the field to re‐
571       port the correct size.  Procmail does not change the fieldwidth.
572
573       If there is no Content-Length: field or the -Y option has  been  speci‐
574       fied and procmail appends to regular mailfolders, any lines in the body
575       of the message that look like postmarks are prepended with `>' (disarms
576       bogus  mailheaders).  The regular expression that is used to search for
577       these postmarks is:
578              `\nFrom '
579
580       If the destination name used  in  explicit  delivery  mode  is  not  in
581       /etc/passwd, procmail will proceed as if explicit delivery mode was not
582       in effect.  If not in explicit delivery mode and should the  uid  proc‐
583       mail  is  running  under, have no corresponding /etc/passwd entry, then
584       HOME will default to /, LOGNAME will default to #uid,  SHELL  will  de‐
585       fault to /bin/sh, and ORGMAIL will default to /tmp/dead.letter.
586
587       When  in explicit delivery mode, procmail will generate a leading `From
588       ' line if none is present.  If one is  already  present  procmail  will
589       leave  it intact.  If procmail is not invoked with one of the following
590       user or group ids: root,  daemon,  uucp,  mail,  x400,  network,  list,
591       slist, lists or news, but still has to generate or accept a new `From '
592       line, it will generate an additional `>From ' line to help  distinguish
593       fake mails.
594
595       For  security reasons procmail will only use an absolute or $HOME-rela‐
596       tive rcfile if it  is  owned  by  the  recipient  or  root,  not  world
597       writable,  and  the directory it is contained in is not world writable.
598       The $HOME/.procmailrc file has the additional constraint of  not  being
599       group-writable or in a group-writable directory.
600
601       If  /var/spool/mail/$LOGNAME  is a bogus mailbox (i.e., does not belong
602       to the recipient, is unwritable, is a symbolic link or is a hard link),
603       procmail  will  upon startup try to rename it into a file starting with
604       `BOGUS.$LOGNAME.' and ending in an inode-sequence-code.  If this  turns
605       out  to  be  impossible,  ORGMAIL will have no initial value, and hence
606       will inhibit delivery without a proper rcfile.
607
608       If /var/spool/mail/$LOGNAME already is a valid mailbox, but has got too
609       loose  permissions on it, procmail will correct this.  To prevent proc‐
610       mail from doing this make sure the u+x bit is set.
611
612       When delivering to directories, MH folders,  or  maildir  folders,  you
613       don't  need  to  use  lockfiles to prevent several concurrently running
614       procmail programs from messing up.
615
616       Delivering to MH folders is slightly more time consuming than  deliver‐
617       ing  to normal directories or mailboxes, because procmail has to search
618       for the next available number (instead of having the  filename  immedi‐
619       ately available).
620
621       On  general failure procmail will return EX_CANTCREAT, unless option -t
622       is specified, in which case it will return EX_TEMPFAIL.
623
624       To make `egrepping' of headers more consistent,  procmail  concatenates
625       all  continued header fields; but only internally.  When delivering the
626       mail, line breaks will appear as before.
627
628       If procmail is called under a name not starting with `procmail'  (e.g.,
629       if  it  is  linked to another name and invoked as such), it comes up in
630       explicit delivery mode, and expects the recipients'  names  as  command
631       line arguments (as if -d had been specified).
632
633       Comsat/biff  notifications  are done using udp.  They are sent off once
634       when procmail generates the regular logfile  entry.   The  notification
635       messages have the following extended format (or as close as you can get
636       when final delivery was not to a file):
637              $LOGNAME@offset_of_message_in_mailbox:absolute_path_to_mailbox
638
639       Whenever procmail itself opens a file to deliver  to,  it  consistently
640       uses the following kernel locking strategies: fcntl(2).
641
642       Procmail is NFS-resistant and eight-bit clean.
643

NOTES

645       Calling  up procmail with the -h or -? options will cause it to display
646       a command-line help and recipe flag quick-reference page.
647
648       There exists an excellent newbie FAQ about mailfilters (and procmail in
649       particular);  it is maintained by Nancy McGough <nancym@ii.com> and can
650       be obtained by sending a mail to mail-server@rtfm.mit.edu with the fol‐
651       lowing in the body:
652              send usenet/news.answers/mail/filtering-faq
653
654       If  procmail  is  not  installed  globally as the default mail delivery
655       agent (ask your system administrator), you have to make sure it is  in‐
656       voked  when  your  mail arrives.  In this case your $HOME/.forward (be‐
657       ware, it has to be world readable) file should contain the line  below.
658       Be  sure  to  include the single and double quotes, and unless you know
659       your site to be running smrsh (the SendMail Restricted SHell), it  must
660       be an absolute path.
661
662       "|exec /usr/bin/procmail"
663
664       Some  mailers  (notably exim) do not currently accept the above syntax.
665       In such case use this instead:
666
667       |/usr/bin/procmail
668
669       Procmail can also be invoked to postprocess an  already  filled  system
670       mailbox.   This  can  be  useful  if  you  don't want to or can't use a
671       $HOME/.forward file (in which case the following script could  periodi‐
672       cally  be  called  from  within  cron(1), or whenever you start reading
673       mail):
674
675              #!/bin/sh
676
677              ORGMAIL=/var/spool/mail/$LOGNAME
678
679              if cd $HOME &&
680               test -s $ORGMAIL &&
681               lockfile -r0 -l1024 .newmail.lock 2>/dev/null
682              then
683                trap "rm -f .newmail.lock" 1 2 3 13 15
684                umask 077
685                lockfile -l1024 -ml
686                cat $ORGMAIL >>.newmail &&
687                 cat /dev/null >$ORGMAIL
688                lockfile -mu
689                formail -s procmail <.newmail &&
690                 rm -f .newmail
691                rm -f .newmail.lock
692              fi
693              exit 0
694
695   A sample small $HOME/.procmailrc:
696       PATH=/usr/local/bin:/usr/bin:/bin
697       MAILDIR=$HOME/Mail      #you'd better make sure it exists
698       DEFAULT=$MAILDIR/mbox   #completely optional
699       LOGFILE=$MAILDIR/from   #recommended
700
701       :0:
702       * ^From.*berg
703       from_me
704
705       :0
706       * ^Subject:.*Flame
707       /dev/null
708
709       Other examples for rcfile recipes can be looked up in the procmailex(5)
710       man page.
711

SOURCE

713       This  program  is  part of the procmail mail-processing-package (v3.22)
714       available at http://www.procmail.org/ or ftp.procmail.org in  pub/proc‐
715       mail/.
716

MAILINGLIST

718       There exists a mailinglist for questions relating to any program in the
719       procmail package:
720              <procmail-users@procmail.org>
721                     for submitting questions/answers.
722              <procmail-users-request@procmail.org>
723                     for subscription requests.
724
725       If you would like to stay informed  about  new  versions  and  official
726       patches send a subscription request to
727              procmail-announce-request@procmail.org
728       (this is a readonly list).
729

AUTHORS

731       Stephen R. van den Berg
732              <srb@cuci.nl>
733       Philip A. Guenther
734              <guenther@sendmail.com>
735
736
737
738BuGless                           2001/08/27                       PROCMAIL(1)
Impressum