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
This commit is contained in:
Troy Dawson 2020-10-14 16:31:49 -07:00
parent d9a371b73b
commit bb2c54444b
14 changed files with 2321 additions and 0 deletions

1
.gitignore vendored
View File

@ -0,0 +1 @@
procmail-3.22.tar.gz

19
procmail-3.15.1-man.patch Normal file
View File

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

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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 */

View File

@ -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 */

View File

@ -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));

228
procmail-3.22-ipv6.patch Normal file
View File

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

View File

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

View File

@ -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;
}

323
procmail.spec Normal file
View File

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

View File

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

424
procmailrc Normal file
View File

@ -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 #
################################################################

1
sources Normal file
View File

@ -0,0 +1 @@
1678ea99b973eb77eda4ecf6acae53f1 procmail-3.22.tar.gz