Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 69873 Details for
Bug 107846
Request to add inter7's qmail-tap patch to qmail
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
qmail-1.03-r16-tap.diff
qmail-1.03-r16-tap.diff (text/plain), 7.49 KB, created by
kfm
on 2005-10-04 13:18:49 UTC
(
hide
)
Description:
qmail-1.03-r16-tap.diff
Filename:
MIME Type:
Creator:
kfm
Created:
2005-10-04 13:18:49 UTC
Size:
7.49 KB
patch
obsolete
>diff -urN qmail-1.03/error.h qmail-1.03.tap/error.h >--- qmail-1.03/error.h 2005-10-04 20:50:25.000000000 +0100 >+++ qmail-1.03.tap/error.h 2005-10-04 20:52:52.000000000 +0100 >@@ -1,5 +1,6 @@ > #ifndef ERROR_H > #define ERROR_H >+#include <errno.h> > > #include <errno.h> > >diff -urN qmail-1.03/Makefile qmail-1.03.tap/Makefile >--- qmail-1.03/Makefile 2005-10-04 20:50:30.000000000 +0100 >+++ qmail-1.03.tap/Makefile 2005-10-04 20:52:52.000000000 +0100 >@@ -1500,13 +1500,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 >@@ -1769,6 +1770,10 @@ > compile qregex.c qregex.h > ./compile qregex.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 -urN qmail-1.03/qmail-control.9 qmail-1.03.tap/qmail-control.9 >--- qmail-1.03/qmail-control.9 2005-10-04 20:50:29.000000000 +0100 >+++ qmail-1.03.tap/qmail-control.9 2005-10-04 20:52:52.000000000 +0100 >@@ -79,6 +79,7 @@ > .I servercert.pem \fR(none) \fRqmail-smtpd > .I smtpgreeting \fIme \fRqmail-smtpd > .I smtproutes \fR(none) \fRqmail-remote >+.I taps \fR(none) \fRqmail-queue > .I timeoutconnect \fR60 \fRqmail-remote > .I timeoutremote \fR1200 \fRqmail-remote > .I timeoutsmtpd \fR1200 \fRqmail-smtpd >@@ -92,6 +93,7 @@ > .SH "SEE ALSO" > qmail-inject(8), > qmail-qmqpc(8), >+qmail-queue(8), > qmail-remote(8), > qmail-send(8), > qmail-showctl(8), >diff -urN qmail-1.03/qmail-queue.8 qmail-1.03.tap/qmail-queue.8 >--- qmail-1.03/qmail-queue.8 2005-10-04 20:50:26.000000000 +0100 >+++ qmail-1.03.tap/qmail-queue.8 2005-10-04 20:57:18.000000000 +0100 >@@ -46,6 +46,12 @@ > will invoke the contents of > .B $QMAILQUEUE > instead, if that environment variable is set. >+.SH "CONTROL FILES" >+.TP 5 >+.I taps >+Should contain regex syntax of email addresses to tap and >+the associated email address to send the copy to. The two >+fields should be separated by a colon. > .SH "FILESYSTEM RESTRICTIONS" > .B qmail-queue > imposes two constraints on the queue structure: >diff -urN qmail-1.03/qmail-queue.c qmail-1.03.tap/qmail-queue.c >--- qmail-1.03/qmail-queue.c 2005-10-04 20:50:26.000000000 +0100 >+++ qmail-1.03.tap/qmail-queue.c 2005-10-04 20:52:52.000000000 +0100 >@@ -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,13 @@ > > 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); >+ > pidopen(); > if (fstat(messfd,&pidst) == -1) die(63); > >@@ -219,14 +236,28 @@ > 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 +268,24 @@ > 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 +297,42 @@ > 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] != ':') && (i < tap.len)) i++; >+ if (tap.s[j] == '!') { >+ negate = 1; >+ j++; >+ } >+ stralloc_copys(&tapaddr, &tap.s[i+1]); >+ >+ stralloc_copyb(&curregex,tap.s + j,(i - j)); >+ stralloc_0(&curregex); >+ x = matchregex(chkaddr.s, curregex.s, tmpbuf); >+ >+ while ((tap.s[i] != '\0') && (i < tap.len)) i++; >+ >+ if ((negate) && (x == 0)) { >+ return 1; >+ } >+ if (!(negate) && (x > 0)) { >+ return 1; >+ } >+ j = i + 1; >+ negate = 0; >+ >+ >+ } >+ return 0; >+} >+ >diff -urN qmail-1.03/README.tap qmail-1.03.tap/README.tap >--- qmail-1.03/README.tap 1970-01-01 01:00:00.000000000 +0100 >+++ qmail-1.03.tap/README.tap 2005-10-04 20:53:04.000000000 +0100 >@@ -0,0 +1,28 @@ >+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 to 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. >+ >+3) Qmail does not need to be restated to when the taps control file is changed. >+ >+The regex match is applied to both the to and from email addresses. So email >+sent to or from the addresses will be copied. Matching is case insensitive. >+If there are multiple matches, the first match is used. >+ >+The queue tap patch adds a new control file: >+ >+/var/qmail/control/taps >+Contains a regex style list of addresses to tap and the email >+address of where you want the copy sent to. >+ >+Examples: >+a) To tap a whole domain add a line like: >+.*@domain.com:joe@example.com >+ >+ >+b) To tap an individual email address add a line like: >+user@domain.com:other@example.com
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 107846
:
69685
| 69873 |
174289
|
316007
|
316009
|
316011