[MASOCH-L] proposta de modificação na política de SPF
Marcelo Coelho
marcelo at tpn.com.br
Mon Jul 23 16:38:50 -03 2012
Olá Danton,
O ideal não seria retornar neutral ao invés de fail?
Há um tempo atrás eu criei um patch para qmail que fazia isso para IPv4, mas retornando neutral:
http://opensource.mco2.net/download/qmail/qmail-spf-plusall.patch
Se você retornar neutral, pode jogar o sujeito no greylisting, ao invés de rejeitar, na lata.
--
Marcelo Coelho
On Jul 23, 2012, at 4:26 PM, Danton Nunes wrote:
> Caros,
>
> postei isto inicialmente na SPAM-L, mas não tive retorno. Imagino que todos os assinantes da SPAM-L a filtrem por se parecer com spam ;)
>
> vejam que interessante:
>
> $ spfquery -ip=ff02::2 -sender=ze at comunicativoz.com.br -helo=comunicativoz.com.br
> pass
>
> spfquery: domain of comunicativoz.com.br designates ff02::2 as permitted sender
> Received-SPF: pass (spfquery: domain of comunicativoz.com.br designates ff02::2 as permitted sender) client-ip=ff02::2; envelope-from=ze at comunicativoz.com.br; helo=comunicativoz.com.br;
>
> Ora, ff02::2 é o endereço IPv6 multicast 'all routers' e nunca, jamais, poderia ser autorizado a enviar email. O que acontece é que o cara tem um registro SPF extremamente permissivo:
>
> $ host -t txt comunicativoz.com.br
> comunicativoz.com.br text "v=spf1 ip4:184.164.153.66/29 all"
>
> Outros endereços poderiam ser usados nesse teste, por exemplo, do próprio servidor que está recebendo a mensagem, desde que ele não envie pelo domínio do remetente, ou algum endereço tipo 198.162.x.y, enfim, qualquer coisa que sabidamente não pode mandar email serve.
>
> Notei que há outros domínios de spammers que tem registros SPF com +all ou arranjos que funcionam como tal.
>
> Para barrá-los proponho uma alteração na política de verificação do SPF, verificando antes de tudo se o registro permite que um endereço IP absurdo (como o all-routers do exemplo acima) é permitido. Se for, retorna SPF_FAIL pois ou bem a lista de controle de acesso está errada ou se trata de um spammer.
>
> Fiz o seguinte patch no spfmilter.c (do spfmilter-0.97 do Jeff Poskanzer) que implementa a política. Aviso: AINDA NÃO TESTEI EXTENSIVAMENTE, publico aqui só para comentários ou para os corajosos se atreverem a testá-lo. Compilando com DHACK definido ativa minha modificação. Funciona só com libspf2!
>
> --- spfmilter.c 2005-06-20 22:28:57.000000000 -0300
> +++ spfmilter-danton.c 2012-07-23 12:19:00.000000000 -0300
> @@ -2076,6 +2076,10 @@
> lib_do_check( lib_data_t* ld, const char* from )
> {
> int r;
> +#ifdef DHACK
> + SPF_config_t hack;
> + SPF_output_t hack_output;
> +#endif
>
> /* Find a resolver to use. */
> r = find_resolver();
> @@ -2083,6 +2087,19 @@
> return 0;
>
> /* Do the SPF lookup. */
> +#ifdef DHACK
> +/* Danton: I want to check here if this SPF ACL give a 'pass' for a clearly illegal IP address
> + in order to sort out too permissive SPF records, e.g. +all, wich some spammers semm to like. */
> + hack=SPF_dup_config(ld->spfcid); // clone source specification.
> + SPF_set_ipv6_str(hack,"ff02::2"); // a clearly illegal IP address (all-routers!)
> + hack_output = SPF_result( hack, get_resolver(r));
> + if (hack_output.result == SPF_RESULT_PASS) { // passed! it's a fraud!
> + ld->output.result=SPF_RESULT_FAIL;
> + ld->output.smtp_comment="Your SPF access list is too permissive.";
> + free_resolver( r );
> + return 1;
> + }
> +#endif
> ld->output = SPF_result( ld->spfcid, get_resolver( r ) );
> ld->got_output = 1;
>
> -- Danton
> __
> masoch-l list
> https://eng.registro.br/mailman/listinfo/masoch-l
>
More information about the masoch-l
mailing list