From 274ee21b4c962d695209ae2cdc6b239ef71a4ea1 Mon Sep 17 00:00:00 2001 From: MSVSphere Packaging Team Date: Tue, 26 Nov 2024 18:48:50 +0300 Subject: [PATCH] import procmail-3.24-7.el10 --- .gitignore | 1 + .procmail.metadata | 1 + SOURCES/procmail-3.15.1-man.patch | 19 + SOURCES/procmail-3.22-truncate.patch | 47 ++ .../procmail-3.24-coverity-scan-fixes.patch | 73 +++ SOURCES/procmail-3.24-gcc-14-fix.patch | 241 ++++++++++ SOURCES/procmail-3.24-ipv6.patch | 228 ++++++++++ SOURCES/procmail-3.24-rhconfig.patch | 99 ++++ SOURCES/procmailrc | 424 ++++++++++++++++++ SPECS/procmail.spec | 347 ++++++++++++++ 10 files changed, 1480 insertions(+) create mode 100644 .gitignore create mode 100644 .procmail.metadata create mode 100644 SOURCES/procmail-3.15.1-man.patch create mode 100644 SOURCES/procmail-3.22-truncate.patch create mode 100644 SOURCES/procmail-3.24-coverity-scan-fixes.patch create mode 100644 SOURCES/procmail-3.24-gcc-14-fix.patch create mode 100644 SOURCES/procmail-3.24-ipv6.patch create mode 100644 SOURCES/procmail-3.24-rhconfig.patch create mode 100644 SOURCES/procmailrc create mode 100644 SPECS/procmail.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b7fa99e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/procmail-3.24.tar.gz diff --git a/.procmail.metadata b/.procmail.metadata new file mode 100644 index 0000000..8bdc842 --- /dev/null +++ b/.procmail.metadata @@ -0,0 +1 @@ +7de1d9d27fe0a59d553b93a4ace17e50003cf667 SOURCES/procmail-3.24.tar.gz diff --git a/SOURCES/procmail-3.15.1-man.patch b/SOURCES/procmail-3.15.1-man.patch new file mode 100644 index 0000000..af29f3b --- /dev/null +++ b/SOURCES/procmail-3.15.1-man.patch @@ -0,0 +1,19 @@ +--- procmail-3.15.1/man/procmail.man.35825 Thu Apr 12 18:31:37 2001 ++++ procmail-3.15.1/man/procmail.man Thu Apr 12 18:32:42 2001 +@@ -44,11 +44,11 @@ + should be invoked automatically over the + .B @DOT_FORWARD@ + file mechanism as soon as mail arrives. Alternatively, when installed by +-a system administrator, it can be invoked from within the mailer immediately. +-When invoked, it first sets some environment variables to default values, +-reads the mail message from stdin until an EOF, separates the body from the +-header, and then, if no command line arguments are present, it starts to look +-for a file named ++a system administrator (and in the standard Red Hat Linux configuration), it ++can be invoked from within the mailer immediately. When invoked, it ++first sets some environment variables to default values, reads the mail message from ++stdin until an EOF, separates the body from the header, and then, if no command line ++arguments are present, it starts to look for a file named + .BR @PROCMAILRC@ . + According to the processing recipes in this file, + the mail message that just arrived gets distributed into the right folder diff --git a/SOURCES/procmail-3.22-truncate.patch b/SOURCES/procmail-3.22-truncate.patch new file mode 100644 index 0000000..c06cde3 --- /dev/null +++ b/SOURCES/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/SOURCES/procmail-3.24-coverity-scan-fixes.patch b/SOURCES/procmail-3.24-coverity-scan-fixes.patch new file mode 100644 index 0000000..da6c4c9 --- /dev/null +++ b/SOURCES/procmail-3.24-coverity-scan-fixes.patch @@ -0,0 +1,73 @@ +diff --git a/src/cstdio.c b/src/cstdio.c +index d444057..5327c77 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 48b83e2..88d6228 100644 +--- a/src/foldinfo.c ++++ b/src/foldinfo.c +@@ -19,6 +19,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,doautoforward) + 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 60b7a2d..41e3c1a 100644 +--- a/src/lmtp.c ++++ b/src/lmtp.c +@@ -52,7 +52,7 @@ static int lreaddyn P((void)); + int childserverpid; + char detaildelim='\0'; + +-static ctopfd; ++static int ctopfd; + static char*overread; + static size_t overlen; + +diff --git a/src/locking.c b/src/locking.c +index a5a0238..c6882ea 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/SOURCES/procmail-3.24-gcc-14-fix.patch b/SOURCES/procmail-3.24-gcc-14-fix.patch new file mode 100644 index 0000000..a9a8dc1 --- /dev/null +++ b/SOURCES/procmail-3.24-gcc-14-fix.patch @@ -0,0 +1,241 @@ +diff --git a/initmake b/initmake +index b901add..703d651 100755 +--- a/initmake ++++ b/initmake +@@ -124,7 +124,7 @@ else + fi + + cat >_autotst.c <_autotst.c < + #include + #include +-main() ++int main() + { struct stat buf;return!&buf; + } + HERE +diff --git a/src/autoconf b/src/autoconf +index deb97c1..c3f2576 100755 +--- a/src/autoconf ++++ b/src/autoconf +@@ -361,6 +361,7 @@ cat >_autotst.c < /* getpid() getppid() */ + #endif + #include ++#include + #include + #include + #include /* SIGKILL */ +@@ -414,6 +415,16 @@ cat >_autotst.c <0) ++ kill(child[i],SIGTERM),child[i]=0; ++ while(i); ++ return 0; ++} ++ + void stimeout() + { timeout=1;close(fdcollect);killchildren(); + } +@@ -435,7 +446,79 @@ unsigned sfork() + return pid; + } + +-int main(argc,argv)char*argv[]; ++static int oldfdlock; ++#ifdef F_SETLKW ++static struct flock flck; /* why can't it be a local variable? */ ++#endif ++#ifdef F_LOCK ++static off_t oldlockoffset; ++#endif ++ ++int fdlock(int fd) ++{ int i;unsigned gobble[GOBBLE>>2]; ++ for(i=GOBBLE>>2;i;gobble[--i]=~(unsigned)0); /* SunOS crash test */ ++ oldfdlock=fd;fd=0; ++ if(MSK_fcntl&dolock) ++#ifdef F_SETLKW ++ { static unsigned extra; ++ flck.l_type=F_WRLCK;flck.l_whence=SEEK_SET;flck.l_start=tell(oldfdlock); ++ if(!extra--) ++ extra=MIN_locks/4,flck.l_len=2,i|=fcntl(oldfdlock,F_SETLK,&flck); ++ flck.l_len=0;fd|=fcntl(oldfdlock,F_SETLKW,&flck); ++ } ++#else ++ fd=1; ++#endif ++ if(MSK_lockf&dolock) ++#ifdef F_LOCK ++ oldlockoffset=tell(oldfdlock),fd|=lockf(oldfdlock,F_LOCK,(off_t)0); ++#else ++ fd=1; ++#endif ++ if(MSK_flock&dolock) ++#ifdef LOCK_EX ++ fd|=flock(oldfdlock,LOCK_EX); ++#else ++ fd=1; ++#endif ++ return fd; ++} ++ ++int sfdlock(int fd) ++{ int i;unsigned gobble[GOBBLE>>2]; ++ for(i=GOBBLE>>2;i;gobble[--i]=~(unsigned)0); /* SunOS crash test */ ++ return fdlock(fd); ++} ++ ++int fdunlock() ++{ int i;unsigned gobble[GOBBLE]; ++ for(i=GOBBLE;i;gobble[--i]=~(unsigned)0); /* some SunOS libs mess this up */ ++ if(MSK_flock&dolock) ++#ifdef LOCK_EX ++ i|=flock(oldfdlock,LOCK_UN); ++#else ++ i=1; ++#endif ++ if(MSK_lockf&dolock) ++#ifdef F_LOCK ++ { lseek(oldfdlock,oldlockoffset,SEEK_SET); ++ i|=lockf(oldfdlock,F_LOCK,(off_t)2);i|=lockf(oldfdlock,F_ULOCK,(off_t)0); ++ } ++#else ++ i=1; ++#endif ++ if(MSK_fcntl&dolock) ++#ifdef F_SETLKW ++ flck.l_type=F_UNLCK,flck.l_len=0,i|=fcntl(oldfdlock,F_SETLK,&flck); ++#else ++ i=1; ++#endif ++ if(!i) ++ for(i=GOBBLE;i&&gobble[--i]==~(unsigned)0;); ++ return i; ++} ++ ++int main(argc,argv)int argc;char*argv[]; + { int goodlock,testlock,i,pip[2],pipw[2];time_t otimet;unsigned dtimet; + static char filename[]="_locktst.l0"; + close(0);goodlock=0;testlock=FIRST_lock;signal(SIGPIPE,SIG_DFL); +@@ -574,88 +657,6 @@ skip_tests: + puts("Kernel-locking tests completed.");fprintf(stderr,"\n"); + return EXIT_SUCCESS; + } +- +-int killchildren() +-{ int i; +- i=NR_of_forks; +- do +- if(child[--i]>0) +- kill(child[i],SIGTERM),child[i]=0; +- while(i); +- return 0; +-} +- +-int sfdlock(fd) +-{ int i;unsigned gobble[GOBBLE>>2]; +- for(i=GOBBLE>>2;i;gobble[--i]=~(unsigned)0); /* SunOS crash test */ +- return fdlock(fd); +-} +- +-static oldfdlock; +-#ifdef F_SETLKW +-static struct flock flck; /* why can't it be a local variable? */ +-#endif +-#ifdef F_LOCK +-static off_t oldlockoffset; +-#endif +- +-int fdlock(fd) +-{ int i;unsigned gobble[GOBBLE>>2]; +- for(i=GOBBLE>>2;i;gobble[--i]=~(unsigned)0); /* SunOS crash test */ +- oldfdlock=fd;fd=0; +- if(MSK_fcntl&dolock) +-#ifdef F_SETLKW +- { static unsigned extra; +- flck.l_type=F_WRLCK;flck.l_whence=SEEK_SET;flck.l_start=tell(oldfdlock); +- if(!extra--) +- extra=MIN_locks/4,flck.l_len=2,i|=fcntl(oldfdlock,F_SETLK,&flck); +- flck.l_len=0;fd|=fcntl(oldfdlock,F_SETLKW,&flck); +- } +-#else +- fd=1; +-#endif +- if(MSK_lockf&dolock) +-#ifdef F_LOCK +- oldlockoffset=tell(oldfdlock),fd|=lockf(oldfdlock,F_LOCK,(off_t)0); +-#else +- fd=1; +-#endif +- if(MSK_flock&dolock) +-#ifdef LOCK_EX +- fd|=flock(oldfdlock,LOCK_EX); +-#else +- fd=1; +-#endif +- return fd; +-} +- +-int fdunlock() +-{ int i;unsigned gobble[GOBBLE]; +- for(i=GOBBLE;i;gobble[--i]=~(unsigned)0); /* some SunOS libs mess this up */ +- if(MSK_flock&dolock) +-#ifdef LOCK_EX +- i|=flock(oldfdlock,LOCK_UN); +-#else +- i=1; +-#endif +- if(MSK_lockf&dolock) +-#ifdef F_LOCK +- { lseek(oldfdlock,oldlockoffset,SEEK_SET); +- i|=lockf(oldfdlock,F_LOCK,(off_t)2);i|=lockf(oldfdlock,F_ULOCK,(off_t)0); +- } +-#else +- i=1; +-#endif +- if(MSK_fcntl&dolock) +-#ifdef F_SETLKW +- flck.l_type=F_UNLCK,flck.l_len=0,i|=fcntl(oldfdlock,F_SETLK,&flck); +-#else +- i=1; +-#endif +- if(!i) +- for(i=GOBBLE;i&&gobble[--i]==~(unsigned)0;); +- return i; +-} + HERE + + if $MAKE _autotst >_autotst.rrr 2>&1 +@@ -1029,6 +1030,10 @@ cat >_autotst.c < ++#include ++int setrgid(); ++int setresgid(); + int main(){char a[2]; + endpwent();endgrent();memmove(a,"0",1);bcopy("0",a,1);strcspn(a,"0"); + strtol("0",(char**)0,10);strchr("0",'0');strpbrk(a,"0");rename(a,"0"); +@@ -1059,7 +1064,7 @@ echo 'Testing for memmove, strchr, strpbrk, strcspn, strtol, strstr,' + echo ' rename, setrgid, setegid, pow, opendir, mkdir, waitpid, fsync,' + echo ' ftruncate, strtod, strncasecmp, strerror, strlcat,' + echo ' memset, bzero, and _exit' +-if $MAKE _autotst.$O >$DEVNULL 2>&1 ++if $MAKE _autotst.$O >_autotst.rrr 2>&1 + then + : + else diff --git a/SOURCES/procmail-3.24-ipv6.patch b/SOURCES/procmail-3.24-ipv6.patch new file mode 100644 index 0000000..f4c15bf --- /dev/null +++ b/SOURCES/procmail-3.24-ipv6.patch @@ -0,0 +1,228 @@ +diff --git a/src/autoconf b/src/autoconf +index 7c46487..deb97c1 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 \ + /* 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 "\ + /* 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 e3e773a..f93ebf1 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 7befe94..8a711f7 100644 +--- a/src/network.h ++++ b/src/network.h +@@ -1,19 +1,13 @@ + /*$Id$*/ + +-#include /* socket() sendto() AF_INET ++#include /* socket() sendto() */ + /* SOCK_DGRAM */ +-#include /* gethostbyname() getservbyname() +- /* getprotobyname() */ +-#include /* htons() struct sockaddr_in */ ++#include /* 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/SOURCES/procmail-3.24-rhconfig.patch b/SOURCES/procmail-3.24-rhconfig.patch new file mode 100644 index 0000000..63f130c --- /dev/null +++ b/SOURCES/procmail-3.24-rhconfig.patch @@ -0,0 +1,99 @@ +diff --git a/Makefile b/Makefile +index 0be77b1..509a105 100644 +--- a/Makefile ++++ b/Makefile +@@ -23,7 +23,7 @@ MAN5DIR = $(MANDIR)/man$(MAN5SUFFIX) + + # 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 @@ MAN5DIR = $(MANDIR)/man$(MAN5SUFFIX) + + 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 @@ LOCKINGTEST=__defaults__ + # 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 @@ LOCKINGTEST=__defaults__ + # 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 @@ GCC_WARNINGS = -O2 -pedantic -Wreturn-type -Wunused -Wformat -Wtraditional \ + #-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= + +diff --git a/config.h b/config.h +index 4f6b57e..eb348cd 100644 +--- a/config.h ++++ b/config.h +@@ -35,6 +35,7 @@ + */ + /*#define DEFSPATH "PATH=/usr/local/bin:/bin:/usr/bin" /* */ + /*#define DEFPATH "PATH=$HOME/bin:/usr/local/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 +@@ -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 +@@ -98,7 +99,7 @@ + mail present. procmail automatically suppresses this when it isn't + needed or under heavy load. */ + +-/*#define DEFsendmail "/usr/sbin/sendmail" /* uncomment and/or change if ++#define DEFsendmail "/usr/sbin/sendmail" /* uncomment and/or change if + the autoconfigured default + SENDMAIL is not suitable. This program should quack like a sendmail: + it should accept the -oi flag (to tell it to _not_ treat a line diff --git a/SOURCES/procmailrc b/SOURCES/procmailrc new file mode 100644 index 0000000..5830083 --- /dev/null +++ b/SOURCES/procmailrc @@ -0,0 +1,424 @@ +################################################################ +# Here we go.... # +# my very own mail-mangler # +################################################################ + +################################################################ +# Updated to have working URLs and arbitrarily version-bumped # +# to 1.2 on the grounds it matched the mutt version. Very # +# little beyond URLs and list addresses has changed. # +# 2002-03-21. # +################################################################ + + +################################################################ +# In the spirit of the net, 90% of this came from other people # +# and the remaining 10% might be from me. Most of the 90% # +# came from these sources: # +# # +# "Getting started with procmail" at # +# http://www.spambouncer.org/proctut.shtml # +# http://www.spambouncer.org/procmail.rc # +# ...by Catherine A. Hampton. # +# # +# man procmail (overview) # +# man procmailrc (writing the procmailrc) # +# man procmailex (example recipes) # +# man formail (especially for splitting digests) # +# # +# and .procmailrcs from several friends. Thanks, folks, # +# especially to the one who had more patterns which sent # +# things to /dev/null than to mailboxes, for showing me # +# what true impatience with email was like! # +################################################################ + +################################################################ +# Procmailrc files have two parts. First you tell it where # +# everything lives. Then you tell it the recipes. # +################################################################ + +########################################## +# Varibiggles and where everything lives # +########################################## + +################################################################ +# All of these will work quite happily without changing for # +# Red Hat Linux 6.0 through to 7.2.They won't necessarily work # +# for other flavours without changing paths. See the "Getting # +# started with procmail" doc I mentioned above for the likely # +# settings for them in other environments. It has a list :) # +################################################################ + +################################################################ +# Since I installed procmail, I have changed from using # +# sendmail to using exim. Because I can understand the config # +# file. If you use exim, you may need to tweak the config file # +# as I did. If you do, then check you are reading the docs for # +# the right version of exim! This worked for me: # +# # +# http://www.exim.org/exim-html-3.20/doc/html/spec_18.html # +# and look for procmail. It's in the example for the 'pipe # +# transport'. Just paste it into /etc/exim.conf. # +################################################################ + +SHELL=/bin/bash + # Have to have this one (or whatever your shell is) + # Best bet is bash or sh. + +LINEBUF=4096 + # Magic. Apparently it burps on long lines if you don't + # put this in. + +PATH=/bin:/usr/bin:/usr/local/bin + # Where procmail looks for stuff. Works for RH 6.0, 6.1 + # and most other Linux settings I've seen. + +VERBOSE=off + # Change to 'on' to get _long_ procmail log. + # NB: if this is short, I don't want to see long: I get + # a one-line summary for every email procmail looks at! + +MAILDIR=$HOME/Mail + # Not where your mail arrives on the machine. Where + # procmail will assume all the folders you mention in + # your recipes goes. Make sure your email-reading + # program also knows about it. (I understand $HOME/Mail + # is pretty standard, however.) + +LOGFILE=$HOME/Mail/procmaillog + # I don't think this needs to be in your Mail folder, + # but my mail-reader (mutt) is great at different + # sorting, so I put the log into the mail directory :) + # Note learned through experience: if you leave this file + # too long, it will end up with tens of thousands of + # messages. Mutt is not always -that- good at sorting + # that lot quickly :) + +FORMAIL=/usr/bin/formail + # 'formail'. Part of the procmail package. Correct + # the path if this isn't where it lives for you. + # ('which formail' may well tell you.) + +SENDMAIL=/usr/sbin/sendmail + # As with formail, tells procmail where to look for + # sendmail. If sendmail isn't there, mail transfer + # might be handled by a different program. Ask + # your sysadmin :) If you are your own sysadmin, + # then I hope you know. + # Subsequent to writing that, I have learned that this + # file is provided (with this name) by other MTAs too. + # I now use Exim (see note above) and this file is still + # there, courtesy of exim. + + +############################ +# The recipes - I hope... # +############################ + +################################################################ +# Gods know how this works. But it's very useful. If you get # +# email that is sent simultaneously to you and to two other # +# lists, this will nuke two of those so that you only see it # +# once. Came from 'man procmail'. # +################################################################ + +# Nuke duplicate messages +:0 Wh: msgid.lock +| $FORMAIL -D 8192 msgid.cache + +################################################################ +# Next two are from the 'Getting started with procmail' doc. # +# I'm not too sure about how they work, but they look handy... # +################################################################ + +# Create a backup cache of 200 most recent messages in case of +# mistakes (yes, you can change the 200 to 20 or 400 or whatever +# you want) +:0 c +backup + + :0 ic + | cd backup && rm -f dummy `ls -t msg.* | sed -e 1,200d` + +# Regenerate "From" lines to make sure they are valid +:0 fhw +| formail -I "From " -a "From " + + +################################################################ +# For testing shit - I picked a subject line that no-one would # +# send me and then tried different recipes on the results, and # +# then sent myself a whole pile of email about grobblefruit, # +# with different recipes here, to see what happened when I # +# tried different headers and so on. # +################################################################ + +:0: +* ^Subject: Test grobblefruit +IN.testing + + +################################################################ +# Mailing lists # +# # +# I think this is the thing that most people who finally get # +# procmail want to know about: how to get different messages # +# from different mailing lists into different folders. This is # +# where all that MAILDIR stuff comes from. All the folders I # +# name in here are all created off whatever directory I filled # +# in as the MAILDIR at the start. And no, they don't suddenly # +# appear the instant you edit this file. They only appear when # +# procmail finds mail that should go in them. # +# # +# You can have more than one recipe sending email into the # +# same folder, btw, yes. # +# # +# General useful (?) comments: # +# The "^Resent-From: " pattern works wonderfully on # +# lists which generate it. # +# Making the folder not -quite- the list name means you # +# can save mail from it to a folder named for the list. Can # +# be handy. # +# Some lists are indeed a pig to catch everything with. # +# "TO" is different from "To" and you mustn't put a # +# a space after "TO". It catches "To: " and "Cc: ", I # +# think. Very handy. But it doesn't catch everything. If # +# it's a mailman list, don't use it and see below. # +# Mailman-run lists all seem to have a Sender: header # +# which is very useful to sort with. Just add -admin onto # +# the name of the mailing list. # +# Even more useful for mailman-run lists turns out to be # +# "X-BeenThere: listname@site.com" # +################################################################ + +################################################################ +# I hardly use TO now, but here's an example in case. # +################################################################ + +:0: +* ^TOlynx-dev@sig.net +IN.lynx-dev + +########### +# bugtraq # +########### + +:0: +* ^Sender:.*Bugtraq List +IN.bugtraq + +######################### +# gnome CVS commit list # +######################### + +:0: +* X-BeenThere: cvs-commits-list@gnome.org +IN.cvs-commits + + +############## +# gnome-list # +############## + +:0: +* ^X-BeenThere: gnome-list@gnome.org +IN.gnome-list + + +################## +# gnome-doc-list # +################## + +:0: +* ^X-BeenThere: gnome-doc-list@gnome.org +IN.gnome-doc-list + + +############################################################### +# linuxchix lists: there are several mailing lists here: see # +# the end of this file for the different ways to deal with # +# heavy traffic lists with digest options. # +############################################################### + +:0: +* ^X-BeenThere: grrltalk@linuxchix.org +IN.linuxchix + +:0: +* ^X-BeenThere: issues@linuxchix.org +IN.linuxchix + +:0: +* ^X-BeenThere: techtalk@linuxchix.org +IN.linuxchix + + +################################################# +# This is what I consider advanced stuff: this # +# one doesn't put the digest straight into a # +# folder. Instead it runs 'formail +1 -ds', # +# which splits the digest into its original # +# messages, and then puts the results of that # +# into the folder. # +# # +# The address is way way out of date, but I am # +# not sure of the current digest address, so I # +# have left it. # +# # +# It is commented out because I actually read # +# the main list, not the digest, these days. # +################################################# + +# :0: +# * ^TOgrrltalk-digest@hub.org +# | formail +1 -ds >> IN.linuxchix + + +############## +# mutt-users # +############## +:0: +* ^TOmutt-users@mutt.org +IN.mutt-users + +:0: +* ^Sender: owner-mutt-users@mutt.org +IN.mutt-users + + +################################################# +# Procmail list # +# ...be aware that everyone on this list # +# seems to have monster spam filters and thus # +# to be completely unconcerned at the huge # +# amount of spam it gets: you will either need # +# spam filters or tolerance to find the good # +# stuff. (I am not subscribed now, but that was # +# the case when I was.) # +################################################# + +:0: +* ^TOprocmail@Informatik.RWTH-Aachen.DE +IN.procmaillist + + +####################################################### +# Red Hat announce -- very handy for security updates # +####################################################### + +:0: +* ^X-BeenThere: redhat-announce-list@redhat.com +IN.rh-announce + +:0: +* ^X-BeenThere: redhat-watch-list@redhat.com +IN.rh-announce + + +######################### +# windowmaker: wm-users # +######################### + +:0: +*^From wm-user-request@windowmaker.org +IN.wm-user + +################################################################ +# Splitting digests # +# # +# You don't need to do this, but this seems to be another very # +# popular thing to do with procmail. If you're on mailing # +# lists using the digest option, sometimes you may want to # +# split the digests back up into the original emails. There is # +# (of course) more than one way to do this: # +# # +# (1) don't bother: just read through all the digest in one # +# big lump. Simple, easy, and great until you find someone # +# sent a 500-line postscript file or a giant jpg which got # +# included into the digest :( # +# # +# (2) use a mail-reader such as mutt, and if you suddenly want # +# to split a digest up, then whilst reading the message, hit # +# | formail +1 -ds # +# which will put the results into your main inbox. If you want # +# it in a particular folder (like the one you're reading), do # +# | formail +1 -ds >> foldername # +# # +# (3) make procmail (or formail, actually), split it up ready # +# for you to read. # +# # +# So if you want to have each digest automatically split up # +# by procmail as it arrives, and to read each message # +# individually, then here's some examples of what you can put. # +# The first two lines are exactly the same. The third one has # +# a pipe (vertical line) symbol at the start, and then the # +# command you're piping it through. # +# # +# Yes, I picked a notoriously heavy-traffic one for the first # +# example... And it -should- work, but it's not a list I read, # +# sorry! # +# # +# Instead of this: # +# :0: # +# * ^Sender: owner-linux-kernel@vger.rutgers.edu # +# IN.linux-kernel # +# ...you want this: # +# :0: # +# * ^Sender: owner-linux-kernel@vger.rutgers.edu # +# | formail +1 -ds >> IN.linux-kernel # +# # +# Da-dah! That's all. # +# # +# And for those where the list name changes and that's what # +# you're matching patterns on, instead of this: # +# :0: # +# * ^TOgrrltalk@hub.org # +# IN.linuxchix # +# ...you want this: # +# :0: # +* ^TOgrrltalk-digest@hub.org # +# | formail +1 -ds >> IN.linuxchix # +# # +# Magic :) # +################################################################ + + + +################################################################ +# That's it. Any email that doesn't match any of the recipes # +# above goes into my usual place for email, which until I read # +# it is /var/spool/mail/hobbit. Procmail appears to know about # +# that without being told. # +# # +# Quick summary for adding your own or changing these: the # +# general format for putting an email into a folder and not # +# doing anything fancy to it first is: # +# # +# :0: # +# * # +# # +# # +# The ^ sign in my recipes is the sign procmail understands as # +# "start of the line", so "^From" matches the word "From" when # +# it's the start of a header. # +# # +# The "IN." at the start of folder names is not necessary: # +# that's just my naming system. Stolen, like everything else, # +# from a friend's example. It has the benefit that with my # +# mail-reader (mutt), which sorts alphabetically, all of them # +# show up first (capitals are earlier in the alphabet if # +# you're a computer...) and I can save them easily: from # +# IN.blah to blah. If you want to call the folders blah-spool, # +# or just blah, then cool. That'll work, too. # +# # +# It is possible that now you have everything in different # +# folders, you want to read with a cool program which does # +# cool things like display by thread or which understands you # +# when you tell it "These are mailing lists" and does handy # +# things as a result. If you do, and you discover Mutt, you # +# might want to look at my muttrc which is probably next to # +# this file. # +# # +# Have fun! # +# -- Telsa # +################################################################ diff --git a/SPECS/procmail.spec b/SPECS/procmail.spec new file mode 100644 index 0000000..72adaae --- /dev/null +++ b/SPECS/procmail.spec @@ -0,0 +1,347 @@ +# 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.24 +Release: 7%{?dist} +# Dual licensed "gpl-2.0-or-later OR artistic-perl-1.0", but +# artistic-perl-1.0 is not allowed, thus dropped from the license +# tag as per: https://gitlab.com/fedora/legal/fedora-license-data/-/issues/423 +License: gpl-2.0-or-later +URL: https://github.com/BuGlessRB/%{name} +Source0: %{URL}/archive/v%{version}/%{name}-%{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 +Patch0: procmail-3.24-rhconfig.patch +Patch1: procmail-3.15.1-man.patch +Patch2: procmail-3.22-truncate.patch +Patch3: procmail-3.24-ipv6.patch +Patch4: procmail-3.24-coverity-scan-fixes.patch +# https://github.com/BuGlessRB/procmail/pull/7 +Patch5: procmail-3.24-gcc-14-fix.patch +BuildRequires: make +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 +%autosetup -p1 + +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 -p %{SOURCE2} telsas_procmailrc + + +%files +%doc Artistic COPYING FAQ FEATURES HISTORY README KNOWN_BUGS examples telsas_procmailrc + +%{_bindir}/formail +%attr(2755,root,mail) %{_bindir}/lockfile +%{_bindir}/mailstat +%attr(0755,root,mail) %{_bindir}/procmail + +%{_mandir}/man[15]/* + +%changelog +* Mon Jun 24 2024 Troy Dawson - 3.24-7 +- Bump release for June 2024 mass rebuild + +* Wed Jan 31 2024 Jaroslav Škarvada - 3.24-6 +- Fixed FTBFS with gcc-14 + Resolves: rhbz#2261530 + +* Fri Jan 26 2024 Fedora Release Engineering - 3.24-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Fedora Release Engineering - 3.24-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Tue Dec 12 2023 Jaroslav Škarvada - 3.24-3 +- Converted license tag to SPDX + +* Fri Jul 21 2023 Fedora Release Engineering - 3.24-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Thu Jan 12 2023 Jaroslav Škarvada - 3.24-1 +- Switched to the github fork +- New version + Resolves: rhbz#2143702 + +* Fri Jul 22 2022 Fedora Release Engineering - 3.22-57 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Fri Jan 21 2022 Fedora Release Engineering - 3.22-56 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Fri Jul 23 2021 Fedora Release Engineering - 3.22-55 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Wed Jan 27 2021 Fedora Release Engineering - 3.22-54 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Jul 28 2020 Fedora Release Engineering - 3.22-53 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Thu Jan 30 2020 Fedora Release Engineering - 3.22-52 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Jul 26 2019 Fedora Release Engineering - 3.22-51 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sat Feb 02 2019 Fedora Release Engineering - 3.22-50 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Thu Dec 6 2018 Jaroslav Škarvada - 3.22-49 +- Fixed issues found by Coverity Scan + +* Fri Jul 20 2018 Jaroslav Škarvada - 3.22-48 +- Fixed FTBFS by adding gcc requirement + Resolves: rhbz#1606850 + +* Fri Jul 13 2018 Fedora Release Engineering - 3.22-47 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Fri Feb 09 2018 Fedora Release Engineering - 3.22-46 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Nov 21 2017 Jaroslav Škarvada - 3.22-45 +- Renamed loadbuf-fix patch to CVE-2017-16844, because it got CVE number + +* Tue Oct 10 2017 Jaroslav Škarvada - 3.22-44 +- Fixed possible buffer overflow in loadbuf function + Resolves: rhbz#1500071 + +* Thu Aug 03 2017 Fedora Release Engineering - 3.22-43 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 3.22-42 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed Mar 22 2017 Jaroslav Škarvada - 3.22-41 +- Fixed some more conditional jumps that depended on uninitialized values + +* Sat Feb 11 2017 Fedora Release Engineering - 3.22-40 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Feb 04 2016 Fedora Release Engineering - 3.22-39 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Jun 18 2015 Fedora Release Engineering - 3.22-38 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Thu Mar 19 2015 Jaroslav Škarvada - 3.22-37 +- Fixed more buffer overflows and memory corruptions (by crash-fix patch) + +* Thu Sep 4 2014 Jaroslav Škarvada - 3.22-36 +- Fixed buffer overflow in formail + Resolves: CVE-2014-3618 + +* Sun Aug 17 2014 Fedora Release Engineering - 3.22-35 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 3.22-34 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Sun Aug 04 2013 Fedora Release Engineering - 3.22-33 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Mon Feb 4 2013 Jaroslav Škarvada - 3.22-32 +- Updated sources URLs + +* Tue Sep 4 2012 Jaroslav Škarvada - 3.22-31 +- Hardened build with PIE and full RELRO + Resolves: rhbz#853186 + +* Sat Jul 21 2012 Fedora Release Engineering - 3.22-30 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Mon Jan 16 2012 Jaroslav Škarvada - 3.22-29 +- Rebuilt without NO_NFS_ATIME_HACK + Resolves: rhbz#666383 + +* Sat Jan 14 2012 Fedora Release Engineering - 3.22-28 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Fri Nov 25 2011 Jaroslav Škarvada - 3.22-27 +- Defuzzification of ipv6 patch + +* Wed Feb 09 2011 Fedora Release Engineering - 3.22-26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Sun Jul 26 2009 Fedora Release Engineering - 3.22-25 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Tue Jun 30 2009 Miroslav Lichvar 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 - 3.22-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Mon Aug 04 2008 Miroslav Lichvar 3.22-22 +- fix building on sh (CHIKAMA Masaki) (#447658) + +* Tue Feb 19 2008 Fedora Release Engineering - 3.22-21 +- Autorebuild for GCC 4.3 + +* Wed Aug 22 2007 Miroslav Lichvar 3.22-20 +- update license tag + +* Tue Mar 27 2007 Miroslav Lichvar 3.22-19 +- fix description (#234098) +- spec cleanup + +* Fri Oct 27 2006 Miroslav Lichvar 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 - 3.22-17.1 +- rebuild + +* Thu Mar 30 2006 Peter Vrabec 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 - 3.22-16.2.1 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 3.22-16.2 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Fri Mar 18 2005 Peter Vrabec 3.22-16 +- rebuilt + +* Mon Nov 8 2004 Martin Stransky 3.22-15 +- add largefiles patch to support 64-bit file I/O + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Tue Jan 6 2004 Jens Petersen - 3.22-12 +- apply procmail_3.22-8.debian.patch from Debian (fixes #79691) + +* Mon Sep 22 2003 Florian La Roche +- do not link against -ldl and -lnsl + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Wed Jan 22 2003 Tim Powers +- rebuilt + +* Tue Dec 17 2002 Jens Petersen +- convert changelog to utf8 + +* Wed Dec 11 2002 Tim Powers 3.22-8 +- rebuild on all arches + +* Fri Jun 21 2002 Tim Powers +- automated rebuild + +* Thu May 23 2002 Tim Powers +- automated rebuild + +* Mon Mar 25 2002 Trond Eivind Glomsrød 3.22-5 +- Updated Telss's procmailrc file (#61872) + +* Thu Mar 14 2002 Trond Eivind Glomsrød 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 3.22-3 +- Rebuild + +* Wed Jan 09 2002 Tim Powers +- automated rebuild + +* Wed Sep 12 2001 Trond Eivind Glomsrød 3.22-1 +- 3.22 + +* Sat Jun 30 2001 Trond Eivind Glomsrød +- 3.21 + +* Fri Jun 29 2001 Trond Eivind Glomsrød +- 3.20 +- Enable LMTP + +* Thu Apr 12 2001 Trond Eivind Glomsrød +- 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 +- lose setuid/setgid (root,mail) bits (#23257). + +* Fri Aug 11 2000 Jeff Johnson +- add space in delivery rules with '!' (#15947). + +* Wed Jul 12 2000 Prospector +- automatic rebuild + +* Thu Jun 15 2000 Jeff Johnson +- FHS packaging. + +* Mon Feb 7 2000 Jeff Johnson +- compress man pages. + +* Fri Jan 14 2000 Jeff Johnson +- update to 3.14. + +* Mon Aug 16 1999 Bill Nottingham +- fix doc perms. + +* Wed Apr 21 1999 Cristian Gafton +- turn on GROUP_PER_USER +- add some docs to the package + +* Mon Apr 05 1999 Cristian Gafton +- version 3.13 + +* Fri Mar 26 1999 Cristian Gafton +- fixed Group line + +* Sun Mar 21 1999 Cristian Gafton +- auto rebuild in the new build environment (release 16) + +* Sun Aug 16 1998 Jeff Johnson +- build root + +* Mon Apr 27 1998 Prospector System +- translations modified for de, fr, tr + +* Thu Jun 19 1997 Erik Troan +- built against glibc