Hey,

I hacked something together..

It's a patch to both qmail (for stamping the headers in) and vpopmail.  I
don't know if it will apply cleanly to the qmail codebase as the patch file
was generated off of qmail+qregex+tarpit+my mods

This is probably worthless :) but here it is:

*** CUT HERE ***
--- qmail-1.03/qmail-smtpd.c.orig       Wed Jan  8 10:25:11 2003
+++ qmail-1.03/qmail-smtpd.c    Wed Jan  8 10:29:18 2003
@@ -86,6 +86,7 @@
 char *remoteinfo;
 char *local;
 char *relayclient;
+char *vpopusername;

 stralloc helohost = {0};
 char *fakehelo; /* pointer into helohost, or 0 */
@@ -155,6 +156,7 @@
   if (!remotehost) remotehost = "unknown";
   remoteinfo = env_get("TCPREMOTEINFO");
   relayclient = env_get("RELAYCLIENT");
+  vpopusername = env_get("USERNAME");
   dohelo(remotehost);
 }

@@ -423,6 +425,7 @@
   int hops;
   unsigned long qp;
   char *qqx;
+  char *popbeforebuf[128];

   if (!seenmail) { err_wantmail(); return; }
   if (!rcptto.len) { err_wantrcpt(); return; }
@@ -433,6 +436,12 @@
   out("354 go ahead\r\n");

   received(&qqt,"SMTP",local,remoteip,remotehost,remoteinfo,fakehelo);
+  if (vpopusername)
+  {
+       sprintf(popbeforebuf, "X-Pop-Before-SMTP-Sender: %s\n", vpopusername);
+       qmail_puts(&qqt, popbeforebuf);
+  }
+
   blast(&hops);
   hops = (hops >= MAXHOPS);
   if (hops) qmail_fail(&qqt);
--- vpopmail-5.2.1/vpopmail.c.orig      Wed Jan  8 10:30:23 2003
+++ vpopmail-5.2.1/vpopmail.c   Wed Jan  8 10:37:27 2003
@@ -2069,7 +2069,7 @@
 }

 #ifdef POP_AUTH_OPEN_RELAY
-int open_smtp_relay()
+int open_smtp_relay(char *username, char *domainname)
 {
 #ifdef USE_SQL
        vopen_smtp_relay();
@@ -2140,8 +2140,8 @@
                        rebuild_cdb = 0;
                }
        }
-       fprintf( fs1, "%s:allow,RELAYCLIENT=\"\",RBLSMTPD=\"\"   %d\n",
-               ipaddr, (int)mytime);
+       fprintf( fs1, "%s:allow,RELAYCLIENT=\"\",RBLSMTPD=\"\",USERNAME=\"%s@%s\"
%d\n",
+               ipaddr, username, domainname, (int)mytime);
        fclose(fs);
        fclose(fs1);

--- vpopmail-5.2.1/vpopmail.h.orig      Wed Jan  8 10:42:53 2003
+++ vpopmail-5.2.1/vpopmail.h   Wed Jan  8 10:38:28 2003
@@ -146,7 +146,7 @@
 struct vqpasswd *vauth_user(char *user, char *domain, char *password, char
*apop);
 int vmake_maildir(char *domain, char *dir);
 int vsqwebmail_pass( char *dir, char *crypted, uid_t uid, gid_t gid );
-int open_smtp_relay();
+int open_smtp_relay(char *username, char *domainname);
 unsigned  long tcprules_open();
 int vfd_copy(int,int);
 int vfd_move(int,int);
--- vpopmail-5.2.1/vchkpw.c.orig        Wed Jan  8 10:52:18 2003
+++ vpopmail-5.2.1/vchkpw.c     Wed Jan  8 10:54:01 2003
@@ -401,7 +401,7 @@
 #ifdef POP_AUTH_OPEN_RELAY
     /* Check if we should open up relay for this account */
     if ( (vpw->pw_gid & NO_RELAY) == 0 ) {
-        open_smtp_relay();
+        open_smtp_relay(TheUser, TheDomain);
     }
 #endif
*** CUT HERE ***





-----Original Message-----
From: Peter Palmreuther [mailto:[EMAIL PROTECTED]]
Sent: Monday, January 06, 2003 12:51 PM
To: [EMAIL PROTECTED]
Subject: Re: [vchkpw] POP before SMTP


Hi Daniel,

On Mon, 6 Jan 2003 12:22:54 -0500
"Daniel Corbe" <[EMAIL PROTECTED]> wrote:

> Is there any way to get vpopmail to stamp the E-Mail address of the
> person who popped into the server on any outgoing messages?

Not yet. But an idea would be to modify vpopmail to not only put the
IP-address and RELAYCLIENT="" of the caller into tcp.smtp.cdb but also
TCPREMOTEINFO=<username>.
Should be a rather easy patch.
--
Pit

Attachment: popbefore.patch
Description: Binary data

Reply via email to