From bb2c54444b705c397c0e491fe78f8da9efdb2ae0 Mon Sep 17 00:00:00 2001
From: Troy Dawson <tdawson@redhat.com>
Date: Wed, 14 Oct 2020 16:31:49 -0700
Subject: [PATCH] RHEL 9.0.0 Alpha bootstrap

The content of this branch was automatically imported from Fedora ELN
with the following as its source:
https://src.fedoraproject.org/rpms/procmail#673722facf425123ced54ecaada732cf5340ec35
---
 .gitignore                              |   1 +
 procmail-3.15.1-man.patch               |  19 +
 procmail-3.22-CVE-2014-3618.patch       |  18 +
 procmail-3.22-CVE-2017-16844.patch      |  13 +
 procmail-3.22-coverity-scan-fixes.patch |  86 +++
 procmail-3.22-crash-fix.patch           |  58 ++
 procmail-3.22-getline.patch             |  56 ++
 procmail-3.22-ipv6.patch                | 228 ++++++
 procmail-3.22-rhconfig.patch            |  97 +++
 procmail-3.22-truncate.patch            |  47 ++
 procmail.spec                           | 323 ++++++++
 procmail_3.22-8.debian.patch            | 950 ++++++++++++++++++++++++
 procmailrc                              | 424 +++++++++++
 sources                                 |   1 +
 14 files changed, 2321 insertions(+)
 create mode 100644 procmail-3.15.1-man.patch
 create mode 100644 procmail-3.22-CVE-2014-3618.patch
 create mode 100644 procmail-3.22-CVE-2017-16844.patch
 create mode 100644 procmail-3.22-coverity-scan-fixes.patch
 create mode 100644 procmail-3.22-crash-fix.patch
 create mode 100644 procmail-3.22-getline.patch
 create mode 100644 procmail-3.22-ipv6.patch
 create mode 100644 procmail-3.22-rhconfig.patch
 create mode 100644 procmail-3.22-truncate.patch
 create mode 100644 procmail.spec
 create mode 100644 procmail_3.22-8.debian.patch
 create mode 100644 procmailrc
 create mode 100644 sources

