Ricardo Cerqueira wrote:
>
> Here:
>
> http://www.ornl.gov/its/archives/mailing-lists/qmail/1999/11/msg00245.html
Ricardo,
The message above has an incomplete patch (last 2 lines missing). Here
is the complete patch:
-----------------------------------------------------------------------
*** qmail-1.03/qmail-smtpd.maxrcpt Mon Jun 15 07:53:16 1998
--- qmail-1.03/qmail-smtpd.c Fri Nov 19 16:09:34 1999
***************
*** 25,34 ****
--- 25,36 ----
#include "commands.h"
#define MAXHOPS 100
unsigned int databytes = 0;
int timeout = 1200;
+ int rcptcounter = 0; /* Agregado por mi para el maxrcpt */
+ int maxrcpt = -1; /* Agregado por mi para el maxrcpt */
int safewrite(fd,buf,len) int fd; char *buf; int len;
{
int r;
r = timeoutwrite(timeout,fd,buf,len);
***************
*** 56,66 ****
void err_wantmail() { out("503 MAIL first (#5.5.1)\r\n"); }
void err_wantrcpt() { out("503 RCPT first (#5.5.1)\r\n"); }
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"); }
!
stralloc greeting = {0};
void smtp_greet(code) char *code;
{
--- 58,68 ----
void err_wantmail() { out("503 MAIL first (#5.5.1)\r\n"); }
void err_wantrcpt() { out("503 RCPT first (#5.5.1)\r\n"); }
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"); }
! void err_excessrcpt() { out("666 Too many recipients specified
(#5.5.4)\r\n"); } /* Agregado por mi para el maxrcpt */
stralloc greeting = {0};
void smtp_greet(code) char *code;
{
***************
*** 107,116 ****
--- 109,119 ----
die_control();
liphostok = control_rldef(&liphost,"control/localiphost",1,(char *)
0);
if (liphostok == -1) die_control();
if (control_readint(&timeout,"control/timeoutsmtpd") == -1)
die_control();
if (timeout <= 0) timeout = 1;
+ if (control_readint(&maxrcpt,"control/maxrcpt") == -1)
die_control(); /* Agregado por mi para el maxrcpt */
if (rcpthosts_init() == -1) die_control();
bmfok = control_readfile(&bmf,"control/badmailfrom",0);
if (bmfok == -1) die_control();
***************
*** 238,256 ****
--- 241,262 ----
out("250 flushed\r\n");
}
void smtp_mail(arg) char *arg;
{
if (!addrparse(arg)) { err_syntax(); return; }
+ rcptcounter = 0; /* Agregado por mi para el maxrcpt */
flagbarf = bmfcheck();
seenmail = 1;
if (!stralloc_copys(&rcptto,"")) die_nomem();
if (!stralloc_copys(&mailfrom,addr.s)) die_nomem();
if (!stralloc_0(&mailfrom)) die_nomem();
out("250 ok\r\n");
}
void smtp_rcpt(arg) char *arg; {
+ rcptcounter++; /* Agregado por mi para el maxrcpt */
if (!seenmail) { err_wantmail(); return; }
+ if (checkrcptcount() == 1) { err_excessrcpt(); } /* Agregado por mi
para el maxrcpt */
if (!addrparse(arg)) { err_syntax(); return; }
if (flagbarf) { err_bmf(); return; }
if (relayclient) {
--addr.len;
if (!stralloc_cats(&addr,relayclient)) die_nomem();
***************
*** 390,399 ****
--- 396,411 ----
if (hops) { out("554 too many hops, this message is looping
(#5.4.6)\r\n"); return; }
if (databytes) if (!bytestooverflow) { out("552 sorry, that message
size exceeds my databytes limit (#5.3.4)\r\n"); return; }
if (*qqx == 'D') out("554 "); else out("451 ");
out(qqx + 1);
out("\r\n");
+ } /* Agregado por mi para
el maxrcpt */
+
+ int checkrcptcount() { /* Agregado por mi para
el maxrcpt */
+ if (maxrcpt == -1) {return 0;} /* Agregado por mi para
el maxrcpt */
+ else if (rcptcounter > maxrcpt) {return 1;} /* Agregado por mi para
el maxrcpt */
+ else {return 0;} /* Agregado por mi para
el maxrcpt */
}
struct commands smtpcommands[] = {
{ "rcpt", smtp_rcpt, 0 }
, { "mail", smtp_mail, 0 }
-----------------------------------------------------------------------
Rodrigo
--
-------------------------------------------
Rodrigo Severo
[EMAIL PROTECTED]
Fabrica de Ideias
sbs - ed. empire center - bl. s - sala 109
cep 70070-904 - brasilia-df - brazil
tel: (61) 321 1357
fax: (61) 321 6096
-------------------------------------------