Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
PROCMAIL(1)		    General Commands Manual		   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	[-toY] [-a  argument] -z
       procmail	-v

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

       Procmail	 should	be invoked automatically over the .forward file	mecha-
       nism as soon as mail arrives.  Alternatively, when installed by a  sys-
       tem  administrator,  it	can  be	invoked	from within the	mailer immedi-
       ately.  When invoked, it	first sets some	environment variables  to  de-
       fault 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.  Accord-
       ing to the processing recipes in	this file, the mail message that  just
       arrived	gets  distributed into the right folder	(and more).  If	no rc-
       file 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, proc-
       mail will, prior	to reading $HOME/.procmailrc, interpret	commands  from
       /usr/local/etc/procmailrc (if present).	Care must be taken when	creat-
       ing  /usr/local/etc/procmailrc,	because,  if  circumstances permit, it
       will be executed	with root privileges  (contrary	 to  the  $HOME/.proc-
       mailrc 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., pro-
       visions 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 proc-
       mailsc(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	 envi-
	    ronment 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	prede-
	    fined  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, USER_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-at-
	    tempt 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 over-
	    ride 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  ar-
	    gument will	set the	next number variable ($2, $3, etc).  It	can be
	    used  to  pass  meta information along to procmail.	 This is typi-
	    cally 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 lo-
	    cal	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  re-
	    cipient  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 rc-
	    file, procmail will	accept an unlimited number of  arguments.   If
	    the	 rcfile	is an absolute path starting with /usr/local/etc/proc-
	    mailrcs/ 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.

       -z   This turns on LMTP mode, wherein procmail acts as an RFC2033  LMTP
	    server.   Delivery	takes  place in	the same  manner and under the
	    same restrictions as the delivery mode enabled  with -d.  This op-
	    tion is incompatible with -p and -f.

ARGUMENTS
       Any arguments containing	an '=' are considered to be environment	 vari-
       able  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 di-
       rectory); procmail will start with the first one	it finds on  the  com-
       mand  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  de-
       fault  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 adminis-
       trator 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/local/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	 rule-
       set  0)	to  filter  mail  through the procmail mailer (please note the
       leading tab to continue the rule, and the  tab  to  separate  the  com-
       ments):

	      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
			      USER_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

       /usr/local/etc/procmailrc
			      initial global rcfile

       /usr/local/etc/procmailrcs/
			      special privileges path for rcfiles

       $HOME/.procmailrc      default rcfile

       /var/mail/$LOGNAME.lock
			      lockfile	for  the system	mailbox	(not automati-
			      cally 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	(nest-
			      ing 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   deliver-
			      ing to the directory folder "x".

       Couldn't	determine implicit lockfile from "x"
			      There  were no `>>' redirectors to be found, us-
			      ing 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	viola-
			      tion was found (e.g.  -p or variable assignments
			      on the command line) or  procmail	 had  insuffi-
			      cient privileges to do so.

       Descriptor "x" was not open
			      As procmail was started, stdin, stdout or	stderr
			      was  not	connected (possibly an attempt to sub-
			      vert 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  backquoted  expression "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
			      make 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 lock-
			      file "x" resides,	or more	than one procmail try-
			      ing to force a lock at exactly the same time.

       Forcing lock on "x"    Lockfile "x" is going to be removed by force be-
			      cause 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 de-
			      livery 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 pro-
			      ceeds.

       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 argu-
			      ment.

       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 mes-
			      sage 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 neg-
			      ative,  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	deliv-
			      ering 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	direc-
			      tory that	contained it was  world	 writable,  or
			      this  was	the default rcfile ($HOME/.procmailrc)
			      and either it was	group writable or the directo-
			      ry that contained	it was group writable (the rc-
			      file 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	corre-
			      sponding uid.

EXTENDED DIAGNOSTICS
       Extended	diagnostics can	be turned on and off through setting the  VER-
       BOSE variable.

       [pid] time & date      Procmail's pid and a timestamp.  Generated when-
			      ever  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  re-
			      cently 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 proc-
			      mail  directly  (without an intermediate shell),
			      procmail will show where it separated the	 argu-
			      ments by inserting commas.

       HOST mismatched "x"    This  host  was called "x", HOST contained some-
			      thing 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	condi-
			      tion 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  re-
			      sulted 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  (un-
       less of course, your mail shell uses the	same lockfiles (local or glob-
       al) 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  postmas-
       ter and other users.

       The  /usr/local/etc/procmailrc  file might be executed with root	privi-
       leges, 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 :	 DROP-
       PRIVS.

       Keep  in	 mind  that  if	 chown(1)  is  permitted  on files in /usr/lo-
       cal/etc/procmailrcs/, that they can be chowned to root (or anyone else)
       by their	current	owners.	 For maximum security, make sure this directo-
       ry 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 do-
       main. 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.	  Per-
       haps  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 be-
       fore 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 chil-
       dren.

       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 re-
       port the	correct	size.  Procmail	does not change	the fieldwidth.

       If there	is no Content-Length: field or the -Y option has  been	speci-
       fied 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 proc-
       mail is running under, have no corresponding  /etc/passwd  entry,  then
       HOME  will  default to /, LOGNAME will default to #uid, USER_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, news, mailnull, majordom or majordomo, 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-rela-
       tive  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), proc-
       mail will upon startup try to rename it into a file starting with  `BO-
       GUS.$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 deliver-
       ing to normal directories or mailboxes, because procmail	has to	search
       for  the	 next available	number (instead	of having the filename immedi-
       ately 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: lockf(3).

       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 fol-
       lowing 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  in-
       voked  when  your  mail arrives.	 In this case your $HOME/.forward file
       should contain the line below.  Be sure to include the single and  dou-
       ble  quotes,  and  unless  you  know your site to be running smrsh (the
       SendMail	Restricted SHell), it must be an absolute path.

       "|exec /usr/local/bin/procmail || exit 75"

       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 periodi-
       cally 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:/bin:/usr/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.24)
       available at http://www.procmail.org/ or	ftp.procmail.org in  pub/proc-
       mail/.

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>

				    BuGless			   PROCMAIL(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=procmail&manpath=FreeBSD+14.3-RELEASE+and+Ports>

home | help