[FUG-BR] [PATCH] Qmail abrindo muitas conexoes simultaneas para o mesmohost

Welington F.J welingtonfj em gmail.com
Seg Maio 29 11:06:47 BRT 2006


Segue Link para o patch que  o Luiz citou

http://www.designet.co.jp/support/qmail-1.03-concurrencydomain.patch


On 5/28/06, Luiz Souza <luiz at visualconnect.com.br> wrote:
> Luiz Souza wrote:
> > Ari Arantes wrote:
> >> Rafael,
> >>
> >> Tudo que falou do qmail é verdade, eu sei que a versão netqmail-1.0.5
> >> não é versão mais nova.. Na própria página diz que a 1.0.3 + patchs já
> >> aplicados.
> >>
> >> Sempre gostei do qmail. Uso desde 1998. Nunca tive problemas com ele,
> >> mas como falei, o que me incomoda é o fato de mandar várias conexões
> >> simultâneas para o mesmo host.
> >>
> > (snip)
> >
> > tente este patch: (agora sim com sem as quebras de linha)
>
>
> --- qmail-send.c.orig   Sat May 27 12:09:30 2006
> +++ qmail-send.c        Sat May 27 15:51:11 2006
> @@ -776,11 +776,13 @@
>    unsigned long delid;
>    seek_pos mpos;
>    stralloc recip;
> +  stralloc remotedomain;
>   }
>  ;
>
>  unsigned long masterdelid = 1;
>  unsigned int concurrency[CHANNELS] = { 10, 20 };
> +unsigned int concurrencyremotedomain = 10;
>  unsigned int concurrencyused[CHANNELS] = { 0, 0 };
>  struct del *d[CHANNELS];
>  stralloc dline[CHANNELS];
> @@ -811,7 +813,7 @@
>     while (!(d[c] = (struct del *) alloc(concurrency[c] * sizeof(struct del))))
>       nomem();
>     for (i = 0;i < concurrency[c];++i)
> -    { d[c][i].used = 0; d[c][i].recip.s = 0; }
> +    { d[c][i].used = 0; d[c][i].recip.s = 0; d[c][i].remotedomain.s = 0; }
>     dline[c].s = 0;
>     while (!stralloc_copys(&dline[c],"")) nomem();
>    }
> @@ -840,12 +842,33 @@
>  {
>   int i;
>   int c;
> + char *domain = (char *)0;
> + unsigned int remotedomain = 0;
>
>   c = jo[j].channel;
>   if (!flagspawnalive[c]) return;
>   if (!comm_canwrite(c)) return;
>
> - for (i = 0;i < concurrency[c];++i) if (!d[c][i].used) break;
> + if (c == 1) { domain = recip; while(*domain) if (*domain++ == '@') break; }
> +
> + for (i = 0;i < concurrency[c];++i)
> +  {
> +   if (remotedomain >= concurrencyremotedomain)
> +    {
> +     log3("warning: reach max count to remote domain [", domain, "]\n");
> +     return;
> +    }
> +   if (d[c][i].used)
> +    {
> +     if (domain && str_diff(d[c][i].remotedomain.s, domain) == 0) ++remotedomain;
> +    }
> +   else
> +    {
> +     if (!stralloc_copys(&d[c][i].remotedomain,domain)) { nomem(); return; }
> +     if (!stralloc_0(&d[c][i].remotedomain)) { nomem(); return; }
> +     break;
> +    }
> +  }
>   if (i == concurrency[c]) return;
>
>   if (!stralloc_copys(&d[c][i].recip,recip)) { nomem(); return; }
> @@ -1445,6 +1468,7 @@
>   if (control_readint(&lifetime,"control/queuelifetime") == -1) return 0;
>   if (control_readint(&concurrency[0],"control/concurrencylocal") == -1) return 0;
>   if (control_readint(&concurrency[1],"control/concurrencyremote") == -1) return 0;
> + if (control_readint(&concurrencyremotedomain,"control/concurrencyremotedomain") == -1) return 0;
>   if (control_rldef(&envnoathost,"control/envnoathost",1,"envnoathost") != 1) return 0;
>   if (control_rldef(&bouncefrom,"control/bouncefrom",0,"MAILER-DAEMON") != 1) return 0;
>   if (control_rldef(&bouncehost,"control/bouncehost",1,"bouncehost") != 1) return 0;
>
>
>
> >
> > Nao se esqueca de configurar a nova variavel
> > /var/qmail/control/concurrencyremotedomain para o numero maximo que vc
> > deseja para as entregas por dominio.
> >
> > luiz
> > -------------------------
> > Histórico: http://www.fug.com.br/historico/html/freebsd/
> > Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>


-- 
Welington F.J
BSD User: 51392
ICQ: 31320518
MSN: welingtonfj at hotmail.com
Drogas ? Pra que? Já Tenho Meu Windows!!


Mais detalhes sobre a lista de discussão freebsd