diff --git a/.gitignore b/.gitignore
index e69de29..17d3ff3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+procmail-3.22.tar.gz
diff --git a/procmail-3.15.1-man.patch b/procmail-3.15.1-man.patch
new file mode 100644
index 0000000..af29f3b
--- /dev/null
+++ b/procmail-3.15.1-man.patch
@@ -0,0 +1,19 @@
+--- procmail-3.15.1/man/procmail.man.35825	Thu Apr 12 18:31:37 2001
++++ procmail-3.15.1/man/procmail.man	Thu Apr 12 18:32:42 2001
+@@ -44,11 +44,11 @@
+ should be invoked automatically over the
+ .B @DOT_FORWARD@
+ file mechanism as soon as mail arrives.  Alternatively, when installed by
+-a system administrator, it can be invoked from within the mailer immediately.
+-When invoked, it first sets some environment variables to default values,
+-reads the mail message from stdin until an EOF, separates the body from the
+-header, and then, if no command line arguments are present, it starts to look
+-for a file named
++a system administrator (and in the standard Red Hat Linux configuration), 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
+ .BR @PROCMAILRC@ .
+ According to the processing recipes in this file,
+ the mail message that just arrived gets distributed into the right folder
diff --git a/procmail-3.22-CVE-2014-3618.patch b/procmail-3.22-CVE-2014-3618.patch
new file mode 100644
index 0000000..124d1f9
--- /dev/null
+++ b/procmail-3.22-CVE-2014-3618.patch
@@ -0,0 +1,18 @@
+diff --git a/src/formisc.c b/src/formisc.c
+index 338733b..c48df52 100644
+--- a/src/formisc.c
++++ b/src/formisc.c
+@@ -84,12 +84,11 @@ normal:	   *target++= *start++;
+ 	case '"':*target++=delim='"';start++;
+       }
+      ;{ int i;
+-	do
++	while(*start)						/* anything? */
+ 	   if((i= *target++= *start++)==delim)	 /* corresponding delimiter? */
+ 	      break;
+ 	   else if(i=='\\'&&*start)		    /* skip quoted character */
+ 	      *target++= *start++;
+-	while(*start);						/* anything? */
+       }
+      hitspc=2;
+    }
diff --git a/procmail-3.22-CVE-2017-16844.patch b/procmail-3.22-CVE-2017-16844.patch
new file mode 100644
index 0000000..5e610d7
--- /dev/null
+++ b/procmail-3.22-CVE-2017-16844.patch
@@ -0,0 +1,13 @@
+diff --git a/src/formisc.c b/src/formisc.c
+index 5c2869d..54fd013 100644
+--- a/src/formisc.c
++++ b/src/formisc.c
+@@ -103,7 +103,7 @@ void loadsaved(sp)const struct saved*const sp;	     /* load some saved text */
+ }
+ 							    /* append to buf */
+ void loadbuf(text,len)const char*const text;const size_t len;
+-{ if(buffilled+len>buflen)			  /* buf can't hold the text */
++{ while(buffilled+len>buflen)			  /* buf can't hold the text */
+      buf=realloc(buf,buflen+=Bsize);
+   tmemmove(buf+buffilled,text,len);buffilled+=len;
+ }
diff --git a/procmail-3.22-coverity-scan-fixes.patch b/procmail-3.22-coverity-scan-fixes.patch
new file mode 100644
index 0000000..633e36f
--- /dev/null
+++ b/procmail-3.22-coverity-scan-fixes.patch
@@ -0,0 +1,86 @@
+diff --git a/src/cstdio.c b/src/cstdio.c
+index 0a0bd5b..306a973 100644
+--- a/src/cstdio.c
++++ b/src/cstdio.c
+@@ -15,6 +15,7 @@ static /*const*/char rcsid[]=
+ #include "variables.h"
+ #include "shell.h"
+ #include "cstdio.h"
++#include "common.h"
+ 
+ static uchar rcbuf[STDBUF],*rcbufp,*rcbufend;	  /* buffer for custom stdio */
+ static off_t blasttell;
+diff --git a/src/foldinfo.c b/src/foldinfo.c
+index 10fe406..d05ad84 100644
+--- a/src/foldinfo.c
++++ b/src/foldinfo.c
+@@ -18,6 +18,7 @@ static /*const*/char rcsid[]=
+ #include "goodies.h"
+ #include "locking.h"
+ #include "foldinfo.h"
++#include "acommon.h"
+ 
+ static const char
+  maildirtmp[]=MAILDIRtmp,maildircur[]=MAILDIRcur;
+@@ -186,8 +187,8 @@ int screenmailbox(chp,egid,Deliverymode)
+   if(!stat(buf,&stbuf))
+    { unsigned wwsdir;
+      accspooldir=(wwsdir=			/* world writable spool dir? */
+-	    ((S_IWGRP|S_IXGRP|S_IWOTH|S_IXOTH)&stbuf.st_mode)==
+-	     (S_IWGRP|S_IXGRP|S_IWOTH|S_IXOTH)
++	    (((S_IWGRP|S_IXGRP|S_IWOTH|S_IXOTH)&stbuf.st_mode)==
++	     (S_IWGRP|S_IXGRP|S_IWOTH|S_IXOTH))
+ 	  <<1|						 /* note it in bit 1 */
+ 	  uid==stbuf.st_uid);	   /* we own the spool dir, note it in bit 0 */
+      if((CAN_toggle_sgid||accspooldir)&&privileged)
+diff --git a/src/lmtp.c b/src/lmtp.c
+index 2c5b676..2bfacc4 100644
+--- a/src/lmtp.c
++++ b/src/lmtp.c
+@@ -51,7 +51,7 @@ static int lreaddyn P((void));
+ 
+ int childserverpid;
+ 
+-static ctopfd;
++static int ctopfd;
+ static char*overread;
+ static size_t overlen;
+ 
+diff --git a/src/locking.c b/src/locking.c
+index 572719b..5740c2d 100644
+--- a/src/locking.c
++++ b/src/locking.c
+@@ -95,7 +95,10 @@ faillock:  nlog("Lock failure on");logqnl(name);
+      permanent=nfsTRY;
+ ds:  ssleep((unsigned)locksleep);
+ ce:  if(nextexit)
+-term: { free(name);			     /* drop the preallocated buffer */
++term: {
++        if(nextexit)
++          elog(whilstwfor),elog("lockfile"),logqnl(name);
++        free(name);			     /* drop the preallocated buffer */
+ 	break;
+       }
+    }
+@@ -103,7 +106,7 @@ term: { free(name);			     /* drop the preallocated buffer */
+      setegid(gid);		      /* we put back our regular permissions */
+   lcking&=~lck_DELAYSIG;
+   if(nextexit)
+-     elog(whilstwfor),elog("lockfile"),logqnl(name),Terminate();
++     Terminate();
+   return !!*lockp;
+ }
+ 
+diff --git a/src/mailfold.c b/src/mailfold.c
+index 6c8bcf4..23b8ac2 100644
+--- a/src/mailfold.c
++++ b/src/mailfold.c
+@@ -378,7 +378,7 @@ void concon(ch)const int ch;   /* flip between concatenated and split fields */
+    }
+ }
+ 
+-void readmail(rhead,tobesent)const long tobesent;
++void readmail(rhead,tobesent)int rhead;const long tobesent;
+ { char*chp,*pastend;static size_t contlengthoffset;
+   ;{ long dfilled;
+      if(rhead==2)		  /* already read, just examine what we have */
diff --git a/procmail-3.22-crash-fix.patch b/procmail-3.22-crash-fix.patch
new file mode 100644
index 0000000..8563ea3
--- /dev/null
+++ b/procmail-3.22-crash-fix.patch
@@ -0,0 +1,58 @@
+diff --git a/src/cstdio.c b/src/cstdio.c
+index 7b6fe6d..0a0bd5b 100644
+--- a/src/cstdio.c
++++ b/src/cstdio.c
+@@ -144,7 +144,7 @@ int getbl(p,end)char*p,*end;					  /* my gets */
+       { case '\n':case EOF:*q='\0';
+ 	   return overflow?-1:p!=q;	     /* did we read anything at all? */
+       }
+-     if(q==end)	    /* check here so that a trailing backslash won't be lost */
++     if(q>=end)	    /* check here so that a trailing backslash won't be lost */
+ 	q=p,overflow=1;
+      *q++=i;
+    }
+@@ -199,7 +199,7 @@ int getlline(target,end)char*target,*end;
+ 	   if(*(target=strchr(target,'\0')-1)=='\\')
+ 	    { if(chp2!=target)				  /* non-empty line? */
+ 		 target++;		      /* then preserve the backslash */
+-	      if(target>end-2)			  /* space enough for getbl? */
++	      if(target>=end-2)			  /* space enough for getbl? */
+ 		 target=end-linebuf,overflow=1;		/* toss what we have */
+ 	      continue;
+ 	    }
+diff --git a/src/formail.c b/src/formail.c
+index 1f5c9dd..49b9967 100644
+--- a/src/formail.c
++++ b/src/formail.c
+@@ -219,7 +219,8 @@ static char*getsender(namep,fldp,headreply)char*namep;struct field*fldp;
+   if(i>=0&&(i!=maxindex(sest)||fldp==rdheader))		  /* found anything? */
+    { char*saddr;char*tmp;			     /* determine the weight */
+      nowm=areply&&headreply?headreply==1?sest[i].wrepl:sest[i].wrrepl:i;chp+=j;
+-     tmp=malloc(j=fldp->Tot_len-j);tmemmove(tmp,chp,j);(chp=tmp)[j-1]='\0';
++     tmp=malloc((j=fldp->Tot_len-j) + 1);tmemmove(tmp,chp,j);(chp=tmp)[j-1]='\0';
++     chp[j]='\0';
+      if(sest[i].head==From_)
+       { char*pastad;
+ 	if(strchr(saddr=chp,'\n'))		     /* multiple From_ lines */
+@@ -364,7 +365,7 @@ static PROGID;
+ 
+ int main(lastm,argv)int lastm;const char*const argv[];
+ { int i,split=0,force=0,bogus=1,every=0,headreply=0,digest=0,nowait=0,keepb=0,
+-   minfields=(char*)progid-(char*)progid,conctenate=0,babyl=0,babylstart,
++   minfields=(char*)progid-(char*)progid,conctenate=0,babyl=0,babylstart=0,
+    berkeley=0,forgetclen;
+   long maxlen,ctlength;FILE*idcache=0;pid_t thepid;
+   size_t j,lnl,escaplen;char*chp,*namep,*escap=ESCAP;
+diff --git a/src/formisc.c b/src/formisc.c
+index c48df52..5c2869d 100644
+--- a/src/formisc.c
++++ b/src/formisc.c
+@@ -66,7 +66,7 @@ inc:	   start++;
+ retz:	      *target='\0';
+ ret:	      return start;
+ 	    }
+-	   if(*start=='\\')
++	   if(*start=='\\' && *(start + 1))
+ 	      *target++='\\',start++;
+ 	   hitspc=2;
+ 	   goto normal;					      /* normal word */
diff --git a/procmail-3.22-getline.patch b/procmail-3.22-getline.patch
new file mode 100644
index 0000000..fb9a4ec
--- /dev/null
+++ b/procmail-3.22-getline.patch
@@ -0,0 +1,56 @@
+diff -up procmail-3.22/src/fields.c.getline procmail-3.22/src/fields.c
+--- procmail-3.22/src/fields.c.getline	2001-09-11 06:57:08.000000000 +0200
++++ procmail-3.22/src/fields.c	2009-06-30 16:10:36.000000000 +0200
+@@ -110,16 +110,16 @@ void dispfield(p)register const struct f
+ 		    /* try and append one valid field to rdheader from stdin */
+ int readhead P((void))
+ { int idlen;
+-  getline();
++  get_line();
+   if((idlen=breakfield(buf,buffilled))<=0) /* not the start of a valid field */
+      return 0;
+   if(idlen==STRLEN(FROM)&&eqFrom_(buf))			/* it's a From_ line */
+    { if(rdheader)
+ 	return 0;			       /* the From_ line was a fake! */
+-     for(;buflast=='>';getline());	    /* gather continued >From_ lines */
++     for(;buflast=='>';get_line());	    /* gather continued >From_ lines */
+    }
+   else
+-     for(;;getline())		      /* get the rest of the continued field */
++     for(;;get_line())		      /* get the rest of the continued field */
+       { switch(buflast)			     /* will this line be continued? */
+ 	 { case ' ':case '\t':				  /* yep, it sure is */
+ 	      continue;
+diff -up procmail-3.22/src/formail.c.getline procmail-3.22/src/formail.c
+--- procmail-3.22/src/formail.c.getline	2009-06-30 16:00:40.000000000 +0200
++++ procmail-3.22/src/formail.c	2009-06-30 16:10:49.000000000 +0200
+@@ -819,7 +819,7 @@ splitit:       { if(!lnl)   /* did the p
+       { if(split)		       /* gobble up the next start separator */
+ 	 { buffilled=0;
+ #ifdef sMAILBOX_SEPARATOR
+-	   getline();buffilled=0;		 /* but only if it's defined */
++	   get_line();buffilled=0;		 /* but only if it's defined */
+ #endif
+ 	   if(buflast!=EOF)					   /* if any */
+ 	      goto splitit;
+diff -up procmail-3.22/src/formisc.c.getline procmail-3.22/src/formisc.c
+--- procmail-3.22/src/formisc.c.getline	2001-06-29 04:20:45.000000000 +0200
++++ procmail-3.22/src/formisc.c	2009-06-30 16:12:20.000000000 +0200
+@@ -115,7 +115,7 @@ void loadchar(c)const int c;		      /* a
+   buf[buffilled++]=c;
+ }
+ 
+-int getline P((void))			   /* read a newline-terminated line */
++int get_line P((void))			   /* read a newline-terminated line */
+ { if(buflast==EOF)			 /* at the end of our Latin already? */
+    { loadchar('\n');					  /* fake empty line */
+      return EOF;					  /* spread the word */
+diff -up procmail-3.22/src/formisc.h.getline procmail-3.22/src/formisc.h
+--- procmail-3.22/src/formisc.h.getline	1999-04-19 08:42:15.000000000 +0200
++++ procmail-3.22/src/formisc.h	2009-06-30 16:10:02.000000000 +0200
+@@ -17,4 +17,4 @@ void
+ char*
+  skipwords P((char*start));
+ int
+- getline P((void));
++ get_line P((void));
diff --git a/procmail-3.22-ipv6.patch b/procmail-3.22-ipv6.patch
new file mode 100644
index 0000000..ecae2a2
--- /dev/null
+++ b/procmail-3.22-ipv6.patch
@@ -0,0 +1,228 @@
+diff --git a/src/autoconf b/src/autoconf
+index 3a52e6c..ff78048 100755
+--- a/src/autoconf
++++ b/src/autoconf
+@@ -68,8 +68,6 @@
+ #	#define NOfsync
+ #Ok	#define endpwent()
+ #Ok	#define endgrent()
+-#Ok	#define endhostent()
+-#Ok	#define endservent()
+ #Ok	#define endprotoent()
+ #	#define h_0addr_list h_addr
+ #Ok	#define NOpw_passwd
+@@ -896,7 +894,7 @@ int main(){int i=0;
+  {uid_t vuid_t;i+=vuid_t=1;}
+  {gid_t vgid_t;i+=vgid_t=1;}
+ #ifndef NO_COMSAT
+- {struct hostent vhostent;i+=!(vhostent.h_addr_list=0);}
++ {struct addrinfo res; i+=!(res.ai_socktype=0);}
+ #endif
+ #ifndef NOuname
+  {struct utsname vutsname;i+=!(*vutsname.nodename='\0');}
+@@ -917,8 +915,6 @@ do
+   test -z "$i3" && grepfor mode_t 'typedef int mode_t;' && i3=I
+   test -z "$i4" && grepfor uid_t 'typedef int uid_t;' && i4=I
+   test -z "$i5" && grepfor gid_t 'typedef int gid_t;' && i5=I
+-  test -z "$i6" && grepfor h_addr_list '#define h_0addr_list h_addr' && i6=I
+-  test -z "$i6" && grepfor hostent '#define h_0addr_list h_addr' && i6=I
+   test -z "$i6" && grepfor member '#define h_0addr_list h_addr' && i6=I
+   test -z "$i7" && grepfor utsname "#define NOuname			      \
+ /* <sys/utsname.h> is there, but empty */" && i7=I
+@@ -1048,8 +1044,12 @@ int main(){char a[2];
+  {struct utsname b;uname(&b);}
+ #endif
+ #ifndef NO_COMSAT
+- gethostbyname("0");getprotobyname(COMSATprotocol);endhostent();endservent();
+- endprotoent();
++ {
++ struct addrinfo *res, hints;
++ memset(&hints, '\0', sizeof(hints));
++ if(getaddrinfo(COMSAThost,BIFF_serviceport,&hints,&res))
++ 	freeaddrinfo(res);
++ }
+ #endif
+  _exit(0);
+  return 0;}
+@@ -1103,14 +1103,9 @@ grepfor uname "\
+ /* <sys/utsname.h> defines it, the libraries don't */"
+ grepfor endpwent '#define endpwent()'
+ grepfor endgrent '#define endgrent()'
+-if grepfor gethostbyname '#define NO_COMSAT'
++if grepfor getaddrinfo '#define NO_COMSAT'
+ then
+ :
+-else
+-  grepfor getprotobyname '#define UDP_protocolno 17'
+-  grepfor endhostent '#define endhostent()'
+-  grepfor endservent '#define endservent()'
+-  grepfor endprotoent '#define endprotoent()'
+ fi
+ grepfor strstr '#define SLOWstrstr' ||
+  grepfor clock '#define SLOWstrstr'
+@@ -1239,39 +1234,9 @@ int main(argc,argv)int argc;const char*argv[];
+ 	printf("/* Insufficient memory to perform the benchmark! */\n");
+ #endif /* SLOWstrstr */
+ #ifndef NO_COMSAT
+-#ifndef UDP_protocolno
+-     ;{ const struct protoent*p;
+-	if(p=getprotobyname(COMSATprotocol))
+-	 { printf("#define UDP_protocolno %d\n",p->p_proto);
+-#else
+-     ;{ if(1)
+-	 {
+-#endif
+-	   ;{ const struct servent*serv;
+-	      if(serv=getservbyname(COMSATservice,COMSATprotocol))
+-		 printf("#define BIFF_serviceport \"%d\"\n",
+-		  ntohs(serv->s_port));
+-	    }
+-#ifdef AF_INET
+-	   ;{ const struct hostent*host;
+-	      if(!strcmp("localhost",COMSAThost)&&
+-	       (host=gethostbyname(COMSAThost))&&
+-	       host->h_0addr_list&&host->h_addrtype==AF_INET&&
+-	       host->h_length)
+-	       { int j=host->h_length;
+-		 const unsigned char*ad=(void*)host->h_0addr_list;
+-		 printf("#define IP_localhost {");
+-		 printf("%d",*ad++);
+-		 while(--j)
+-		    printf(",%d",*ad++);
+-		 puts("}");
+-	       }
+-	    }
++#ifndef AF_INET
++	puts("#define NO_COMSAT");
+ #endif /* AF_INET */
+-	 }
+-	else
+-	   puts("#define NO_COMSAT");
+-      }
+ #endif /* NO_COMSAT */
+      ;{ unsigned long s=(size_t)~0;int bits;
+ 	for(bits=1;s>>=1;bits++);
+diff --git a/src/comsat.c b/src/comsat.c
+index 9712e74..5082b16 100644
+--- a/src/comsat.c
++++ b/src/comsat.c
+@@ -27,7 +27,8 @@ static /*const*/char rcsid[]=
+ #include "comsat.h"
+ 
+ static int csvalid;		     /* is it turned on with a good address? */
+-static struct sockaddr_in csaddr;
++static struct addrinfo cai;
++static struct sockaddr *csaddr;
+ static char*cslastf,*cslgname;
+ 
+ void setlfcs(folder)const char*folder;		/* set lastfolder for comsat */
+@@ -62,56 +63,32 @@ void setlgcs(name)const char*name;		   /* set logname for comsat */
+ }
+ 
+ int setcomsat(chp)const char*chp;
+-{ char*chad;int newvalid; struct sockaddr_in newaddr;
++{ char*chad;int newvalid; struct addrinfo *res, hints;
+   chad=strchr(chp,SERV_ADDRsep);			     /* @ separator? */
+   if(!chad&&!renvint(-1L,chp))
+      return csvalid=0;					/* turned off comsat */
+   newvalid=1;
+   if(chad)
+      *chad++='\0';				      /* split the specifier */
++  if(!chad||!*chp)					       /* no service */
++     chp=BIFF_serviceport;				/* new balls please! */
+   if(!chad||!*chad)						  /* no host */
+-#ifndef IP_localhost			      /* Is "localhost" preresolved? */
+      chad=COMSAThost;					/* nope, use default */
+-#else /* IP_localhost */
+-   { static const unsigned char ip_localhost[]=IP_localhost;
+-     newaddr.sin_family=AF_INET;
+-     tmemmove(&newaddr.sin_addr,ip_localhost,sizeof ip_localhost);
+-   }
+-  else
+-#endif /* IP_localhost */
+-   { const struct hostent*host;		      /* what host?  paranoid checks */
+-     if(!(host=gethostbyname(chad))||!host->h_0addr_list)
+-      { bbzero(&newaddr.sin_addr,sizeof newaddr.sin_addr);
+-	newvalid=0;			     /* host can't be found, too bad */
+-      }
+-     else
+-      { newaddr.sin_family=host->h_addrtype;	     /* address number found */
+-	tmemmove(&newaddr.sin_addr,host->h_0addr_list,host->h_length);
+-      }
+-     endhostent();
+-   }
+-  if(newvalid)						  /* so far, so good */
+-   { int s;
+-     if(!chad||!*chp)					       /* no service */
+-	chp=BIFF_serviceport;				/* new balls please! */
+-     s=strtol(chp,&chad,10);
+-     if(chp!=chad)			       /* the service is not numeric */
+-	newaddr.sin_port=htons((short)s);		    /* network order */
+-     else
+-      { const struct servent*serv;
+-	serv=getservbyname(chp,COMSATprotocol);		   /* so get its no. */
+-	if(serv)
+-	   newaddr.sin_port=serv->s_port;
+-	else
+-	 { newaddr.sin_port=htons((short)0);		  /* no such service */
+-	   newvalid=0;
+-	 }
+-	endservent();
+-      }
+-   }
++  bzero(&hints,sizeof(hints));
++  hints.ai_socktype=SOCK_DGRAM;
++  hints.ai_flags=AI_ADDRCONFIG;
++  if(getaddrinfo(chad,chp,&hints,&res))
++     newvalid=0;
++  
+   onguard();				    /* update the address atomically */
+   if(csvalid=newvalid)
+-     tmemmove(&csaddr,&newaddr,sizeof(newaddr));
++   { if(csaddr)
++        free(csaddr);
++     csaddr=malloc(res->ai_addrlen);
++     tmemmove(csaddr,res->ai_addr,res->ai_addrlen);
++     tmemmove(&cai,res,sizeof(cai));
++     freeaddrinfo(res);
++   }
+   offguard();
+   return newvalid;
+ }
+@@ -132,8 +109,8 @@ void sendcomsat(folder)const char*folder;
+    }
+   strlcat(buf,COMSATxtrsep,linebuf);			 /* custom seperator */
+   strlcat(buf,p,linebuf);			  /* where was it delivered? */
+-  if((s=socket(AF_INET,SOCK_DGRAM,UDP_protocolno))>=0)
+-   { sendto(s,buf,strlen(buf),0,(struct sockaddr*)&csaddr,sizeof(csaddr));
++  if((s=socket(cai.ai_family,cai.ai_socktype,cai.ai_protocol))>=0)
++   { sendto(s,buf,strlen(buf),0,csaddr,cai.ai_addrlen);
+      rclose(s);
+      yell("Notified comsat:",buf);
+    }
+diff --git a/src/network.h b/src/network.h
+index d7d08f2..b09b6c4 100644
+--- a/src/network.h
++++ b/src/network.h
+@@ -1,19 +1,13 @@
+ /*$Id: network.h,v 1.7 1997/04/02 03:15:41 srb Exp $*/
+ 
+-#include <sys/socket.h>			/* socket() sendto() AF_INET
++#include <sys/socket.h>			/* socket() sendto() */
+ 					/* SOCK_DGRAM */
+-#include <netdb.h>			/* gethostbyname() getservbyname()
+-					/* getprotobyname() */
+-#include <netinet/in.h>			/* htons() struct sockaddr_in */
++#include <netdb.h>			/* getaddrinfo() */
+ 
+ #ifndef BIFF_serviceport
+ #define BIFF_serviceport	COMSATservice
+ #endif
+ 
+-#ifndef h_0addr_list
+-#define h_0addr_list	h_addr_list[0]		      /* POSIX struct member */
+-#endif
+-
+ #ifndef NO_const      /* since network.h is outside the autoconf const check */
+ #ifdef const		    /* loop, we need this backcheck for some systems */
+ #undef const
diff --git a/procmail-3.22-rhconfig.patch b/procmail-3.22-rhconfig.patch
new file mode 100644
index 0000000..3b7a8b7
--- /dev/null
+++ b/procmail-3.22-rhconfig.patch
@@ -0,0 +1,97 @@
+--- procmail-3.22/Makefile.rhconfig	2001-09-10 22:53:09.000000000 -0600
++++ procmail-3.22/Makefile	2003-09-12 07:44:34.000000000 -0600
+@@ -23,7 +23,7 @@
+ 
+ # Uncomment to install compressed man pages (possibly add extra suffix
+ # to the definitions of MAN?DIR and/or MAN?SUFFIX by hand)
+-#MANCOMPRESS = compress
++# MANCOMPRESS = compress
+ 
+ ############################*#
+ # Things that can be made are:
+@@ -55,7 +55,7 @@
+ 
+ LOCKINGTEST=__defaults__
+ 
+-#LOCKINGTEST=/tmp .	# Uncomment and add any directories you see fit.
++LOCKINGTEST=/tmp .	# Uncomment and add any directories you see fit.
+ #			If LOCKINGTEST is defined, autoconf will NOT
+ #			prompt you to enter additional directories.
+ #			See INSTALL for more information about the
+@@ -65,7 +65,7 @@
+ # Only edit below this line if you *think* you know what you are doing #
+ ########################################################################
+ 
+-#LOCKINGTEST=100	# Uncomment (and change) if you think you know
++LOCKINGTEST=100	# Uncomment (and change) if you think you know
+ #			it better than the autoconf lockingtests.
+ #			This will cause the lockingtests to be hotwired.
+ #			100	to enable fcntl()
+@@ -74,8 +74,8 @@
+ #			Or them together to get the desired combination.
+ 
+ # Optional system libraries we search for
+-SEARCHLIBS = -lm -ldir -lx -lsocket -lnet -linet -lnsl_s -lnsl_i -lnsl -lsun \
+- -lgen -lsockdns -ldl
++SEARCHLIBS = -lm -ldir -lx -lsocket -lnet -linet -lnsl_s -lnsl_i -lsun \
++ -lgen -lsockdns
+ #			-lresolv	# not really needed, is it?
+ 
+ # Informal list of directories where we look for the libraries in SEARCHLIBS
+@@ -86,8 +86,8 @@
+  #-Wimplicit -Wshadow -Wid-clash-6 #-Wuninitialized
+ 
+ # The place to put your favourite extra cc flag
+-CFLAGS0 = -O #$(GCC_WARNINGS)
+-LDFLAGS0= -s
++CFLAGS0 = $(RPM_OPT_FLAGS) #$(GCC_WARNINGS)
++LDFLAGS0= 
+ # Read my libs :-)
+ LIBS=
+ 
+--- procmail-3.22/config.h.rhconfig	2001-09-10 22:53:50.000000000 -0600
++++ procmail-3.22/config.h	2003-09-12 07:41:40.000000000 -0600
+@@ -35,7 +35,8 @@
+  */
+ /*#define DEFSPATH	"PATH=/bin:/usr/bin"			/* */
+ /*#define DEFPATH	"PATH=$HOME/bin:/bin:/usr/bin"		/* */
+-
++#define DEFPATH	"PATH=$HOME/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin"		/* */
++ 
+ /* every environment variable appearing in PRESTENV will be set or wiped
+  * out of the environment (variables without an '=' sign will be thrown
+  * out), e.g. you could define PRESTENV as follows:
+@@ -46,13 +47,13 @@
+  */
+ #define PRESTENV	{"IFS","ENV","PWD",0}
+ 
+-/*#define GROUP_PER_USER			/* uncomment this if each
++#define GROUP_PER_USER			/* uncomment this if each
+ 						   user has his or her own
+ 	group and procmail can therefore trust a $HOME/.procmailrc that
+ 	is group writable or contained in a group writable home directory
+ 	if the group involved is the user's default group. */
+ 
+-/*#define LMTP					/* uncomment this if you
++#define LMTP					/* uncomment this if you
+ 						   want to use procmail
+ 	as an LMTP (rfc2033) server, presumably for invocation by an MTA.
+ 	The file examples/local_procmail_lmtp.m4 contains info on how to
+@@ -79,7 +80,7 @@
+ 
+ /*#define NO_fcntl_LOCK		/* uncomment any of these three if you	     */
+ /*#define NO_lockf_LOCK		/* definitely do not want procmail to make   */
+-/*#define NO_flock_LOCK		/* use of those kernel-locking methods	     */
++#define NO_flock_LOCK		/* use of those kernel-locking methods	     */
+ 				/* If you set LOCKINGTEST to a binary number
+ 	than there's no need to set these.  These #defines are only useful
+ 	if you want to disable particular locking styles but are unsure which
+@@ -91,7 +92,7 @@
+ 	mail present.  procmail automatically suppresses this when it isn't
+ 	needed or under heavy load. */
+ 
+-/*#define DEFsendmail	"/usr/sbin/sendmail"	/* uncomment and/or change if
++#define DEFsendmail	"/usr/sbin/sendmail"	/* uncomment and/or change if
+ 						   the autoconfigured default
+ 	SENDMAIL is not suitable.  This program should quack like a sendmail:
+ 	it should accept the -oi flag (to tell it to _not_ treat a line
diff --git a/procmail-3.22-truncate.patch b/procmail-3.22-truncate.patch
new file mode 100644
index 0000000..c06cde3
--- /dev/null
+++ b/procmail-3.22-truncate.patch
@@ -0,0 +1,47 @@
+--- procmail-3.22/src/mailfold.c.truncate	2007-03-27 13:24:05.000000000 +0200
++++ procmail-3.22/src/mailfold.c	2007-03-27 13:25:06.000000000 +0200
+@@ -30,6 +30,7 @@
+ 
+ int logopened,rawnonl;
+ off_t lasttell;
++static int trunced;
+ static long lastdump;
+ static volatile int mailread;	/* if the mail is completely read in already */
+ static struct dyna_array confield;		  /* escapes, concatenations */
+@@ -81,6 +82,7 @@
+  long len;
+ { int i;long part;
+   lasttell=i= -1;SETerrno(EBADF);
++  trunced=0;
+   if(s>=0)
+    { if(ft_lock(type)&&(lseek(s,(off_t)0,SEEK_END),fdlock(s)))
+ 	nlog("Kernel-lock failed\n");
+@@ -120,13 +122,18 @@
+       }
+ writefin:
+      i=type!=ft_PIPE&&fsync(s)&&errno!=EINVAL;	  /* EINVAL => wasn't a file */
++     if ((i||len)&&lasttell>=0)
++      { int serrno=errno;
++	if(!ftruncate(s,lasttell)) trunced=1;
++	SETerrno(serrno);
++      }
+      if(ft_lock(type))
+       { int serrno=errno;		       /* save any error information */
+ 	if(fdunlock())
+ 	   nlog("Kernel-unlock failed\n");
+ 	SETerrno(serrno);
+       }
+-     i=rclose(s)||i;
++     i=rclose(s)||i; /* if this fails, we should truncate, but it's too late */
+    }			   /* return an error even if nothing was to be sent */
+   return i&&!len?-1:len;
+ }
+@@ -237,7 +244,7 @@
+ #endif
+ 	      default:writeerr(buf);
+ 	    }
+-	   if(lasttell>=0&&!truncate(boxname,lasttell)&&(logopened||verbose))
++	   if(lasttell>=0&&trunced&&(logopened||verbose))
+ 	      nlog("Truncated file to former size\n");	    /* undo garbage */
+ ret0:	   return 0;
+ 	 }
diff --git a/procmail.spec b/procmail.spec
new file mode 100644
index 0000000..86d53ce
--- /dev/null
+++ b/procmail.spec
@@ -0,0 +1,323 @@
+# hardened build if not overridden
+%{!?_hardened_build:%global _hardened_build 1}
+
+%if %{?_hardened_build}%{!?_hardened_build:0}
+%global hardened_flags -pie -Wl,-z,relro,-z,now
+%endif
+
+Summary: Mail processing program
+Name: procmail
+Version: 3.22
+Release: 53%{?dist}
+License: GPLv2+ or Artistic
+# Source: ftp://ftp.procmail.org/pub/procmail/procmail-%{version}.tar.gz
+# The original source doesn't seem to be available anymore, using mirror
+Source: ftp://ftp.ucsb.edu/pub/mirrors/procmail/procmail-%{version}.tar.gz
+# Source2: http://www.linux.org.uk/~telsa/BitsAndPieces/procmailrc
+# The Telsa config file doesn't seem to be available anymore, using local copy
+Source2: procmailrc
+URL: http://www.procmail.org
+Patch0: procmail-3.22-rhconfig.patch
+Patch1: procmail-3.15.1-man.patch
+Patch2: procmail_3.22-8.debian.patch
+Patch4: procmail-3.22-truncate.patch
+Patch5: procmail-3.22-ipv6.patch
+Patch6: procmail-3.22-getline.patch
+Patch7: procmail-3.22-CVE-2014-3618.patch
+Patch8: procmail-3.22-crash-fix.patch
+Patch9: procmail-3.22-CVE-2017-16844.patch
+Patch10: procmail-3.22-coverity-scan-fixes.patch
+BuildRequires: gcc
+
+%description
+Procmail can be used to create mail-servers, mailing lists, sort your
+incoming mail into separate folders/files (real convenient when subscribing
+to one or more mailing lists or for prioritising your mail), preprocess
+your mail, start any programs upon mail arrival (e.g. to generate different
+chimes on your workstation for different types of mail) or selectively
+forward certain incoming mail automatically to someone.
+
+%prep
+%setup -q
+%patch0 -p1 -b .rhconfig
+%patch1 -p1
+%patch2 -p1
+%patch4 -p1 -b .truncate
+%patch5 -p1 -b .ipv6
+%patch6 -p1 -b .getline
+%patch7 -p1 -b .CVE-2014-3618
+%patch8 -p1 -b .crash-fix
+%patch9 -p1 -b .CVE-2017-16844
+%patch10 -p1 -b .coverity-scan-fixes
+
+find examples -type f | xargs chmod 644
+
+%build
+make RPM_OPT_FLAGS="$(getconf LFS_CFLAGS)" autoconf.h
+make RPM_OPT_FLAGS="$RPM_OPT_FLAGS %{?hardened_flags} -Wno-comments $(getconf LFS_CFLAGS)"
+
+%install
+rm -rf ${RPM_BUILD_ROOT}
+mkdir -p ${RPM_BUILD_ROOT}%{_bindir}
+mkdir -p ${RPM_BUILD_ROOT}%{_mandir}/man{1,5}
+
+make \
+    BASENAME=${RPM_BUILD_ROOT}%{_prefix} MANDIR=${RPM_BUILD_ROOT}%{_mandir} \
+    install
+
+cp debian/mailstat.1 ${RPM_BUILD_ROOT}%{_mandir}/man1
+cp -p %{SOURCE2} telsas_procmailrc
+
+
+%files
+%doc Artistic COPYING FAQ FEATURES HISTORY README KNOWN_BUGS examples telsas_procmailrc debian/QuickStart debian/README.Maildir
+
+%{_bindir}/formail
+%attr(2755,root,mail) %{_bindir}/lockfile
+%{_bindir}/mailstat
+%attr(0755,root,mail) %{_bindir}/procmail
+
+%{_mandir}/man[15]/*
+
+%changelog
+* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.22-53
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.22-52
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.22-51
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.22-50
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Thu Dec  6 2018 Jaroslav Škarvada <jskarvad@redhat.com> - 3.22-49
+- Fixed issues found by Coverity Scan
+
+* Fri Jul 20 2018 Jaroslav Škarvada <jskarvad@redhat.com> - 3.22-48
+- Fixed FTBFS by adding gcc requirement
+  Resolves: rhbz#1606850
+
+* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.22-47
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.22-46
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Tue Nov 21 2017 Jaroslav Škarvada <jskarvad@redhat.com> - 3.22-45
+- Renamed loadbuf-fix patch to CVE-2017-16844, because it got CVE number
+
+* Tue Oct 10 2017 Jaroslav Škarvada <jskarvad@redhat.com> - 3.22-44
+- Fixed possible buffer overflow in loadbuf function
+  Resolves: rhbz#1500071
+
+* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.22-43
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
+
+* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.22-42
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Wed Mar 22 2017 Jaroslav Škarvada <jskarvad@redhat.com> - 3.22-41
+- Fixed some more conditional jumps that depended on uninitialized values
+
+* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.22-40
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 3.22-39
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
+
+* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.22-38
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Thu Mar 19 2015 Jaroslav Škarvada <jskarvad@redhat.com> - 3.22-37
+- Fixed more buffer overflows and memory corruptions (by crash-fix patch)
+
+* Thu Sep  4 2014 Jaroslav Škarvada <jskarvad@redhat.com> - 3.22-36
+- Fixed buffer overflow in formail
+  Resolves: CVE-2014-3618
+
+* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.22-35
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
+
+* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.22-34
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.22-33
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
+
+* Mon Feb  4 2013 Jaroslav Škarvada <jskarvad@redhat.com> - 3.22-32
+- Updated sources URLs
+
+* Tue Sep  4 2012 Jaroslav Škarvada <jskarvad@redhat.com> - 3.22-31
+- Hardened build with PIE and full RELRO
+  Resolves: rhbz#853186
+
+* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.22-30
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Mon Jan 16 2012 Jaroslav Škarvada <jskarvad@redhat.com> - 3.22-29
+- Rebuilt without NO_NFS_ATIME_HACK
+  Resolves: rhbz#666383
+
+* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.22-28
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
+
+* Fri Nov 25 2011 Jaroslav Škarvada <jskarvad@redhat.com> - 3.22-27
+- Defuzzification of ipv6 patch
+
+* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.22-26
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+
+* Sun Jul 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.22-25
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
+
+* Tue Jun 30 2009 Miroslav Lichvar <mlichvar@redhat.com> 3.22-24
+- rename getline to avoid conflict with glibc (#505977)
+- add -Wno-comments to CFLAGS
+- remove package name from summary
+
+* Thu Feb 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.22-23
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
+
+* Mon Aug 04 2008 Miroslav Lichvar <mlichvar@redhat.com> 3.22-22
+- fix building on sh (CHIKAMA Masaki) (#447658)
+
+* Tue Feb 19 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 3.22-21
+- Autorebuild for GCC 4.3
+
+* Wed Aug 22 2007 Miroslav Lichvar <mlichvar@redhat.com> 3.22-20
+- update license tag
+
+* Tue Mar 27 2007 Miroslav Lichvar <mlichvar@redhat.com> 3.22-19
+- fix description (#234098)
+- spec cleanup
+
+* Fri Oct 27 2006 Miroslav Lichvar <mlichvar@redhat.com> 3.22-18
+- add IPv6 support to comsat notification (#198403)
+- package man page for mailstat
+- change mail spool directory to /var/spool/mail
+
+* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 3.22-17.1
+- rebuild
+
+* Thu Mar 30 2006 Peter Vrabec <pvrabec@redhat.com> 3.22-17
+- fix truncation of mailbox when running into a disk quota or a
+  full partition. Patch from Solar Designer.
+
+* Fri Feb 10 2006 Jesse Keating <jkeating@redhat.com> - 3.22-16.2.1
+- bump again for double-long bug on ppc(64)
+
+* Tue Feb 07 2006 Jesse Keating <jkeating@redhat.com> - 3.22-16.2
+- rebuilt for new gcc4.1 snapshot and glibc changes
+
+* Fri Dec 09 2005 Jesse Keating <jkeating@redhat.com>
+- rebuilt
+
+* Fri Mar 18 2005 Peter Vrabec <pvrabec@redhat.com> 3.22-16
+- rebuilt
+
+* Mon Nov  8 2004 Martin Stransky <stransky@redhat.com> 3.22-15
+- add largefiles patch to support 64-bit file I/O
+
+* Tue Jun 15 2004 Elliot Lee <sopwith@redhat.com>
+- rebuilt
+
+* Fri Feb 13 2004 Elliot Lee <sopwith@redhat.com>
+- rebuilt
+
+* Tue Jan  6 2004 Jens Petersen <petersen@redhat.com> - 3.22-12
+- apply procmail_3.22-8.debian.patch from Debian (fixes #79691)
+
+* Mon Sep 22 2003 Florian La Roche <Florian.LaRoche@redhat.de>
+- do not link against -ldl and -lnsl
+
+* Wed Jun 04 2003 Elliot Lee <sopwith@redhat.com>
+- rebuilt
+
+* Wed Jan 22 2003 Tim Powers <timp@redhat.com>
+- rebuilt
+
+* Tue Dec 17 2002 Jens Petersen <petersen@redhat.com>
+- convert changelog to utf8
+
+* Wed Dec 11 2002 Tim Powers <timp@redhat.com> 3.22-8
+- rebuild on all arches
+
+* Fri Jun 21 2002 Tim Powers <timp@redhat.com>
+- automated rebuild
+
+* Thu May 23 2002 Tim Powers <timp@redhat.com>
+- automated rebuild
+
+* Mon Mar 25 2002 Trond Eivind Glomsrød <teg@redhat.com> 3.22-5
+- Updated Telss's procmailrc file (#61872)
+
+* Thu Mar 14 2002 Trond Eivind Glomsrød <teg@redhat.com> 3.22-4
+- Add Telsa Gwynne's procmailrc as a doc file - it's
+  excellently commented, and is a great example
+
+* Wed Feb 27 2002 Trond Eivind Glomsrød <teg@redhat.com> 3.22-3
+- Rebuild
+
+* Wed Jan 09 2002 Tim Powers <timp@redhat.com>
+- automated rebuild
+
+* Wed Sep 12 2001 Trond Eivind Glomsrød <teg@redhat.com> 3.22-1
+- 3.22
+
+* Sat Jun 30 2001 Trond Eivind Glomsrød <teg@redhat.com>
+- 3.21
+
+* Fri Jun 29 2001 Trond Eivind Glomsrød <teg@redhat.com>
+- 3.20
+- Enable LMTP
+
+* Thu Apr 12 2001 Trond Eivind Glomsrød <teg@redhat.com>
+- Change to "License: GPL or artistic" from "Copyright: distributable"
+- Fix man page (#35825)
+- 3.15.1
+- redo config patch
+
+* Sat Jan  6 2001 Jeff Johnson <jbj@redhat.com>
+- lose setuid/setgid (root,mail) bits (#23257).
+
+* Fri Aug 11 2000 Jeff Johnson <jbj@redhat.com>
+- add space in delivery rules with '!' (#15947).
+
+* Wed Jul 12 2000 Prospector <bugzilla@redhat.com>
+- automatic rebuild
+
+* Thu Jun 15 2000 Jeff Johnson <jbj@redhat.com>
+- FHS packaging.
+
+* Mon Feb  7 2000 Jeff Johnson <jbj@redhat.com>
+- compress man pages.
+
+* Fri Jan 14 2000 Jeff Johnson <jbj@redhat.com>
+- update to 3.14.
+
+* Mon Aug 16 1999 Bill Nottingham <notting@redhat.com>
+- fix doc perms.
+
+* Wed Apr 21 1999 Cristian Gafton <gafton@redhat.com>
+- turn on GROUP_PER_USER
+- add some docs to the package
+
+* Mon Apr 05 1999 Cristian Gafton <gafton@redhat.com>
+- version 3.13
+
+* Fri Mar 26 1999 Cristian Gafton <gafton@redhat.com>
+- fixed Group line
+
+* Sun Mar 21 1999 Cristian Gafton <gafton@redhat.com> 
+- auto rebuild in the new build environment (release 16)
+
+* Sun Aug 16 1998 Jeff Johnson <jbj@redhat.com>
+- build root
+
+* Mon Apr 27 1998 Prospector System <bugs@redhat.com>
+- translations modified for de, fr, tr
+
+* Thu Jun 19 1997 Erik Troan <ewt@redhat.com>
+- built against glibc
diff --git a/procmail_3.22-8.debian.patch b/procmail_3.22-8.debian.patch
new file mode 100644
index 0000000..78079d6
--- /dev/null
+++ b/procmail_3.22-8.debian.patch
@@ -0,0 +1,950 @@
+--- procmail-3.22.orig/examples/advanced
++++ procmail-3.22/examples/advanced
+@@ -251,14 +251,14 @@
+    --------------------------------------------------------
+ 
+ There are many different reasons why more and more sites decide not to
+-store mail in /usr/spool/mail or /usr/mail anymore.
++store mail in /var/spool/mail or /var/mail anymore.
+ Some of the obvious advantages when storing mail in the recipient's home
+ directory are:
+ 	- Mail is automatically subject to the user's quota limitations.
+ 	- Often there is more room on the home partition(s) than on that
+-	  one /usr/mail partition.
++	  one /var/mail partition.
+ 
+-The quota limitations also apply to /usr/spool/mail or /usr/mail if procmail
++The quota limitations also apply to /var/spool/mail or /var/mail if procmail
+ does the delivery.  These quota limitations often do not work with the
+ regular /bin/mail since that usually writes the mailbox with root permissions
+ (eluding the quota restrictions).
+@@ -276,7 +276,7 @@
+ 	defined SYSTEM_MBOX to be.  Some braindamaged mail programs
+ 	do not pick up the MAIL environment variable, these either
+ 	have to be patched/recompiled or you have to create symbolic
+-	links in /usr/mail to every person's new mailbox.
++	links in /var/mail to every person's new mailbox.
+ 
+ 				---
+ 
+--- procmail-3.22.orig/man/procmail.man
++++ procmail-3.22/man/procmail.man
+@@ -166,7 +166,8 @@
+ accept an unlimited number of arguments.@ETCRCS_desc@
+ For some advanced usage of this option you should look in the
+ .B EXAMPLES
+-section below.@LMTPOPTdesc@.SH ARGUMENTS
++section below.@LMTPOPTdesc@
++.SH ARGUMENTS
+ Any arguments containing an '=' are considered to be environment variable
+ assignments, they will
+ .I all
+@@ -723,6 +724,15 @@
+ .fi
+ .ad
+ .PP
++Some mailers (notably exim) do not currently accept the above syntax.
++In such case use this instead:
++.PP
++.na
++.nf
++|/usr/bin/procmail
++.fi
++.ad
++.PP
+ 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/@DOT_FORWARD@ file (in which case the following script could
+@@ -754,7 +764,7 @@
+ .SS "A sample small @PROCMAILRC@:"
+ .na
+ .nf
+-PATH=/bin:/usr/bin:@BINDIR@
++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
+--- procmail-3.22.orig/man/procmailrc.man
++++ procmail-3.22/man/procmailrc.man
+@@ -779,7 +779,7 @@
+ .PP
+ Some non-optimal and non-obvious regexps set MATCH to an incorrect
+ value.  The regexp can be made to work by removing one or more unneeded
+-'*', '+', or '?' operator on the left-hand side of the \e/ token.
++\&'*', '+', or '?' operator on the left-hand side of the \e/ token.
+ .SH MISCELLANEOUS
+ If the regular expression contains `\fB@TO_key@\fP' it will be substituted by
+ .na
+--- procmail-3.22.orig/src/comsat.c
++++ procmail-3.22/src/comsat.c
+@@ -92,7 +92,7 @@
+    }
+   if(newvalid)						  /* so far, so good */
+    { int s;
+-     if(!*chp)						       /* no service */
++     if(!chad||!*chp)					       /* no service */
+ 	chp=BIFF_serviceport;				/* new balls please! */
+      s=strtol(chp,&chad,10);
+      if(chp!=chad)			       /* the service is not numeric */
+@@ -120,7 +120,7 @@
+ { int s;const char*p;
+   if(!csvalid||!buf)		  /* is comat on and set to a valid address? */
+      return;
+-  if(!*cslgname||strlen(cslgname)+2>linebuf)	       /* is $LOGNAME bogus? */
++  if(!cslgname||!*cslgname||strlen(cslgname)+2>linebuf)/* is $LOGNAME bogus? */
+      return;
+   if(!(p=folder?folder:cslastf))		     /* do we have a folder? */
+      return;
+--- procmail-3.22.orig/src/formail.c
++++ procmail-3.22/src/formail.c
+@@ -758,9 +758,9 @@
+ 	lputssn(buf,buffilled),ctlength-=buffilled,buffilled=lnl=0;
+      ;{ int tbl=buflast,lwr='\n';
+ 	while(--ctlength>=0&&tbl!=EOF)	       /* skip Content-Length: bytes */
+-	   lnl=lwr==tbl&&lwr=='\n',putcs(lwr=tbl),tbl=getchar();
++	   lnl=lwr==tbl&&lwr=='\n',lputcs(lwr=tbl),tbl=getchar();
+ 	if((buflast=tbl)=='\n'&&lwr!=tbl)	/* just before a line break? */
+-	   putcs('\n'),buflast=getchar();		/* wrap up loose end */
++	   lputcs('\n'),buflast=getchar();		/* wrap up loose end */
+       }
+      if(!quiet&&ctlength>0)
+       { charNUM(num,ctlength);
+--- procmail-3.22.orig/src/memblk.c
++++ procmail-3.22/src/memblk.c
+@@ -51,11 +51,11 @@
+ {
+ #ifdef USE_MMAP
+   if(mb->fd>=0)
+-   { long len=mb->len+1;
+-     if(munmap(mb->p,len))
+-	mmapfailed(len);		      /* don't want to continue here */
+-     if((mb->p=mmap(0,len,PROT_READ,MAP_PRIVATE,mb->fd,(off_t)0))==MAP_FAILED)
+-	mmapfailed(len);
++   { long mlen=mb->len+1;
++     if(munmap(mb->p,mlen))
++	mmapfailed(mlen);		      /* don't want to continue here */
++     if((mb->p=mmap(0,mlen,PROT_READ,MAP_PRIVATE,mb->fd,(off_t)0))==MAP_FAILED)
++	mmapfailed(mlen);
+      close(mb->fd);
+      mb->fd=ropen(devnull,O_RDWR,0);		/* XXX Perhaps -1 is better? */
+    }
+@@ -77,8 +77,8 @@
+      strcpy(filename,MMAP_DIR);
+      if(unique(filename,strchr(filename,'\0'),MMAP_FILE_LEN,MMAP_PERM,0,0)&&
+ 	(mb->fd=ropen(filename,O_RDWR,MMAP_PERM),unlink(filename),mb->fd>=0))
+-      { mb->filelen=len;
+-	if(lseek(mb->fd,mb->filelen-1,SEEK_SET)<0||1!=rwrite(mb->fd,empty,1))
++      { mb->filelen=len+1;
++	if(lseek(mb->fd,len,SEEK_SET)<0||1!=rwrite(mb->fd,empty,1))
+ dropf:	 { close(mb->fd);mb->fd= -1;
+ 	   if(verbose)nlog("Unable to extend or use tempfile");
+ 	 }
+@@ -98,9 +98,9 @@
+       }
+    }
+   if(mb->fd>=0)
+-   { if(len>mb->filelen)				  /* need to extend? */
+-      { mb->filelen=len;
+-	if(lseek(mb->fd,mb->filelen-1,SEEK_SET)<0||1!=rwrite(mb->fd,empty,1))
++   { if(len>=mb->filelen)				  /* need to extend? */
++      { mb->filelen=len+1;
++	if(lseek(mb->fd,len,SEEK_SET)<0||1!=rwrite(mb->fd,empty,1))
+ 	 { char*p=malloc(len+1);	   /* can't extend, switch to malloc */
+ 	   tmemmove(p,mb->p,mb->len);
+ 	   munmap(mb->p,mb->len+1);
+@@ -124,9 +124,9 @@
+    }
+   else
+      mb->p=realloc(mb->p,len+1);
+-  mb->len=len+1;
+-  mb->p[len]='\0';
++  mb->len=len;
+ ret1:
++  mb->p[len]='\0';
+   return 1;
+ }
+ 
+--- procmail-3.22.orig/src/autoconf
++++ procmail-3.22/src/autoconf
+@@ -1470,15 +1470,14 @@
+  grep 'Mlocal.*procmail' >$DEVNULL ||
+  echo '#define CF_no_procmail_yet' >>$ACONF
+ 
+-cat /usr/lib/sendmail.cf /etc/sendmail.cf /etc/mail/sendmail.cf 2>$DEVNULL |
+- grep '^V' >$DEVNULL ||
+- echo '#define buggy_SENDMAIL' >>$ACONF
++# cat /usr/lib/sendmail.cf /etc/sendmail.cf /etc/mail/sendmail.cf 2>$DEVNULL |
++#  grep '^V' >$DEVNULL ||
++#  echo '#define buggy_SENDMAIL' >>$ACONF
+ 
+ lpath='/bin'
+ bins="/bin"
+ 
+-for newd in /usr/bin /usr/ucb /usr/5bin $BINDIR /local/bin /usr/local/bin \
+- /global/bin /usr/bin/X11 /usr/X*/bin
++for newd in /usr/bin $BINDIR /usr/bin/X11 /usr/X*/bin
+ do
+   if test -d $newd
+   then
+--- procmail-3.22.orig/src/procmail.c
++++ procmail-3.22/src/procmail.c
+@@ -652,8 +652,7 @@
+ 	      nrcond= -1;
+ 	   if(tolock)		 /* clear temporary buffer for lockfile name */
+ 	      free(tolock);
+-	   for(i=maxindex(flags);i;i--)			  /* clear the flags */
+-	      flags[i]=0;
++	   bbzero(flags,sizeof(flags));		  /* clear the flags */
+ 	   for(tolock=0,locknext=0;;)
+ 	    { chp=skpspace(chp);
+ 	      switch(i= *chp++)
+--- procmail-3.22.orig/src/pipes.c
++++ procmail-3.22/src/pipes.c
+@@ -145,7 +145,9 @@
+   if(Stdout)
+    { *(eq=strchr(Stdout,'\0')-1)='\0';			     /* chop the '=' */
+      if(!(backblock=getenv(Stdout)))			/* no current value? */
+-	PRDB=PWRB= -1;
++      { PRDB=PWRB= -1;
++	backlen=0;
++      }
+      else
+       { backlen=strlen(backblock);
+ 	goto pip;
+@@ -155,9 +157,7 @@
+ pip: rpipe(pbackfd);
+   rpipe(pinfd);						 /* main pipes setup */
+   if(!(pidchild=sfork()))			/* create a sending procmail */
+-   { if(Stdout&&backblock)
+-	backlen=strlen(backblock);
+-     else
++   { if(!Stdout)
+ 	backblock=source,backlen=len;
+      childsetup();rclose(PRDI);rclose(PRDB);
+      rpipe(poutfd);rclose(STDOUT);
+@@ -194,7 +194,7 @@
+      makeblock(&temp,Stdfilled);
+      tmemmove(temp.p,Stdout,Stdfilled);
+      readdyn(&temp,&Stdfilled,Stdfilled+backlen+1);
+-     Stdout=realloc(Stdout,&Stdfilled+1);
++     Stdout=realloc(Stdout,Stdfilled+1);
+      tmemmove(Stdout,temp.p,Stdfilled+1);
+      freeblock(&temp);
+      retStdout(Stdout,pwait&&pipw,!backblock);
+--- procmail-3.22.orig/src/memblk.h
++++ procmail-3.22/src/memblk.h
+@@ -1,6 +1,6 @@
+ typedef struct memblk {
+     char*p;						  /* where it starts */
+-    long len;					 /* currently allocated size */
++    long len;			 /* current size, not including trailing NUL */
+ #ifdef USE_MMAP
+     off_t filelen;				     /* how long is the file */
+     int fd;					   /* file which is mmap()ed */
+--- procmail-3.22.orig/src/manconf.c
++++ procmail-3.22/src/manconf.c
+@@ -233,7 +233,7 @@
+  \2-@PRESERVOPT@\1and\1.BR \2-@FROMWHOPT@ .\1");
+   pc("LMTPOPT",LMTPOPT);
+ #else
+-  ps("LMTPOPTdesc","");ps("LMTPusage","");
++  ps("LMTPOPTdesc","");ps("LMTPusage","\1");
+ #endif
+   pname("INIT_UMASK",0);printf("0%lo/g\n",(unsigned long)INIT_UMASK);lines--;
+   pn("DEFlinebuf",DEFlinebuf);
+--- procmail-3.22.orig/src/recommend.c
++++ procmail-3.22/src/recommend.c
+@@ -47,7 +47,7 @@
+      printf("chmod %lo %s\n",(unsigned long)(sgid|PERMIS),argv[2]);
+   else if(chmdir==1)
+      goto nogchmod;
+-  if(chmdir)
++  if(0)
+      printf("chmod %c+w %s/.\n",chmdir==1?'g':'a',mailspooldir);
+ nogchmod:
+   return EXIT_SUCCESS;
+--- procmail-3.22.orig/src/foldinfo.h
++++ procmail-3.22/src/foldinfo.h
+@@ -10,7 +10,7 @@
+ 
+ #define ft_lock(type)	   ((type)>ft_MAILDIR)		   /* kernel lock fd */
+ #define ft_atime(type)	   ((type)==ft_FILE)	      /* force atime < mtime */
+-#define ft_dotlock(type)   ((type)==ft_FILE)		 /* dotlock $DEFAULT */
++#define ft_dotlock(type)   ((type)>ft_MAILDIR)		 /* dotlock $DEFAULT */
+ #define ft_delim(type)	   ((type)==ft_FILE)		   /* add MMDF delim */
+ #define ft_checkcloser(type) ((type)>ft_MH)
+ #define ft_forceblank(type) ((type)!=ft_MAILDIR)  /* force blank line at end */
+--- procmail-3.22.orig/src/mailfold.c
++++ procmail-3.22/src/mailfold.c
+@@ -378,7 +378,8 @@
+ 	dfilled=mailread=0;
+      else if(rhead)				/* only read in a new header */
+       { memblk new;
+-	dfilled=mailread=0;makeblock(&new,0);readdyn(&new,&dfilled,0);
++	dfilled=mailread=0;makeblock(&new,0);
++	readdyn(&new,&dfilled,thebody-themail.p);
+ 	if(tobesent>dfilled&&isprivate)		     /* put it in place here */
+ 	 { tmemmove(themail.p+dfilled,thebody,filled-=tobesent);
+ 	   tmemmove(themail.p,new.p,dfilled);
+--- procmail-3.22.orig/FAQ
++++ procmail-3.22/FAQ
+@@ -57,8 +57,8 @@
+ 		Forward to |/usr/bin/procmail
+ 	or if that doesn't work, try:
+ 		Pipe to /usr/bin/procmail
+-	as the only line in your mail spool file (e.g. /usr/mail/$LOGNAME), as
+-	well as doing a "chmod 06660 /usr/mail/$LOGNAME".  For more information
++	as the only line in your mail spool file (e.g. /var/mail/$LOGNAME), as
++	well as doing a "chmod 06660 /var/mail/$LOGNAME".  For more information
+ 	on such systems, do a "man mail".
+ 
+ 	If all of this doesn't work, procmail can be called on a periodical
+@@ -210,14 +210,14 @@
+ 	procmail with both the fcntl() and lockf() locking method
+ 	disabled (see config.h).
+ 
+-17. I sometimes get these `Lock failure on "/usr/mail/$LOGNAME.lock"' errors
++17. I sometimes get these `Lock failure on "/var/mail/$LOGNAME.lock"' errors
+     from procmail.  What do I do about it?
+ 
+ 	The problem here is that as long as procmail has not read a
+ 	$HOME/.procmailrc file, it can hang on to the sgid mail permission
+-	(which it needs in order to create a lockfile in /usr/mail).
++	(which it needs in order to create a lockfile in /var/mail).
+ 	I.e. if procmail delivers mail to a user without a $HOME/.procmailrc
+-	file, procmail *can* (and does) use the /usr/mail/$LOGNAME.lock file.
++	file, procmail *can* (and does) use the /var/mail/$LOGNAME.lock file.
+ 
+ 	If, however, it finds a $HOME/.procmailrc file, procmail has to let go
+ 	of the sgid mail permission because otherwise any ordinary user could
+@@ -226,7 +226,7 @@
+ 	There are several solutions to this problem:
+ 	- Some systems support the sticky bit on directories (when set only
+ 	  allows the owner of a file in that directory to rename or remove
+-	  it).	This enables you to make /usr/spool/mail drwxrwxrwt.  It is
++	  it).	This enables you to make /var/mail drwxrwxrwt.  It is
+ 	  thus effectively world writable, but all the mailboxes in it are
+ 	  protected because only the mailbox owner can remove or rename it.
+ 	- If your system did not exhibit the !@#$%^&* POSIX semantics for
+@@ -245,9 +245,9 @@
+ 			:0
+ 			$DEFAULT
+ 
+-	- You could, instead of using /usr/mail/$LOGNAME, use a file below
++	- You could, instead of using /var/mail/$LOGNAME, use a file below
+ 	  your home directory as your default mailbox.
+-	- Or, you could still use /usr/mail/$LOGNAME as the mailbox, but
++	- Or, you could still use /var/mail/$LOGNAME as the mailbox, but
+ 	  simply instruct procmail to use a different lockfile.	 This can
+ 	  be achieved by putting following recipe at the bottom of
+ 	  your .procmailrc file:
+--- procmail-3.22.orig/Makefile
++++ procmail-3.22/Makefile
+@@ -79,7 +79,7 @@
+ #			-lresolv	# not really needed, is it?
+ 
+ # Informal list of directories where we look for the libraries in SEARCHLIBS
+-LIBPATHS=/lib /usr/lib /usr/local/lib
++LIBPATHS=/lib /usr/lib
+ 
+ GCC_WARNINGS = -O2 -pedantic -Wreturn-type -Wunused -Wformat -Wtraditional \
+  -Wpointer-arith -Wconversion -Waggregate-return \
+--- procmail-3.22.orig/debian/changelog
++++ procmail-3.22/debian/changelog
+@@ -0,0 +1,294 @@
++procmail (3.22-8) unstable; urgency=low
++
++  * Fixed strange formail -l behaviour when there is a Content-Length: header.
++    Thanks a lot to Henning Makholm for the patch (Closes: #217853).
++
++ -- Santiago Vila <sanvila@debian.org>  Mon,  3 Nov 2003 20:01:24 +0100
++
++procmail (3.22-7) unstable; urgency=low
++
++  * Fixed bad nroff syntax in procmailrc(5), closes: #147173.
++  * Added missing newline in procmail(1), closes: #180477.
++
++ -- Santiago Vila <sanvila@debian.org>  Mon, 10 Mar 2003 00:09:20 +0100
++
++procmail (3.22-6) unstable; urgency=low
++
++  * Standards-Version: 3.5.8.
++
++ -- Santiago Vila <sanvila@debian.org>  Thu, 26 Dec 2002 18:27:08 +0100
++
++procmail (3.22-5) stable; urgency=medium
++
++  * Patched pipes.c to fix a memory allocation bug (Closes: #171514).
++
++ -- Santiago Vila <sanvila@debian.org>  Thu, 26 Dec 2002 18:09:38 +0100
++
++procmail (3.22-4) unstable; urgency=low
++
++  * Fixed a typo in procmail(1). Patch by the author (Closes: #142983).
++
++ -- Santiago Vila <sanvila@debian.org>  Tue, 16 Apr 2002 19:16:20 +0200
++
++procmail (3.22-3) unstable; urgency=medium
++
++  * Fixed off-by-one bug in procmail.c which made the raw flag not to be
++    cleared properly. Thanks to Gregory Stark (Closes: #134341).
++
++ -- Santiago Vila <sanvila@debian.org>  Sun, 17 Feb 2002 16:43:02 +0100
++
++procmail (3.22-2) unstable; urgency=medium
++
++  * Modified mailfold.c to fix a segfault problem. Patch by the author.
++  * The system-wide mail directory is /var/mail as per policy.
++
++ -- Santiago Vila <sanvila@debian.org>  Thu, 29 Nov 2001 09:39:04 +0100
++
++procmail (3.22-1) unstable; urgency=low
++
++  * New upstream release, which uses the `standard' format for Maildir
++    filenames and retries on name collision. It also contains some
++    bug fixes from the 3.23pre snapshot dated 2001-09-13.
++  * Removed `sendmail' from the Recommends field, since we already
++    have `exim' (the default Debian MTA) and `mail-transport-agent'.
++  * Removed suidmanager support. Conflicts: suidmanager (<< 0.50).
++  * Added support for DEB_BUILD_OPTIONS in the source package.
++  * README.Maildir: Do not use locking on the example recipe,
++    since it's wrong to do so in this case.
++
++ -- Santiago Vila <sanvila@debian.org>  Wed, 21 Nov 2001 09:40:20 +0100
++
++procmail (3.15.2-1) stable; urgency=high
++
++  * New upstream release, with improved security and robustness involving
++    signal handlers. Author recommends upgrading to this version on
++    any system where it is installed setuid or setgid.
++  * This release fixes also Bug #108417: procmail -p -m resets PATH.
++
++ -- Santiago Vila <sanvila@debian.org>  Thu, 30 Aug 2001 20:05:06 +0200
++
++procmail (3.15.1-4) unstable; urgency=low
++
++  * Don't add an extra newline when delivering to a Maildir folder.
++    Please note that the MTA may still add a newline on their own.
++    Exim users should check the `suffix' variable, for example.
++    Patch by the author. Closes: #78623.
++
++ -- Santiago Vila <sanvila@debian.org>  Sat, 14 Apr 2001 17:18:29 +0200
++
++procmail (3.15.1-3) unstable; urgency=low
++
++  * Clarified formail -X behaviour, patch by the author (Closes: #77388).
++  * Updated QuickStart.
++
++ -- Santiago Vila <sanvila@debian.org>  Sun, 25 Mar 2001 10:45:56 +0200
++
++procmail (3.15.1-2) unstable; urgency=low
++
++  * Fixed lockfile -l endless loop (Closes: #82006). Patch by the author.
++
++ -- Santiago Vila <sanvila@debian.org>  Sun, 28 Jan 2001 19:44:49 +0100
++
++procmail (3.15.1-1) unstable; urgency=low
++
++  * New upstream release. A race to create the mailspool would bounce one of
++    the messages due to an internal error.
++
++ -- Santiago Vila <sanvila@debian.org>  Mon,  8 Jan 2001 20:09:34 +0100
++
++procmail (3.15-3) unstable; urgency=low
++
++  * Fixed formatting error in procmailrc(5). Patch by the author.
++    (Closes: #80437).
++
++ -- Santiago Vila <sanvila@debian.org>  Sun, 31 Dec 2000 17:20:47 +0100
++
++procmail (3.15-2) unstable; urgency=low
++
++  * formail -l is now documented. Patch by the author (Closes: #72275).
++
++ -- Santiago Vila <sanvila@debian.org>  Fri,  1 Dec 2000 19:54:22 +0100
++
++procmail (3.15-1) unstable; urgency=low
++
++  * New upstream release. Maildir support is now built-in.
++  * Really change default PATH to "$HOME/bin:/usr/local/bin:/usr/bin:/bin".
++  * Modified the note in QuickStart about refiltering an old mail folder.
++  * Use SEARCHLIBS="" in debian/rules clean target to speed it up.
++  * Modified ft_dotlock in src/foldinfo.h to be in compliance with
++    locking policy, following a hint by the author.
++  * Removed (versioned) dependency on debianutils, since mailstat
++    does not use temporary files anymore.
++  * Made the .forward example in procmail(1) not to depend on the build
++    environment by modifying src/autoconf so that buggy_SENDMAIL is
++    never defined.
++
++ -- Santiago Vila <sanvila@debian.org>  Mon, 28 Aug 2000 12:51:05 +0200
++
++procmail (3.13.1-4) stable; urgency=high
++
++  * Fixed weird formail -rk behavior (patch from the author, backported
++    from procmail-3.15). Thanks to Ben Collins for the report.
++  * s/smail/exim/ in `Recommends:' field.
++
++ -- Santiago Vila <sanvila@debian.org>  Tue, 22 Aug 2000 13:04:50 +0200
++
++procmail (3.13.1-3) unstable; urgency=medium
++
++  * Standards-Version: 3.1.1
++  * Updated location of licenses in copyright file.
++  * LOCKINGTEST=100 again, to use fcntl() and dot-locking, as required by
++    latest policy.
++
++ -- Santiago Vila <sanvila@ctv.es>  Wed,  1 Dec 1999 12:37:35 +0100
++
++procmail (3.13.1-2) unstable; urgency=low
++
++  * Modified procmail(1) and QuickStart to reflect the fact that exim does
++    not accept the exec keyword in .forward files (Bugs #33460 and #37771).
++  * Modified formail to recognize exim's Envelope-To: header (Bug#40718).
++    Patch by Philip Guenther.
++  * Standards-Version: 3.0.0.
++
++ -- Santiago Vila <sanvila@ctv.es>  Mon, 19 Jul 1999 20:09:25 +0200
++
++procmail (3.13.1-1) stable unstable; urgency=high
++
++  * New upstream release, 3.13 missed a couple possible overflows.
++  * Applied `procmail-locking.patch' from Bruce Guenter, since
++    no directory delivery mechanism requires locking (Bug #35210).
++
++ -- Santiago Vila <sanvila@ctv.es>  Thu,  8 Apr 1999 13:56:33 +0200
++
++procmail (3.13-1) stable unstable; urgency=high
++
++  * New upstream release. procmail 3.12 breaks smartlist (Bug #35115).
++
++ -- Santiago Vila <sanvila@ctv.es>  Fri,  2 Apr 1999 14:24:24 +0200
++
++procmail (3.12-1) frozen unstable; urgency=high
++
++  * New upstream release. Fixes some security bugs.
++  * #define GROUP_PER_USER in config.h to allow writeable rcfiles when
++    the group is the user's default group.
++  * Added KNOWN_BUGS to the doc directory.
++  * suid procmail to avoid non-suidness window when upgrading.
++
++ -- Santiago Vila <sanvila@ctv.es>  Thu,  4 Mar 1999 10:28:28 +0100
++
++procmail (3.10.7-7) frozen unstable; urgency=medium
++
++  * New Maildir patches from Bruce Guenter.
++    Should fix Bug #30320: procmail: maildir does not use From_ lines.
++
++ -- Santiago Vila <sanvila@ctv.es>  Thu, 31 Dec 1998 13:27:20 +0100
++
++procmail (3.10.7-6) frozen unstable; urgency=medium
++
++  * Patched mailfold.c to avoid the unnecessary one second wait when
++    delivering to MH folders (patch by the author).
++  * src/locking.c: Applied a bugfix patch from the author.
++
++ -- Santiago Vila <sanvila@ctv.es>  Wed, 13 May 1998 21:50:19 +0200
++
++procmail (3.10.7-5) frozen unstable; urgency=medium
++
++  * Added a patch for Maildir support. The "new" procmail should be
++    completely backwards compatible with the "previous" one, in the
++    sense that its behaviour should be just the same for already
++    existing .procmailrc files which do not use the new syntax for
++    Maildir folders.
++  * Added a small README.Maildir explaining how to use this feature.
++
++ -- Santiago Vila <sanvila@ctv.es>  Mon,  4 May 1998 19:39:55 +0200
++
++procmail (3.10.7-4) frozen unstable; urgency=low
++
++  * Added a small note in QuickStart about refiltering an old mail folder.
++  * mailstat(1): The log file is truncated to zero length (Bug #21022).
++  * PATH=/usr/local/bin:/usr/bin:/bin for the example in procmail(1).
++  * Standards-Version: 2.4.1.
++
++ -- Santiago Vila <sanvila@ctv.es>  Fri, 17 Apr 1998 18:00:14 +0200
++
++procmail (3.10.7-3) frozen unstable; urgency=medium
++
++  * Patched src/recommend.c so that the mail spool directory is not
++    touched. This will allow the package to be built using fakeroot.
++  * Patched mailstat so that it uses tempfile.
++
++ -- Santiago Vila <sanvila@ctv.es>  Tue, 24 Mar 1998 21:43:08 +0100
++
++procmail (3.10.7-2) unstable; urgency=low
++
++  * Default PATH is now "$HOME/bin:/usr/local/bin:/usr/bin:/bin".
++  * Added "fetchmail" to the Recommends: line as one more option.
++  * Added /usr/doc/procmail/QuickStart (experimental).
++  * Compressed changelog.Debian.
++  * Removed debstd dependency.
++  * Pristine source.
++
++ -- Santiago Vila <sanvila@ctv.es>  Sat, 31 Jan 1998 20:30:06 +0100
++
++procmail (3.10.7-1) unstable; urgency=low
++
++  * Upgraded to 3.11pre7. Sources are now GPLed, hurrah!
++  * Added explicit SEARCHLIBS, to avoid unneeded dependency on libdl.
++  * First libc6 release.
++
++ -- Santiago Vila <sanvila@ctv.es>  Wed, 18 Jun 1997 20:43:28 +0200
++
++procmail (3.10.4-2) frozen unstable; urgency=low
++
++  * Rebuilt using latest debmake to avoid a problem with suidmanager.
++
++ -- Santiago Vila <sanvila@ctv.es>  Sat, 17 May 1997 20:52:59 +0200
++
++procmail (3.10.4-1) frozen unstable; urgency=low
++
++  * Upgraded to 3.11pre4. Side effect: It can be built using libc6.
++  * Removed NFS_ATIME_HACK patch, since it is no longer needed.
++
++ -- Santiago Vila <sanvila@ctv.es>  Sat, 12 Apr 1997 19:06:46 +0200
++
++procmail (3.10-8) unstable; urgency=low
++
++  * Rewritten copyright file.
++  * initmake unmodified (source).
++  * Patched to recognize NFS_ATIME_HACK variable in .procmailrc or
++    /etc/procmailrc. Default value is "yes" (i.e. wait a second).
++  * Added a small note about this in /usr/doc/procmail/README.Debian.
++
++ -- Santiago Vila <sanvila@ctv.es>  Sun, 23 Mar 1997 12:04:34 +0100
++
++procmail (3.10-7) unstable; urgency=low
++
++  * Put CFLAGS settings &c in ./Makefile, not in debian/rules.
++  * Removed fix-substvars script, since it's no longer needed with
++    new libc5-5.4.20.
++  * Man page for mailstat changed slightly.
++  * Some minor debian/rules changes.
++  * Added MD5 sums.
++
++ -- Santiago Vila <sanvila@ctv.es>  Fri, 21 Feb 1997 20:53:30 +0100
++
++procmail (3.10-6) unstable; urgency=low
++
++  * Use debmake.
++  * suidmanager support.
++  * Removed `mailstat' from examples, it's already in /usr/bin.
++  * Removed also `dirname' (which was "for the deprived").
++  * Added `fix-substvars' script to depend on libc5 >= 5.4.0.
++
++ -- Santiago Vila <sanvila@ctv.es>  Mon, 23 Dec 1996 16:34:02 +0100
++
++procmail (3.10-5) unstable; urgency=low
++
++  * Updated to Standards-Version 2.1.2.2.
++  * Changed "Depends: MTA" to "Recommends: MTA".
++  * Added extended package description in control file.
++  * Added the symlink changelog.gz -> HISTORY.gz.
++  * Added an "experimental" man page for mailstat.
++  * New maintainer.
++
++ -- Santiago Vila <sanvila@ctv.es>  Sat, 21 Dec 1996 23:32:11 +0100
+--- procmail-3.22.orig/debian/control
++++ procmail-3.22/debian/control
+@@ -0,0 +1,18 @@
++Source: procmail
++Section: mail
++Priority: standard
++Maintainer: Santiago Vila <sanvila@debian.org>
++Standards-Version: 3.6.1
++
++Package: procmail
++Architecture: any
++Depends: ${shlibs:Depends}
++Conflicts: suidmanager (<< 0.50)
++Recommends: exim | mail-transport-agent | fetchmail
++Description: Versatile e-mail processor
++ Can be used to create mail-servers, mailing lists, sort your incoming
++ mail into separate folders/files (real convenient when subscribing to one
++ or more mailing lists or for prioritising your mail), preprocess your
++ mail, start any programs upon mail arrival (e.g. to generate different
++ chimes on your workstation for different types of mail) or selectively
++ forward certain incoming mail automatically to someone.
+--- procmail-3.22.orig/debian/copyright
++++ procmail-3.22/debian/copyright
+@@ -0,0 +1,41 @@
++This is the Debian prepackaged version of the "procmail" mail-processing
++program written by Stephen van den Berg.
++
++This package is currently maintained by Santiago Vila <sanvila@debian.org>.
++The source for this release was downloaded from:
++
++ftp://ftp.procmail.org/pub/procmail/procmail-3.22.tar.gz
++
++This package was first put together by Bruce Perens <bruce@hams.com>,
++who added Debian package maintenance system files, and edited config.h
++to configure for Debian.
++
++Copyright:
++
++Procmail & formail mail processing package.
++Copyright (c) 1990-1999, S.R. van den Berg, The Netherlands.
++Copyright (c) 1999-2001, Philip Guenther, The United States of America
++
++This package is open source software; you can redistribute it and/or
++modify it under the terms of either:
++- the GNU General Public License as published by the Free Software Foundation
++  and can be found in the included file called "COPYING"; either version 2,
++  or (at your option) any later version, or
++- the "Artistic License" which can be found in the included file called
++  "Artistic".
++
++This package is distributed in the hope that it will be useful, but without
++any warranty; without even the implied warranty of merchantability or fitness
++for a particular purpose.  See either the GNU General Public License or the
++Artistic License for more details.
++
++For those of you that choose to use the GNU General Public License,
++my interpretation of the GNU General Public License is that no procmailrc
++script falls under the terms of the GPL unless you explicitly put
++said script under the terms of the GPL yourself.
++
++
++On Debian systems, the complete text of the GNU General Public License
++can be found in `/usr/share/common-licenses/GPL', and the complete
++text of the "Artistic License" can be found in
++`/usr/share/common-licenses/Artistic'.
+--- procmail-3.22.orig/debian/mailstat.1
++++ procmail-3.22/debian/mailstat.1
+@@ -0,0 +1,40 @@
++.TH MAILSTAT 1
++.SH NAME
++mailstat \- shows mail-arrival statistics
++.SH SYNOPSIS
++.B mailstat
++[\-klmots] [logfile]
++.SH DESCRIPTION
++.B mailstat
++parses a procmail-generated $LOGFILE and displays
++a summary about the messages delivered to all folders
++(total size, average size, nr of messages).
++The $LOGFILE is truncated to zero length, unless the
++.B -k
++option is used.
++Exit code 0 if mail arrived, 1 if no mail arrived.
++.SH OPTIONS
++.TP
++.I \-k
++keep logfile intact
++.TP
++.I \-l
++long display format
++.TP
++.I \-m
++merge any errors into one line
++.TP
++.I \-o
++use the old logfile
++.TP
++.I \-t
++terse display format
++.TP
++.I \-s
++silent in case of no mail
++.SH NOTES
++Customise to your heart's content, this program is only provided as a
++guideline.
++.SH AUTHOR
++This manual page was written by Santiago Vila <sanvila@debian.org>
++for the Debian GNU/Linux distribution (but may be used by others).
+--- procmail-3.22.orig/debian/QuickStart
++++ procmail-3.22/debian/QuickStart
+@@ -0,0 +1,97 @@
++procmail QuickStart
++===================
++
++* procmail is not an `interactive' program. It has to run automatically
++when the mail arrives. Therefore the first thing to do is to tell our MTA
++that we want procmail to "eat" all our mail messages. The way of doing
++this depends on the MTA we are using. For example, if we are using
++sendmail, it will suffice to have a .forward file like this in our home
++directory:
++
++"|exec /usr/bin/procmail"
++
++(don't forget the quotes, they are needed in this case).
++
++If you are using exim, use this instead as your .forward file:
++
++|/usr/bin/procmail
++
++The step of creating a .forward file is not needed if the MTA already
++performs the delivery using procmail. For example, Debian sendmail will
++automatically use procmail for mail delivering if the sendmail.cf is
++generated from a sendmail.mc file containing this line:
++
++FEATURE(local_procmail)dnl
++
++
++* If we have a stand-alone system with no permanent net connection (like
++PPP), and we are using fetchmail to get mail from a server, we don't
++really need a MTA.  Just adding  --mda "formail -s procmail"  to the
++fetchmail command line (or using the `mda' keyword) will tell it to
++deliver through procmail.
++
++
++* Next, we have to write a ~/.procmailrc file in our home directory. This
++file is a set of filtering rules, based on regular expressions. The
++complete syntax is explained in procmailrc(5). Let's see a real example
++just to get started. Let's suppose you are subscribed to the following two
++mailing lists:
++
++linux-kernel@vger.kernel.org
++debian-user@lists.debian.org
++
++The first list is managed by Majordomo. Messages coming from a Majordomo
++list often include a header field "Sender: " which allow easy filtering.
++
++The second list is managed my SmartList. Messages coming from a SmartList
++list may include several headers that can be used to filter it. One of
++them (in fact, the only that it is not X-whatever) is "Resent-Sender: ".
++
++So the following .procmailrc will first filter the mailing lists, and
++any remaining message will go to the default folder:
++
++*--------------------------------->8------------------------------------
++PATH=$HOME/bin:/usr/local/bin:/usr/bin:/bin
++MAILDIR=$HOME/mail             # you'd better make sure it exists
++DEFAULT=$MAILDIR/mbox          # completely optional
++LOGFILE=$MAILDIR/procmail.log  # recommended
++
++:0:
++* ^Sender:.*linux-kernel-owner@vger.kernel.org
++linux-kernel
++
++:0:
++* ^Resent-Sender:.*debian-user-request@lists.debian.org
++debian-user
++*--------------------------------->8------------------------------------
++
++From this example additional rules for mailing lists may be created
++easily.
++
++
++* Once you have received lots of messages you will want to know where
++did they go. That's what the LOGFILE is for. There is a tool named
++mailstat which parses this file and shows a summary:
++
++mailstat procmail.log
++
++The mailstat command that this package provides does really come from the
++examples directory and it is installed by default. You may have your own
++modified copy in $HOME/bin, if you like.
++
++
++If you have to refilter an old mail folder according to your current
++~/.procmailrc file, you may do the following:
++
++cat mbox | formail -s procmail
++
++But of course if your mbox file is the target of a procmail recipe you should
++do this instead:
++
++mv mbox whatever
++cat whatever | formail -s procmail
++
++See formail(1) for details.
++
++
++Santiago Vila <sanvila@debian.org>
+--- procmail-3.22.orig/debian/README.Maildir
++++ procmail-3.22/debian/README.Maildir
+@@ -0,0 +1,12 @@
++This version of procmail supports Maildir folders.
++
++To make procmail to deliver into a Maildir folder, just append
++a slash (/) to the name of the maildir folder in your ~/.procmailrc file.
++For example, the following rule:
++
++:0
++* ^Resent-Sender.*debian-user-request@lists.debian.org
++debian-user/
++
++will deliver all mail from the debian-user mailing list to the Maildir
++folder "debian-user".
+--- procmail-3.22.orig/debian/rules
++++ procmail-3.22/debian/rules
+@@ -0,0 +1,76 @@
++#!/usr/bin/make -f
++
++package = procmail
++docdir = debian/tmp/usr/share/doc/$(package)
++
++CC = gcc
++CFLAGS0 = -g
++LDFLAGS0 =
++SEARCHLIBS = -lm
++STRIP = true
++
++ifeq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
++  CFLAGS0 += -O2
++endif
++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
++  STRIP = strip --remove-section=.comment --remove-section=.note
++endif
++
++build:
++	$(checkdir)
++	$(MAKE) CC="$(CC)" CFLAGS0="$(CFLAGS0)" LDFLAGS0="$(LDFLAGS0)" \
++		SEARCHLIBS="$(SEARCHLIBS)"
++	touch build
++
++clean:
++	$(checkdir)
++	rm -f build
++	-$(MAKE) realclean SEARCHLIBS=""
++	rm -f `find . -name "*~"`
++	rm -rf debian/tmp debian/files* core debian/substvars
++
++binary-indep: checkroot build
++	$(checkdir)
++
++binary-arch: checkroot build
++	$(checkdir)
++	rm -rf debian/tmp
++	install -d debian/tmp/DEBIAN $(docdir)/examples
++	cd debian/tmp && install -d usr/bin
++	$(MAKE) BASENAME=`pwd`/debian/tmp/usr install.man install-suid
++	$(STRIP) debian/tmp/usr/bin/procmail
++	$(STRIP) debian/tmp/usr/bin/lockfile
++	$(STRIP) debian/tmp/usr/bin/formail
++	cp -p debian/copyright $(docdir)
++	cp -p debian/changelog $(docdir)/changelog.Debian
++	install -m 644 debian/mailstat.1 debian/tmp/usr/man/man1
++	cp -p FEATURES HISTORY README FAQ KNOWN_BUGS \
++		debian/QuickStart debian/README.Maildir $(docdir)
++	cp -p examples/* $(docdir)/examples
++	cd $(docdir)/examples && rm -f dirname mailstat procmail-rpm.spec
++	cd $(docdir) && gzip -9 HISTORY changelog.Debian
++	ln -s HISTORY.gz $(docdir)/changelog.gz
++	mv debian/tmp/usr/man debian/tmp/usr/share
++	gzip -r9 debian/tmp/usr/share/man
++	dpkg-shlibdeps debian/tmp/usr/bin/*
++	dpkg-gencontrol -isp
++	cd debian/tmp && \
++		md5sum `find * -type f ! -regex "DEBIAN/.*"` > DEBIAN/md5sums
++	chown -R root:root debian/tmp
++	chmod -R go=rX debian/tmp
++	chgrp mail debian/tmp/usr/bin/procmail debian/tmp/usr/bin/lockfile
++	chmod 6755 debian/tmp/usr/bin/procmail
++	chmod 2755 debian/tmp/usr/bin/lockfile
++	dpkg --build debian/tmp ..
++
++define checkdir
++        test -f src/$(package).c -a -f debian/rules
++endef
++
++binary: binary-indep binary-arch
++
++checkroot:
++	$(checkdir)
++	test root = "`whoami`"
++
++.PHONY: binary binary-arch binary-indep clean checkroot
diff --git a/procmailrc b/procmailrc
new file mode 100644
index 0000000..5830083
--- /dev/null
+++ b/procmailrc
@@ -0,0 +1,424 @@
+################################################################
+#                  Here we go....                              #
+#                  my very own mail-mangler                    #
+################################################################
+
+################################################################
+# Updated to have working URLs and arbitrarily version-bumped  #
+# to 1.2 on the grounds it matched the mutt version. Very      #
+# little beyond URLs and list addresses has changed.           #
+#                                 2002-03-21.                  #
+################################################################
+
+
+################################################################
+# In the spirit of the net, 90% of this came from other people #
+# and the remaining 10% might be from me. Most of the 90%      #
+# came from these sources:                                     #
+#                                                              #
+#	"Getting started with procmail" at                     #
+#                http://www.spambouncer.org/proctut.shtml      #
+#                http://www.spambouncer.org/procmail.rc        #
+#	...by Catherine A. Hampton.                            #
+#                                                              #
+#	man procmail (overview)                                #
+#	man procmailrc (writing the procmailrc)                #
+#       man procmailex (example recipes)                       #
+#       man formail (especially for splitting digests)         #
+#                                                              #
+#	and .procmailrcs from several friends. Thanks, folks,  #
+#       especially to the one who had more patterns which sent #
+#       things to /dev/null than to mailboxes, for showing me  #
+#       what true impatience with email was like!              #
+################################################################
+                                                                
+################################################################
+# Procmailrc files have two parts. First you tell it where     #
+# everything lives. Then you tell it the recipes.              #
+################################################################
+
+##########################################
+# Varibiggles and where everything lives #
+##########################################
+
+################################################################
+# All of these will work quite happily without changing for    #
+# Red Hat Linux 6.0 through to 7.2.They won't necessarily work #
+# for other flavours without changing paths. See the "Getting  #
+# started with procmail" doc I mentioned above for the likely  #
+# settings for them in other environments. It has a list :)    #
+################################################################
+
+################################################################
+# Since I installed procmail, I have changed from using        #
+# sendmail to using exim. Because I can understand the config  #
+# file. If you use exim, you may need to tweak the config file #
+# as I did. If you do, then check you are reading the docs for #
+# the right version of exim! This worked for me:               #
+#                                                              #
+# http://www.exim.org/exim-html-3.20/doc/html/spec_18.html     #
+# and look for procmail. It's in the example for the 'pipe     #
+# transport'. Just paste it into /etc/exim.conf.               #
+################################################################
+
+SHELL=/bin/bash		
+	# Have to have this one (or whatever your shell is)
+	# Best bet is bash or sh. 
+
+LINEBUF=4096            
+	# Magic. Apparently it burps on long lines if you don't
+        # put this in.
+
+PATH=/bin:/usr/bin:/usr/local/bin
+	# Where procmail looks for stuff. Works for RH 6.0, 6.1
+	# and most other Linux settings I've seen. 
+
+VERBOSE=off
+        # Change to 'on' to get _long_ procmail log. 
+        # NB: if this is short, I don't want to see long: I get
+	# a one-line summary for every email procmail looks at!
+
+MAILDIR=$HOME/Mail	
+	# Not where your mail arrives on the machine. Where
+	# procmail will assume all the folders you mention in
+	# your recipes goes. Make sure your email-reading
+	# program also knows about it. (I understand $HOME/Mail
+	# is pretty standard, however.)
+
+LOGFILE=$HOME/Mail/procmaillog
+	# I don't think this needs to be in your Mail folder,
+	# but my mail-reader (mutt) is great at different 
+	# sorting, so I put the log into the mail directory :)
+	# Note learned through experience: if you leave this file
+	# too long, it will end up with tens of thousands of
+	# messages. Mutt is not always -that- good at sorting
+	# that lot quickly :)
+
+FORMAIL=/usr/bin/formail
+	# 'formail'. Part of the procmail package. Correct
+	# the path if this isn't where it lives for you.
+	# ('which formail' may well tell you.)
+
+SENDMAIL=/usr/sbin/sendmail 
+	# As with formail, tells procmail where to look for
+	# sendmail. If sendmail isn't there, mail transfer
+	# might be handled by a different program. Ask
+	# your sysadmin :) If you are your own sysadmin,
+        # then I hope you know. 
+	# Subsequent to writing that, I have learned that this
+	# file is provided (with this name) by other MTAs too.
+	# I now use Exim (see note above) and this file is still
+	# there, courtesy of exim.
+
+
+############################
+# The recipes - I hope...  #
+############################
+
+################################################################                                                                
+# Gods know how this works. But it's very useful. If you get   #
+# email that is sent simultaneously to you and to two other    #
+# lists, this will nuke two of those so that you only see it   #
+# once. Came from 'man procmail'.                              #
+################################################################
+
+# Nuke duplicate messages
+:0 Wh: msgid.lock
+| $FORMAIL -D 8192 msgid.cache
+
+################################################################
+# Next two are from the 'Getting started with procmail' doc.   #
+# I'm not too sure about how they work, but they look handy... #
+################################################################
+
+# Create a backup cache of 200 most recent messages in case of 
+# mistakes (yes, you can change the 200 to 20 or 400 or whatever
+# you want)
+:0 c
+backup
+
+  :0 ic
+  | cd backup && rm -f dummy `ls -t msg.* | sed -e 1,200d`
+
+# Regenerate "From" lines to make sure they are valid
+:0 fhw
+| formail -I "From " -a "From "
+
+
+################################################################
+# For testing shit - I picked a subject line that no-one would #
+# send me and then tried different recipes on the results, and #
+# then sent myself a whole pile of email about grobblefruit,   #
+# with different recipes here, to see what happened when I     #
+# tried different headers and so on.                           #
+################################################################
+
+:0:
+* ^Subject: Test grobblefruit
+IN.testing
+
+
+################################################################
+#                       Mailing lists                          #
+#                                                              #
+# I think this is the thing that most people who finally get   #
+# procmail want to know about: how to get different messages   #
+# from different mailing lists into different folders. This is #
+# where all that MAILDIR stuff comes from. All the folders I   #
+# name in here are all created off whatever directory I filled #
+# in as the MAILDIR at the start. And no, they don't suddenly  #
+# appear the instant you edit this file. They only appear when #
+# procmail finds mail that should go in them.                  #
+#                                                              #
+# You can have more than one recipe sending email into the     #
+# same folder, btw, yes.                                       #
+#                                                              #
+# General useful (?) comments:                                 #
+#	The "^Resent-From: " pattern works wonderfully on      #
+#    lists which generate it.                                  #
+#	Making the folder not -quite- the list name means you  #
+#    can save mail from it to a folder named for the list. Can #
+#    be handy.                                                 #
+#	Some lists are indeed a pig to catch everything with.  #
+#	"TO" is different from "To" and you mustn't put a      #
+#    a space after "TO". It catches "To: " and "Cc: ", I       #
+#    think. Very handy. But it doesn't catch everything. If    #
+#    it's a mailman list, don't use it and see below.          #
+#	Mailman-run lists all seem to have a Sender: header    #
+#    which is very useful to sort with. Just add -admin onto   #
+#    the name of the mailing list.                             #
+#	Even more useful for mailman-run lists turns out to be #
+#    "X-BeenThere: listname@site.com"                          #
+################################################################
+
+################################################################
+# I hardly use TO now, but here's an example in case.          #
+################################################################
+
+:0:
+* ^TOlynx-dev@sig.net
+IN.lynx-dev
+
+###########
+# bugtraq #
+###########
+
+:0:
+* ^Sender:.*Bugtraq List
+IN.bugtraq
+
+#########################
+# gnome CVS commit list #
+#########################
+
+:0:
+* X-BeenThere: cvs-commits-list@gnome.org
+IN.cvs-commits
+
+
+##############
+# gnome-list #
+##############
+
+:0:
+* ^X-BeenThere: gnome-list@gnome.org
+IN.gnome-list
+
+
+##################
+# gnome-doc-list #
+##################
+
+:0:
+* ^X-BeenThere: gnome-doc-list@gnome.org
+IN.gnome-doc-list
+
+
+###############################################################
+# linuxchix lists: there are several mailing lists here: see  #
+# the end of this file for the different ways to deal with    #
+# heavy traffic lists with digest options.                    #
+###############################################################
+
+:0:
+* ^X-BeenThere: grrltalk@linuxchix.org
+IN.linuxchix
+
+:0:
+* ^X-BeenThere: issues@linuxchix.org
+IN.linuxchix
+
+:0:
+* ^X-BeenThere: techtalk@linuxchix.org
+IN.linuxchix
+
+
+#################################################
+# This is what I consider advanced stuff: this  #
+# one doesn't put the digest straight into a    #
+# folder. Instead it runs 'formail +1 -ds',     #
+# which splits the digest into its original     #
+# messages, and then puts the results of that   #
+# into the folder.                              #
+#                                               #
+# The address is way way out of date, but I am  #
+# not sure of the current digest address, so I  #
+# have left it.                                 #
+#                                               #
+# It is commented out because I actually read   #
+# the main list, not the digest, these days.    #
+#################################################
+
+# :0: 
+# * ^TOgrrltalk-digest@hub.org
+# | formail +1 -ds >> IN.linuxchix
+
+
+##############
+# mutt-users #
+##############
+:0:
+* ^TOmutt-users@mutt.org
+IN.mutt-users
+
+:0:
+* ^Sender: owner-mutt-users@mutt.org
+IN.mutt-users
+
+
+#################################################
+# Procmail list                                 #
+#	...be aware that everyone on this list	#
+# seems to have monster spam filters and thus   #
+# to be completely unconcerned at the huge      #
+# amount of spam it gets: you will either need  #
+# spam filters or tolerance to find the good    #
+# stuff. (I am not subscribed now, but that was #
+# the case when I was.)                         #
+#################################################
+
+:0:
+* ^TOprocmail@Informatik.RWTH-Aachen.DE
+IN.procmaillist
+
+
+#######################################################
+# Red Hat announce -- very handy for security updates #
+#######################################################
+
+:0:
+* ^X-BeenThere: redhat-announce-list@redhat.com
+IN.rh-announce
+
+:0:
+* ^X-BeenThere: redhat-watch-list@redhat.com
+IN.rh-announce
+
+
+#########################
+# windowmaker: wm-users #
+#########################
+
+:0:
+*^From wm-user-request@windowmaker.org
+IN.wm-user
+
+################################################################
+#                 Splitting digests                            #
+#                                                              #
+# You don't need to do this, but this seems to be another very #
+# popular thing to do with procmail. If you're on mailing      #
+# lists using the digest option, sometimes you may want to     #
+# split the digests back up into the original emails. There is #
+# (of course) more than one way to do this:                    #
+#                                                              #
+# (1) don't bother: just read through all the digest in one    #
+# big lump. Simple, easy, and great until you find someone     #
+# sent a 500-line postscript file or a giant jpg which got     #
+# included into the digest :(                                  #
+#                                                              #
+# (2) use a mail-reader such as mutt, and if you suddenly want #
+# to split a digest up, then whilst reading the message, hit   #
+# 	| formail +1 -ds                                       #
+# which will put the results into your main inbox. If you want #
+# it in a particular folder (like the one you're reading), do  #
+#	| formail +1 -ds >> foldername                         #
+#                                                              #
+# (3) make procmail (or formail, actually), split it up ready  #
+# for you to read.                                             #
+#                                                              #
+# So if you want to have each digest automatically split up    #
+# by procmail as it arrives, and to read each message          #
+# individually, then here's some examples of what you can put. #
+# The first two lines are exactly the same. The third one has  #
+# a pipe (vertical line) symbol at the start, and then the     #
+# command you're piping it through.                            #
+#                                                              #
+# Yes, I picked a notoriously heavy-traffic one for the first  #
+# example... And it -should- work, but it's not a list I read, #
+# sorry!                                                       #
+#                                                              #
+# Instead of this:                                             #
+#	:0:                                                    #
+#	* ^Sender: owner-linux-kernel@vger.rutgers.edu         #
+#	IN.linux-kernel                                        #
+# ...you want this:                                            #
+#	:0:                                                    #
+#	* ^Sender: owner-linux-kernel@vger.rutgers.edu         #
+#	| formail +1 -ds >> IN.linux-kernel                    #
+#                                                              #
+# Da-dah! That's all.                                          #
+#                                                              #
+# And for those where the list name changes and that's what    #
+# you're matching patterns on, instead of this:                #
+# 	:0:                                                    #
+# 	* ^TOgrrltalk@hub.org                                  #
+# 	IN.linuxchix                                           #
+# ...you want this:                                            #
+#	:0:                                                    #
+* 	^TOgrrltalk-digest@hub.org                             #
+#	| formail +1 -ds >> IN.linuxchix                       #
+#                                                              #
+# Magic :)                                                     #
+################################################################
+
+
+
+################################################################
+# That's it. Any email that doesn't match any of the recipes   #
+# above goes into my usual place for email, which until I read #
+# it is /var/spool/mail/hobbit. Procmail appears to know about #
+# that without being told.                                     #
+#                                                              #
+# Quick summary for adding your own or changing these: the     #
+# general format for putting an email into a folder and not    #
+# doing anything fancy to it first is:                         #
+#                                                              #
+# :0:                                                          #
+# * <what you're looking for>                                  #
+# <where you're putting it>                                    #
+#                                                              #
+# The ^ sign in my recipes is the sign procmail understands as #
+# "start of the line", so "^From" matches the word "From" when #
+# it's the start of a header.                                  #
+#                                                              #
+# The "IN." at the start of folder names is not necessary:     #
+# that's just my naming system. Stolen, like everything else,  #
+# from a friend's example. It has the benefit that with my     #
+# mail-reader (mutt), which sorts alphabetically, all of them  #
+# show up first (capitals are earlier in the alphabet if       #
+# you're a computer...) and I can save them easily: from       #
+# IN.blah to blah. If you want to call the folders blah-spool, #
+# or just blah, then cool. That'll work, too.                  #
+#                                                              #
+# It is possible that now you have everything in different     #
+# folders, you want to read with a cool program which does     #
+# cool things like display by thread or which understands you  #
+# when you tell it "These are mailing lists" and does handy    #
+# things as a result. If you do, and you discover Mutt, you    #
+# might want to look at my muttrc which is probably next to    #
+# this file.                                                   #
+#                                                              #
+# Have fun!                                                    #
+#                             -- Telsa                         #
+################################################################
diff --git a/sources b/sources
new file mode 100644
index 0000000..775683c
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+1678ea99b973eb77eda4ecf6acae53f1  procmail-3.22.tar.gz