You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
256 lines
8.3 KiB
256 lines
8.3 KiB
|
23 years ago
|
--- man/procmail.man Tue Sep 11 06:54:43 2001
|
||
|
|
+++ man/procmail.man Sun Mar 30 21:13:44 2003
|
||
|
|
@@ -166,7 +166,8 @@
|
||
|
|
accept an unlimited number of arguments.@ETCRCS_desc@
|
||
|
|
For some advanced usage of this option you should look in the
|
||
|
|
.B EXAMPLES
|
||
|
|
-section below.@LMTPOPTdesc@.SH ARGUMENTS
|
||
|
|
+section below.@LMTPOPTdesc@
|
||
|
|
+.SH ARGUMENTS
|
||
|
|
Any arguments containing an '=' are considered to be environment variable
|
||
|
|
assignments, they will
|
||
|
|
.I all
|
||
|
|
@@ -720,6 +721,15 @@
|
||
|
|
.na
|
||
|
|
.nf
|
||
|
|
@FW_content@
|
||
|
|
+.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
|
||
|
|
--- man/procmailrc.man Tue Sep 11 06:55:03 2001
|
||
|
|
+++ man/procmailrc.man Sun Mar 30 21:13:44 2003
|
||
|
|
@@ -779,7 +779,7 @@
|
||
|
|
.PP
|
||
|
|
Some non-optimal and non-obvious regexps set MATCH to an incorrect
|
||
|
|
value. The regexp can be made to work by removing one or more unneeded
|
||
|
|
-'*', '+', or '?' operator on the left-hand side of the \e/ token.
|
||
|
|
+\&'*', '+', or '?' operator on the left-hand side of the \e/ token.
|
||
|
|
.SH MISCELLANEOUS
|
||
|
|
If the regular expression contains `\fB@TO_key@\fP' it will be substituted by
|
||
|
|
.na
|
||
|
|
--- new/mailstat.1 Thu Jan 1 01:00:00 1970
|
||
|
|
+++ new/mailstat.1 Sun Mar 30 21:13:44 2003
|
||
|
|
@@ -0,0 +1,40 @@
|
||
|
|
+.TH MAILSTAT 1
|
||
|
|
+.SH NAME
|
||
|
|
+mailstat \- shows mail-arrival statistics
|
||
|
|
+.SH SYNOPSIS
|
||
|
|
+.B mailstat
|
||
|
|
+[\-klmots] [logfile]
|
||
|
|
+.SH DESCRIPTION
|
||
|
|
+.B mailstat
|
||
|
|
+parses a procmail-generated $LOGFILE and displays
|
||
|
|
+a summary about the messages delivered to all folders
|
||
|
|
+(total size, average size, nr of messages).
|
||
|
|
+The $LOGFILE is truncated to zero length, unless the
|
||
|
|
+.B -k
|
||
|
|
+option is used.
|
||
|
|
+Exit code 0 if mail arrived, 1 if no mail arrived.
|
||
|
|
+.SH OPTIONS
|
||
|
|
+.TP
|
||
|
|
+.I \-k
|
||
|
|
+keep logfile intact
|
||
|
|
+.TP
|
||
|
|
+.I \-l
|
||
|
|
+long display format
|
||
|
|
+.TP
|
||
|
|
+.I \-m
|
||
|
|
+merge any errors into one line
|
||
|
|
+.TP
|
||
|
|
+.I \-o
|
||
|
|
+use the old logfile
|
||
|
|
+.TP
|
||
|
|
+.I \-t
|
||
|
|
+terse display format
|
||
|
|
+.TP
|
||
|
|
+.I \-s
|
||
|
|
+silent in case of no mail
|
||
|
|
+.SH NOTES
|
||
|
|
+Customise to your heart's content, this program is only provided as a
|
||
|
|
+guideline.
|
||
|
|
+.SH AUTHOR
|
||
|
|
+This manual page was written by Santiago Vila <sanvila@debian.org>
|
||
|
|
+for the Debian GNU/Linux distribution (but may be used by others).
|
||
|
|
--- src/comsat.c Tue Sep 11 06:55:46 2001
|
||
|
|
+++ src/comsat.c Sun Mar 30 21:13:45 2003
|
||
|
|
@@ -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;
|
||
|
|
--- src/foldinfo.h Tue Dec 5 07:34:25 2000
|
||
|
|
+++ src/foldinfo.h Sun Mar 30 21:13:45 2003
|
||
|
|
@@ -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 */
|
||
|
|
--- src/mailfold.c Tue Sep 11 06:58:34 2001
|
||
|
|
+++ src/mailfold.c Sun Mar 30 21:13:45 2003
|
||
|
|
@@ -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);
|
||
|
|
--- src/manconf.c Tue Sep 11 06:58:34 2001
|
||
|
|
+++ src/manconf.c Sun Mar 30 21:13:44 2003
|
||
|
|
@@ -139,7 +139,7 @@
|
||
|
|
sh before procmail ever sees it; it is however a necessary kludge against\1\
|
||
|
|
overoptimising sendmail programs:\1");
|
||
|
|
#else
|
||
|
|
- ps("FW_content","\"|exec @BINDIR@/procmail\"");
|
||
|
|
+ ps("FW_content","\"|exec @BINDIR@/procmail || exit 75\"");
|
||
|
|
ps("FW_comment","");
|
||
|
|
#endif
|
||
|
|
#else
|
||
|
|
@@ -233,7 +233,7 @@
|
||
|
|
\2-@PRESERVOPT@\1and\1.BR \2-@FROMWHOPT@ .\1");
|
||
|
|
pc("LMTPOPT",LMTPOPT);
|
||
|
|
#else
|
||
|
|
- ps("LMTPOPTdesc","");ps("LMTPusage","");
|
||
|
|
+ ps("LMTPOPTdesc","");ps("LMTPusage","\1");
|
||
|
|
#endif
|
||
|
|
pname("INIT_UMASK",0);printf("0%lo/g\n",(unsigned long)INIT_UMASK);lines--;
|
||
|
|
pn("DEFlinebuf",DEFlinebuf);
|
||
|
|
--- src/memblk.c Fri Jun 29 04:20:56 2001
|
||
|
|
+++ src/memblk.c Sun Mar 30 21:13:44 2003
|
||
|
|
@@ -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;
|
||
|
|
}
|
||
|
|
|
||
|
|
--- src/memblk.h Sat Jun 30 06:12:18 2001
|
||
|
|
+++ src/memblk.h Sun Mar 30 21:13:44 2003
|
||
|
|
@@ -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 */
|
||
|
|
--- src/pipes.c Tue Sep 11 06:58:44 2001
|
||
|
|
+++ src/pipes.c Sun Mar 30 21:13:45 2003
|
||
|
|
@@ -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);
|
||
|
|
--- src/procmail.c Tue Sep 11 06:59:14 2001
|
||
|
|
+++ src/procmail.c Sun Mar 30 21:13:45 2003
|
||
|
|
@@ -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++)
|