[packages/procmail] - rel 17; fixes CVE-2014-3618 + some fc patches
arekm
arekm at pld-linux.org
Fri Sep 5 20:02:41 CEST 2014
commit eb2dff6783c776cbd043e5430b7861d8c12cdf2c
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Fri Sep 5 20:02:38 2014 +0200
- rel 17; fixes CVE-2014-3618 + some fc patches
procmail-3.22-CVE-2014-3618.patch | 18 +
procmail-3.22-ipv6.patch | 228 +++++++++
procmail-3.22-truncate.patch | 47 ++
procmail.spec | 12 +-
procmail_3.22-8.debian.patch | 950 ++++++++++++++++++++++++++++++++++++++
5 files changed, 1253 insertions(+), 2 deletions(-)
---
diff --git a/procmail.spec b/procmail.spec
index 578e6c8..160dba9 100644
--- a/procmail.spec
+++ b/procmail.spec
@@ -11,7 +11,7 @@ Summary(zh_CN.UTF-8): [服务器]分发mail到用户的守护进程
Summary(zh_TW.UTF-8): [祀務器]分蛛mail到用戶的佐鰾園評
Name: procmail
Version: 3.22
-Release: 16
+Release: 17
License: GPL v2
Group: Applications/Mail
Source0: ftp://ftp.procmail.org/pub/procmail/%{name}-%{version}.tar.gz
@@ -25,6 +25,10 @@ Patch1: %{name}-misc.patch
Patch2: %{name}-FHS.patch
Patch3: private_getline.patch
Patch4: ignore-dot.patch
+Patch5: procmail_3.22-8.debian.patch
+Patch6: procmail-3.22-CVE-2014-3618.patch
+Patch7: procmail-3.22-ipv6.patch
+Patch8: procmail-3.22-truncate.patch
URL: http://www.procmail.org/
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
@@ -94,10 +98,14 @@ listesi yazılımının temelini oluşturur.
%patch2 -p1
%patch3 -p1
%patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
%build
echo "" | %{__make} \
- CFLAGS0="%{rpmcflags} -w" \
+ CFLAGS0="%{rpmcflags} %{rpmcppflags} -w" \
SEARCHLIBS="-lm"
%install
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-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-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_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. at ETCRCS_desc@
+ For some advanced usage of this option you should look in the
+ .B EXAMPLES
+-section below. at LMTPOPTdesc@.SH ARGUMENTS
++section below. at 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 at 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- at PRESERVOPT@\1and\1.BR \2- at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at vger.kernel.org
++debian-user at 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 at vger.kernel.org
++linux-kernel
++
++:0:
++* ^Resent-Sender:.*debian-user-request at 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 at 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 at 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
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/procmail.git/commitdiff/eb2dff6783c776cbd043e5430b7861d8c12cdf2c
More information about the pld-cvs-commit
mailing list