Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 58077 Details for
Bug 90631
Add Ability for Qmail to log all emails that pass through the server
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Inter7 qmail-tap patch
qmail-tap.diff (text/plain), 7.81 KB, created by
Andrew Preece
on 2005-05-04 15:09:10 UTC
(
hide
)
Description:
Inter7 qmail-tap patch
Filename:
MIME Type:
Creator:
Andrew Preece
Created:
2005-05-04 15:09:10 UTC
Size:
7.81 KB
patch
obsolete
>diff -Nur qmail-1.03/Makefile qmail-1.03.tap/Makefile >--- qmail-1.03/Makefile 1998-06-15 05:53:16.000000000 -0500 >+++ qmail-1.03.tap/Makefile 2005-02-15 12:50:37.000000000 -0600 >@@ -1419,13 +1419,14 @@ > nroff -man qmail-qstat.8 > qmail-qstat.0 > > qmail-queue: \ >-load qmail-queue.o triggerpull.o fmtqfn.o now.o date822fmt.o \ >-datetime.a seek.a ndelay.a open.a sig.a alloc.a substdio.a error.a \ >-str.a fs.a auto_qmail.o auto_split.o auto_uids.o >+load qmail-queue.o triggerpull.o fmtqfn.o now.o date822fmt.o qregex.o \ >+datetime.a seek.a case.a ndelay.a open.a sig.a getln.a stralloc.a alloc.a \ >+substdio.a error.a control.o constmap.o str.a fs.a auto_qmail.o \ >+auto_split.o auto_uids.o > ./load qmail-queue triggerpull.o fmtqfn.o now.o \ >- date822fmt.o datetime.a seek.a ndelay.a open.a sig.a \ >- alloc.a substdio.a error.a str.a fs.a auto_qmail.o \ >- auto_split.o auto_uids.o >+ date822fmt.o qregex.o control.o constmap.o datetime.a case.a seek.a \ >+ ndelay.a open.a sig.a getln.a stralloc.a alloc.a substdio.a error.a \ >+ str.a fs.a auto_qmail.o auto_split.o auto_uids.o > > qmail-queue.0: \ > qmail-queue.8 >@@ -1681,6 +1682,10 @@ > constmap.h stralloc.h gen_alloc.h rcpthosts.h > ./compile rcpthosts.c > >+qregex.o: \ >+compile qregex.c qregex.h >+ ./compile qregex.c >+ > readsubdir.o: \ > compile readsubdir.c readsubdir.h direntry.h fmt.h scan.h str.h \ > auto_split.h >diff -Nur qmail-1.03/qmail-control.9 qmail-1.03.tap/qmail-control.9 >--- qmail-1.03/qmail-control.9 1998-06-15 05:53:16.000000000 -0500 >+++ qmail-1.03.tap/qmail-control.9 2005-02-15 12:59:52.000000000 -0600 >@@ -63,6 +63,8 @@ > .I rcpthosts \fR(none) \fRqmail-smtpd > .I smtpgreeting \fIme \fRqmail-smtpd > .I smtproutes \fR(none) \fRqmail-remote >+.I taps \fR(none) \fRqmail-queue >+.I tapscopy \fR(none) \fRqmail-queue > .I timeoutconnect \fR60 \fRqmail-remote > .I timeoutremote \fR1200 \fRqmail-remote > .I timeoutsmtpd \fR1200 \fRqmail-smtpd >@@ -72,6 +74,7 @@ > .SH "SEE ALSO" > qmail-inject(8), > qmail-qmqpc(8), >+qmail-queue(8), > qmail-remote(8), > qmail-send(8), > qmail-showctl(8), >diff -Nur qmail-1.03/qmail-queue.8 qmail-1.03.tap/qmail-queue.8 >--- qmail-1.03/qmail-queue.8 1998-06-15 05:53:16.000000000 -0500 >+++ qmail-1.03.tap/qmail-queue.8 2005-02-15 12:56:16.000000000 -0600 >@@ -40,6 +40,13 @@ > However, the recipients probably expect to see a proper header, > as described in > .BR qmail-header(5) . >+.SH "CONTROL FILES" >+.TP 5 >+.I taps >+Should contain regex syntax of email addresses to tap. >+.TP 5 >+.I tapscopy >+Email address for all tapped mail copies. > .SH "FILESYSTEM RESTRICTIONS" > .B qmail-queue > imposes two constraints on the queue structure: >diff -Nur qmail-1.03/qmail-queue.c qmail-1.03.tap/qmail-queue.c >--- qmail-1.03/qmail-queue.c 1998-06-15 05:53:16.000000000 -0500 >+++ qmail-1.03.tap/qmail-queue.c 2005-02-15 12:46:33.000000000 -0600 >@@ -16,6 +16,8 @@ > #include "auto_uids.h" > #include "date822fmt.h" > #include "fmtqfn.h" >+#include "stralloc.h" >+#include "constmap.h" > > #define DEATH 86400 /* 24 hours; _must_ be below q-s's OSSIFIED (36 hours) */ > #define ADDR 1003 >@@ -25,6 +27,14 @@ > char outbuf[256]; > struct substdio ssout; > >+int tapok = 0; >+stralloc tap = {0}; >+struct constmap maptap; >+stralloc chkaddr = {0}; >+int tapped; >+stralloc tapaddr = {0}; >+stralloc controlfile = {0}; >+ > datetime_sec starttime; > struct datetime dt; > unsigned long mypid; >@@ -175,6 +185,18 @@ > > alarm(DEATH); > >+ stralloc_copys( &controlfile, auto_qmail); >+ stralloc_cats( &controlfile, "/control/taps"); >+ stralloc_0( &controlfile); >+ tapok = control_readfile(&tap,controlfile.s,0); >+ if (tapok == -1) die(65); >+ if (!constmap_init(&maptap,tap.s,tap.len,0)) die(65); >+ >+ stralloc_copys( &controlfile, auto_qmail); >+ stralloc_cats( &controlfile, "/control/tapscopy"); >+ stralloc_0( &controlfile); >+ if ( control_readline(&tapaddr,controlfile.s) == -1 ) die(65); >+ > pidopen(); > if (fstat(messfd,&pidst) == -1) die(63); > >@@ -219,14 +241,30 @@ > if (substdio_get(&ssin,&ch,1) < 1) die_read(); > if (ch != 'F') die(91); > if (substdio_bput(&ssout,&ch,1) == -1) die_write(); >+ stralloc_0(&chkaddr); > for (len = 0;len < ADDR;++len) > { >+ if ( len == 1 ) stralloc_copyb(&chkaddr, &ch,1); >+ else if ( len > 1 ) stralloc_catb(&chkaddr, &ch,1); > if (substdio_get(&ssin,&ch,1) < 1) die_read(); > if (substdio_put(&ssout,&ch,1) == -1) die_write(); > if (!ch) break; > } > if (len >= ADDR) die(11); > >+ /* check the from address */ >+ stralloc_0(&chkaddr); >+ if (tapped == 0 && tapcheck()==1 ) >+ { >+ tapped = 1; >+ if ( tapaddr.len > 0 ) >+ { >+ if (substdio_bput(&ssout,"T",1) == -1) die_write(); >+ if (substdio_bput(&ssout,tapaddr.s,tapaddr.len) == -1) die_write(); >+ if (substdio_bput(&ssout,"",1) == -1) die_write(); >+ } >+ } >+ > if (substdio_bput(&ssout,QUEUE_EXTRA,QUEUE_EXTRALEN) == -1) die_write(); > > for (;;) >@@ -237,10 +275,26 @@ > if (substdio_bput(&ssout,&ch,1) == -1) die_write(); > for (len = 0;len < ADDR;++len) > { >+ if ( len == 1 ) stralloc_copyb(&chkaddr, &ch,1); >+ else if ( len > 1 ) stralloc_catb(&chkaddr, &ch,1); > if (substdio_get(&ssin,&ch,1) < 1) die_read(); > if (substdio_bput(&ssout,&ch,1) == -1) die_write(); > if (!ch) break; > } >+ >+ /* check the to address */ >+ stralloc_0(&chkaddr); >+ if (tapped == 0 && tapcheck()==1 ) >+ { >+ tapped = 1; >+ if ( tapaddr.len > 0 ) >+ { >+ if (substdio_bput(&ssout,"T",1) == -1) die_write(); >+ if (substdio_bput(&ssout,tapaddr.s,tapaddr.len) == -1) die_write(); >+ if (substdio_bput(&ssout,"",1) == -1) die_write(); >+ } >+ } >+ > if (len >= ADDR) die(11); > } > >@@ -252,3 +306,33 @@ > triggerpull(); > die(0); > } >+ >+int tapcheck() >+{ >+ int i = 0; >+ int j = 0; >+ int x = 0; >+ int negate = 0; >+ stralloc curregex = {0}; >+ char tmpbuf[200]; >+ >+ while (j < tap.len) >+ { >+ i = j; >+ while ((tap.s[i] != '\0') && (i < tap.len)) i++; >+ if (tap.s[j] == '!') >+ { >+ negate = 1; >+ j++; >+ } >+ stralloc_copyb(&curregex,tap.s + j,(i - j)); >+ stralloc_0(&curregex); >+ x = matchregex(chkaddr.s, curregex.s, tmpbuf); >+ >+ if ((negate) && (x == 0)) return 1; >+ if (!(negate) && (x > 0)) return 1; >+ j = i + 1; >+ negate = 0; >+ } >+ return 0; >+} >diff -Nur qmail-1.03/README.tap qmail-1.03.tap/README.tap >--- qmail-1.03/README.tap 1969-12-31 18:00:00.000000000 -0600 >+++ qmail-1.03.tap/README.tap 2005-02-15 13:00:37.000000000 -0600 >@@ -0,0 +1,33 @@ >+qmail provides the ability to make a copy of each email that flows through the system. >+This is done using the QUEUE_EXTRA code. See qmail FAQ #8.2 >+ >+The qmail tap patch adds additional functionality: >+1) Specify which email addresses tap using a regex style control file. With the >+ regex function, you can specify full domains or individual email addresses. >+2) Specify which email address to send the emails to using a control file. >+3) Qmail does not need to be recompiled to change the above. Just updated >+ the control files. >+ >+The regex match is applied to both the to and from email addresses. So email >+sent to or from the addresses will be copied. >+ >+The queue tap patch adds two new control files: >+ >+1) control/taps >+Contains a regex style list of addresses to tap. >+ >+Examples: >+a) To tap a whole domain add a line like: >+.*@domain.com >+ >+ >+b) To tap an individual email address add a line like: >+user@domain.com >+ >+2) control/tapscopy >+Contains the email address to send the copies to. >+ >+example: >+backup@otherdomain.com >+ >+The tapscopy address can be a local or remote email address. >diff -Nur qmail-1.03/TARGETS qmail-1.03.tap/TARGETS >--- qmail-1.03/TARGETS 1998-06-15 05:53:16.000000000 -0500 >+++ qmail-1.03.tap/TARGETS 2005-02-15 12:48:21.000000000 -0600 >@@ -385,3 +385,4 @@ > man > setup > check >+qregex.o
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 90631
:
57397
|
57398
| 58077