[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