diff options
Diffstat (limited to 'mail/qmail-spamcontrol/files/patch-qmail-smtpd.c.patch')
-rw-r--r-- | mail/qmail-spamcontrol/files/patch-qmail-smtpd.c.patch | 112 |
1 files changed, 61 insertions, 51 deletions
diff --git a/mail/qmail-spamcontrol/files/patch-qmail-smtpd.c.patch b/mail/qmail-spamcontrol/files/patch-qmail-smtpd.c.patch index 270c2e992b88..809ff72328d1 100644 --- a/mail/qmail-spamcontrol/files/patch-qmail-smtpd.c.patch +++ b/mail/qmail-spamcontrol/files/patch-qmail-smtpd.c.patch @@ -1,124 +1,130 @@ ---- ../orig/qmail-smtpd.c.patch Mon May 23 18:02:27 2005 -+++ qmail-smtpd.c.patch Wed May 25 09:50:32 2005 +--- ../orig/qmail-smtpd.c.patch Sat Jul 9 07:16:04 2005 ++++ qmail-smtpd.c.patch Wed Jul 13 13:40:58 2005 @@ -1,8 +1,6 @@ ---- qmail-smtpd.c.orig 1998-06-15 --+++ qmail-smtpd.c 2005-05-23 +-+++ qmail-smtpd.c 2005-07-09 ---- .././qmail-1.03/qmail-smtpd.c Mon Jun 15 12:53:16 1998 --+++ ../qmail-1.03.2314/qmail-smtpd.c Mon May 23 23:02:20 2005 +-+++ ../qmail-1.03.2316/qmail-smtpd.c Sun Jun 26 20:57:36 2005 -@@ -20,14 +20,51 @@ -+--- qmail-smtpd.c.orig Wed May 25 09:46:36 2005 -++++ qmail-smtpd.c Wed May 25 09:50:11 2005 -+@@ -20,14 +20,52 @@ ++--- qmail-smtpd.c.orig Wed Jul 13 13:31:14 2005 +++++ qmail-smtpd.c Wed Jul 13 13:40:38 2005 ++@@ -20,14 +20,54 @@ #include "now.h" #include "exit.h" #include "rcpthosts.h" -@@ -20,6 +18,7 @@ +@@ -20,6 +18,9 @@ +#define CRAM_MD5 +#define AUTHSLEEP 5 +#define RECIPIENTS550 +++// <Added by Garga> ++#define LOCALMFREQAUTH +++// </Added by Garga> + +#define MIMETYPE_LEN 9 +#define LOADER_LEN 5 -@@ -55,7 +54,7 @@ +@@ -55,7 +56,7 @@ int safewrite(fd,buf,len) int fd; char *buf; int len; { int r; -@@ -48,9 +85,6 @@ -+@@ -48,9 +86,6 @@ ++@@ -48,9 +88,6 @@ void die_control() { out("421 unable to read controls (#4.3.0)\r\n"); flush(); _exit(1); } void die_ipme() { out("421 unable to figure out my IP addresses (#4.3.0)\r\n"); flush(); _exit(1); } void straynewline() { out("451 See http://pobox.com/~djb/docs/smtplf.html.\r\n"); flush(); _exit(1); } -@@ -65,7 +64,7 @@ +@@ -65,7 +66,7 @@ void err_unimpl() { out("502 unimplemented (#5.5.1)\r\n"); } void err_syntax() { out("555 syntax error (#5.5.4)\r\n"); } void err_wantmail() { out("503 MAIL first (#5.5.1)\r\n"); } -@@ -58,6 +92,114 @@ -+@@ -58,6 +93,114 @@ ++@@ -58,6 +95,114 @@ void err_noop() { out("250 ok\r\n"); } void err_vrfy() { out("252 send some mail, i'll try my best\r\n"); } void err_qqt() { out("451 qqt failure (#4.3.0)\r\n"); } -@@ -180,7 +179,7 @@ +@@ -180,7 +181,7 @@ stralloc greeting = {0}; -@@ -76,6 +218,7 @@ -+@@ -76,6 +219,7 @@ ++@@ -76,6 +221,7 @@ smtp_greet("221 "); out("\r\n"); flush(); _exit(0); } -@@ -188,7 +187,7 @@ +@@ -188,7 +189,7 @@ char *remoteip; char *remotehost; char *remoteinfo; -@@ -85,10 +228,30 @@ -+@@ -85,10 +229,30 @@ ++@@ -85,10 +231,30 @@ stralloc helohost = {0}; char *fakehelo; /* pointer into helohost, or 0 */ -@@ -220,7 +219,7 @@ +@@ -220,7 +221,7 @@ } int liphostok = 0; -@@ -97,6 +260,39 @@ -+@@ -97,6 +261,40 @@ ++@@ -97,6 +263,42 @@ stralloc bmf = {0}; struct constmap mapbmf; -@@ -248,6 +247,7 @@ +@@ -248,6 +249,9 @@ +char *localmfcheck; +char *mfdnscheck; +char *reqauth; +++// <Added by Garga> ++char *localmf_reqauth; +++// </Added by Garga> + +int maxrcptcount = 0; +int flaglocal = -1; -@@ -260,7 +260,7 @@ +@@ -260,7 +264,7 @@ void setup() { char *x; -@@ -111,17 +307,24 @@ -+@@ -111,17 +309,24 @@ ++@@ -111,17 +313,24 @@ if (timeout <= 0) timeout = 1; if (rcpthosts_init() == -1) die_control(); -@@ -286,7 +286,7 @@ +@@ -286,7 +290,7 @@ remoteip = env_get("TCPREMOTEIP"); if (!remoteip) remoteip = "unknown"; local = env_get("TCPLOCALHOST"); --@@ -131,11 +334,70 @@ -+@@ -131,11 +336,76 @@ +-@@ -131,11 +334,72 @@ ++@@ -131,11 +340,80 @@ if (!remotehost) remotehost = "unknown"; remoteinfo = env_get("TCPREMOTEINFO"); relayclient = env_get("RELAYCLIENT"); -@@ -338,6 +338,12 @@ +@@ -338,6 +342,14 @@ + qhpsi = env_get("QHPSI"); + if (!qhpsi) qhpsi = "unknown"; + +++// <Added by Garga> ++#ifdef LOCALMFREQAUTH ++ localmf_reqauth = env_get("LOCALMFREQAUTH"); ++#else ++ localmf_reqauth = 0; ++#endif +++// </Added by Garga> ++ +#ifdef RELAYMAILFROM + if (!relayclient) { + relaymailfromok = control_readfile(&relaymailfrom,"control/relaymailfrom",0); -@@ -358,7 +364,7 @@ +@@ -360,7 +372,7 @@ int addrparse(arg) char *arg; --@@ -151,12 +413,17 @@ -+@@ -151,12 +421,17 @@ +-@@ -151,12 +415,17 @@ ++@@ -151,12 +429,17 @@ i = str_chr(arg,'<'); if (arg[i]) arg += i + 1; -@@ -376,17 +382,12 @@ +@@ -378,17 +390,12 @@ /* strip source route */ if (*arg == '@') while (*arg) if (*arg++ == ':') break; --@@ -199,12 +466,105 @@ -+@@ -199,12 +474,105 @@ +-@@ -199,12 +468,106 @@ ++@@ -199,12 +482,106 @@ int bmfcheck() { @@ -133,7 +139,7 @@ + int k = 0; + char subvalue; + -@@ -436,7 +437,12 @@ +@@ -439,7 +446,12 @@ +int bhelocheck() +{ + int i; @@ -147,19 +153,20 @@ + int k = 0; + char subvalue; + -@@ -487,7 +493,7 @@ +@@ -490,7 +502,7 @@ return 0; } --@@ -216,54 +576,204 @@ -+@@ -216,54 +584,215 @@ +-@@ -216,54 +579,204 @@ ++@@ -216,54 +593,219 @@ return r; } -@@ -582,6 +588,16 @@ +@@ -585,6 +597,18 @@ + } +} + +++// <Added by Garga> ++int mailfromallowed() ++{ ++ int r; @@ -169,46 +176,49 @@ ++ ++ return ((r == 1) ? 0 : 1); ++} +++// </Added by Garga> ++ +#ifdef RELAYMAILFROM +int rmfcheck() +{ -@@ -664,6 +680,7 @@ +@@ -667,6 +691,9 @@ + if (flagbarf) { err_bmf("Reject::ORIG::Bad_Mailfrom:",remoteip,remotehost,helohost.s,mailfrom.s,addr.s); return; } + if (flagdnsmf > 0) { err_mfdns("Reject::ORIG::DNS_MF:",remoteip,remotehost,helohost.s,mailfrom.s,addr.s); return; } + if (reqauth) if (!flagauth) { err_authreq("Reject::ORIG::Missing_Auth:",remoteip,remotehost,helohost.s,mailfrom.s,addr.s); return; } +++ // <Added by Garga> ++ if (localmf_reqauth && !flagauth && !mailfromallowed()) { err_authreq("Reject::ORIG::Local_MailFrom_Req_Auth:",remoteip,remotehost,helohost.s,mailfrom.s,addr.s); return; } +++ // </Added by Garga> + flagrcpt = rcptallowed(); + if (!flagrcpt) { err_recipient("Reject::RCPT::Failed_Rcptto:",remoteip,remotehost,helohost.s,mailfrom.s,addr.s); flagerrcpts++; return; } + if (tarpitcount && flagerrcpts >= tarpitcount) { err_rcpts("Reject::RCPT::Toomany_Rcptto:",remoteip,remotehost,helohost.s,mailfrom.s,addr.s); return; } -@@ -702,7 +719,7 @@ +@@ -705,7 +732,7 @@ int saferead(fd,buf,len) int fd; char *buf; int len; { --@@ -279,11 +789,69 @@ -+@@ -279,11 +808,69 @@ +-@@ -279,11 +792,69 @@ ++@@ -279,11 +821,69 @@ substdio ssin = SUBSTDIO_FDBUF(saferead,0,ssinbuf,sizeof ssinbuf); struct qmail qqt; -@@ -773,7 +790,7 @@ +@@ -776,7 +803,7 @@ if (bytestooverflow) if (!--bytestooverflow) qmail_fail(&qqt); --@@ -316,8 +884,8 @@ -+@@ -316,8 +903,8 @@ +-@@ -316,8 +887,8 @@ ++@@ -316,8 +916,8 @@ if (flagmaybex) if (pos == 7) ++*hops; if (pos < 2) if (ch != "\r\n"[pos]) flagmaybey = 0; if (flagmaybey) if (pos == 1) flaginheader = 0; -@@ -783,7 +800,7 @@ +@@ -786,7 +813,7 @@ if (ch == '\n') { pos = 0; flagmaybex = flagmaybey = flagmaybez = 1; } } switch(state) { --@@ -373,31 +941,275 @@ -+@@ -373,31 +960,275 @@ +-@@ -373,31 +944,275 @@ ++@@ -373,31 +973,275 @@ if (!seenmail) { err_wantmail(); return; } if (!rcptto.len) { err_wantrcpt(); return; } seenmail = 0; -@@ -996,7 +1013,7 @@ +@@ -999,7 +1026,7 @@ + + if (!user.len || !pass.len) return err_input(); + return authenticate(); @@ -217,7 +227,7 @@ +#endif + +struct authcmd { -@@ -1051,10 +1068,10 @@ +@@ -1054,10 +1081,10 @@ + case 1: + err_authfail("Reject::ORIG::Failed_Auth:",remoteip,remotehost,helohost.s,user.s,authcmds[i].text); + } @@ -231,12 +241,12 @@ struct commands smtpcommands[] = { { "rcpt", smtp_rcpt, 0 } , { "mail", smtp_mail, 0 } -@@ -1063,7 +1080,7 @@ +@@ -1066,7 +1093,7 @@ , { "quit", smtp_quit, flush } , { "helo", smtp_helo, flush } , { "ehlo", smtp_ehlo, flush } --@@ -408,8 +1220,11 @@ -+@@ -408,8 +1239,11 @@ +-@@ -408,8 +1223,11 @@ ++@@ -408,8 +1252,11 @@ , { 0, err_unimpl, flush } } ; |