[MASOCH-L] proposta de modificação na política de SPF

Marcelo Coelho marcelo at tpn.com.br
Mon Jul 23 16:38:50 BRT 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