[FUG-BR] Qmail MAXRCPT FreeBSD port
Éderson Chimbida
chimbida em gmail.com
Qui Set 1 10:42:06 BRT 2005
Alguém já postou na lista algo sobre esse patch pro qmail-ldap !
http://mail.fug.com.br/pipermail/freebsd_fug.com.br/2003-October/035078.html
http://mail.fug.com.br/pipermail/freebsd_fug.com.br/2003-October/035081.html
Alterei ele para ser aplicado no port ( /usr/ports/mail/qmail-smtp_auth+tls )
Qualquer coisa é so dar uma lida em: http://www.unixlike.com.br/?page_id=45
Ai ta o patch:
--- corte aqui ---
*** qmail-1.03/qmail-smtpd.c Wed Aug 31 13:01:49 2005
--- /root/qmail-smtpd.c Wed Aug 31 13:01:16 2005
***************
*** 39,46 ****
--- 39,48 ----
#define AUTHCRAM
#define MAXHOPS 10
unsigned int databytes = 0;
int timeout = 1200;
+ int rcptcounter = 0;
+ int maxrcpt = -1;
#ifdef TLS
int flagtimedout = 0;
void sigalrm()
***************
*** 183,190 ****
--- 185,193 ----
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();
if (rcpthosts_init() == -1) die_control();
bmfok = control_readfile(&bmf,"control/badmailfrom",0);
***************
*** 335,342 ****
--- 338,346 ----
out("250 flushed\r\n");
}
void smtp_mail(arg) char *arg;
{
+ rcptcounter = 0 ;
if (!addrparse(arg)) { err_syntax(); return; }
flagbarf = bmfcheck();
seenmail = 1;
if (!stralloc_copys(&rcptto,"")) die_nomem();
***************
*** 350,358 ****
--- 354,364 ----
return (1);
}
#endif
void smtp_rcpt(arg) char *arg; {
+ rcptcounter++;
if (!seenmail) { err_wantmail(); return; }
+ if (checkrcptcount() == 1) { err_syntax(); return; }
if (!addrparse(arg)) { err_syntax(); return; }
if (flagbarf) { err_bmf(); return; }
if (relayclient) {
--addr.len;
***************
*** 960,964 ****
--- 966,976 ----
smtp_greet("220 ");
out(" ESMTP\r\n");
if (commands(&ssin,&smtpcommands) == 0) die_read();
die_nomem();
+ }
+
+ int checkrcptcount() {
+ if (maxrcpt == -1) { return 0;}
+ else if (rcptcounter > maxrcpt ) { return 1;}
+ return 0;
}
_______________________________________________
Freebsd mailing list
Freebsd em fug.com.br
http://mail.fug.com.br/mailman/listinfo/freebsd_fug.com.br
Mais detalhes sobre a lista de discussão freebsd