Evita que tus correos sean marcados como spam (y II). Registros DMARC

correo Hace un par de meses hablábamos por aquí de como implementar el uso de registros PTR, SPF y DKIM en tu servidor de correo con objeto de que el servidor destinatario de los mismos pudiera comprobar que el servidor remitente es legítimo. Los registros DMARC (Domain-based Message Authentication, Reporting & Conformance) van un paso más allá y dan instrucciones al servidor destinatario de cual debería de ser su forma de proceder (a quién notificarlo, por ejemplo) en caso de sospechar de un uso fraudulento.

MUY IMPORTANTE: No se trata de un método de control que podamos usar de forma aislada. Debe de usarse conjuntamente con DKIM, SPF o ambos puesto que su objetivo, como ya hemos dicho, no es validar la autenticidad del correo sino informar de como proceder en caso de que la validación del mismo a través de uno de los métodos anteriores falle. Así que antes que nada asegúrate de que implementas SPF, DKIM (o mejor ambos) y que funcionan correctamente.

En la página de recursos de la web oficial del estándard existen varios asistentes que te ayudarán a crear un registro DMARC. Por ejemplo este, este o este otro. Como en el caso de DKIM se trata de un registro de tipo TXT que debes de publicar en el DNS de tu dominio. Si pasas de asistentes y quieres hacer tu propio registro a mano puedes echarle un vistazo a esta pequeña guía que publica Google.

A continuación puedes ver un ejemplo del registro DMARC para el dominio micorreo.net en el que se están usando SPF y DKIM como sistemas de validación. Puedes consultar el significado de cada uno de los parámetros aquí:

_dmarc.micorreo.net. IN TXT "v=DMARC1; p=none; rua=mailto:admin@miotrocorreo.net; ruf=mailto:admin@miotrocorreo.net; adkim=r; aspf=r"

El parámetro p indica la política esperada por parte del servidor receptor y el valor none indica que está funcionando en modo monitor (lo más recomendable hasta que le cojas el pulso al protocolo). quarantine y reject son los otros dos posibles valores. El parámetro sirve para indicar la versión de DMARC que usamos. Estos son los dós únicos parámetros obligatorios.

Los dos parámetros que llevan como argumento una dirección de correo electrónico (rua y ruf) sirven para indicar donde recibir, respectivamente, un informe diario (aggregate report) por parte de cada servidor que reciba nuestro correo y realice comprobaciones de los registros DMARC y un informe forense (failure report) por cada correo procedente de tu dominio y rechazado por cualquier servidor que use este método de control.

NOTA: Muy pocos proveedores soportan aún el parámetro ruf. Por ejemplo los servidores de Gmail lo ignoran. No obstante, usarlo no provoca ningún error de validación, así que no está de más incluirlo.

Por último, aspf y adkim indican si el modo de verificación que se realizará del “identifier alignment” con cada uno de estos protocolos es strict (s) o relaxed (r). No sabria como traducir el término de forma correcta (el inglés no es mi fuerte, lo siento), pero tienes una excelente explicación de ambos modos con ejemplos aquí. Para los perezosos, básicamente comprueba que, para SPF, el dominio de las cuentas de origen y de respuesta coinciden (campos From: y Return-path:) y para DKIM, deben de coincidir los dominios de los campos From: y del argumento d= de la firma DKIM.

Existen diversas formas de comprobar que has realizado una configuración correcta. La primera de ellas es, como siempre, enviar un correo a un servicio que implemente esta comprobación (como Gmail) y ver la cabecera del mensaje que recibe el destinatario:

Authentication-Results: mx.google.com;
       spf=pass (google.com: domain of josemaria@micorreo.net designates 145.255.98.239 as permitted sender) smtp.mail=josemaria@micorreo.net;
       dkim=pass header.i=@micorreo.net;
       dmarc=pass (p=NONE dis=NONE) header.from=micorreo.net

La segunda opción es enviar un correo a una de las muchos servicios de verificación existente como, por ejemplo, checkmyauth@auth.returnpath.net, mailtest@unlocktheinbox.com o pythentic@had-pilot.biz (a este último con la palabra dmarc en el campo asunto del correo que envíes). Como respuesta recibirás un completo informe sobre las validaciones que tus envíos pasan de forma correcta o inválida. Algunas veces la respuesta puede tardar varias horas, así que ten paciencia. El resultado de la validación de, por ejemplo, este último servicio sería así:

2014/05/28 14:50:10 :Your DMARC record for   '_dmarc.micorreo.net'   is   'v=DMARC1; p=none; rua=mailto:josemaria.morales@gmail.com; ruf=mailto:josemaria.morales@gmail.com; adkim=r; aspf=r'  

Here are the results of the message from josemaria@micorreo.net
received on Wed May 28 14:48:25 2014 with Subject dmarc

The message was: Delivered
The SPF result was: pass
The DKIM result was: True

**********************************************************
Enter your email address and this hash stringin the Review My Results link for message header analysis of results: address=josemaria@micorreo.net  hash=YFXQ3KxaKAsWmAS0HmrN

**********************************************************
Full Record

Id[1]:  
	SPF result: pass 
	DKIM result: True 
	Alignment result: Pass 
	Feedback: RecordType 
	Delivery Result: Pass 
	Source IP: 145.255.98.239 
	User Agent: Pythentic 
	Version: 1 
	Recipient: had-pilot.biz 
	Arrival Date: Wed May 28 14:48:25 2014 
	From: josemaria@micorreo.net 
	DKIM Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=micorreo.net; s=mail;
	t=1401302897; bh=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN/XKdLCPjaYaY=;
	h=Date:From:Reply-To:To:Subject:References:In-Reply-To:From;
	b=Hr4mDbw43WdxyXq93zc5y0FlCJBOuHrxXfJLch6yoYRwqL/aMMcc/YnKD+PI++PDf
	 IDdCXWrUAuNhYEM3nqggrB6gKRvl0d0xxbIhpb/THdj90fq0d2eeyA/P8N5Cj7D+ew
	 dW++rfkwyN2PqI6BKhXPtwkDDc00W1JM3/7hIvf4= 
	Subject: dmarc 
	Reported: 0 
	SPFReason: sender SPF authorized 
	DKIMReason: Good DKIM Signature. 
	DMARCReason: Policy=none; accept. 
	Message: Received: from [192.168.1.5] (125.45.219.87.dynamic.jazztel.es [87.219.45.125])
	(using TLSv1 with cipher ECDHE-RSA-AES128-SHA (128/128 bits))
	(No client certificate requested)
	by invernalia.micorreo.net (Postfix) with ESMTPSA id 1A1A514200B
	for <pythentic@had-pilot.biz>; Wed, 28 May 2014 20:48:15 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=micorreo.net; s=mail;
	t=1401302897; bh=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN/XKdLCPjaYaY=;
	h=Date:From:Reply-To:To:Subject:References:In-Reply-To:From;
	b=Hr4mDbw43WdxyXq93zc5y0FlCJBOuHrxXfJLch6yoYRwqL/aMMcc/YnKD+PI++PDf
	 IDdCXWrUAuNhYEM3nqggrB6gKRvl0d0xxbIhpb/THdj90fq0d2eeyA/P8N5Cj7D+ew
	 dW++rfkwyN2PqI6BKhXPtwkDDc00W1JM3/7hIvf4=
Message-ID: <53862F70.5030601@micorreo.net>
Date: Wed, 28 May 2014 20:48:16 +0200
From: =?UTF-8?B?Sm9zw6kgTWFyw61hIE1vcmFsZXMgVsOhenF1ZXo=?=
 <josemaria@micorreo.net>
Reply-To: josemaria@micorreo.net
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.5.0
MIME-Version: 1.0
To: pythentic@had-pilot.biz
Subject: dmarc
References: <5384CED8.4040701@micorreo.net>
In-Reply-To: <5384CED8.4040701@micorreo.net>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-dkim: d=micorreo.net,s=mail,DKIMReason=Good DKIM Signature.
X-spf: i=145.255.98.239,h=micorreo.net.,s=josemaria@micorreo.net,SPFResult=pass

Por último, existen servicios que validan directamente el registro que has introducido en el DNS dándote, además, una completa explicación de lo que implican los parámetros que has elegido y las alternativas que tienes. Este es mi favorito.

En la dirección que has indicado como valor del argumento rua recibirás un correo electrónico diario por cada servidor al que envíes correo y use la validación DMARC informándote de las validaciones y/o acciones realizadas. En estos correos recibirás un adjunto comprimido en formato zip con un xml en su interior. El contenido de dichos xml es fácil de interpretar pero, si lo deseas, tienes aquí un convertidor a “formato humano” y a continuación un ejemplo del resultado:

Informe Diario XML DMARC

Por cierto: si, como yo, usas un correo de un dominio distinto al que estás validando para recibir los correos con los informes, puede que algún servidor o servicio te de algún error. La solución está en añadir un nuevo registro en el DNS indicando esto. Este segundo registro debería de ir en el DNS del dominio correspondiente a la cuenta de correo donde quieres recibir los informes, ojo, así que deberías de tener control sobre él o, al menos, alguien que te lo permita. Aquí te lo explican muy bien y a continuación tienes el mío:

micorreo.net._report._dmarc.miotrocorreo.net. IN TXT "v=DMARC1"

Ah, y si quieres configurar tu servidor posfix para que realice la comprobación de los registros dmarc en los correos que recibe puedes usar OpenDMARC.

ACTUALIZACIÓN: Y casi se me olvida… En dmarcian tienen un servicio que te permite habilitar una suerte de panel de control para controlar el estado de SPF, DKIM y DMARC en todos los dominios que controles:
ACTUALIZACIÓN (Y II):Chema Alonso ha publicado una entrada en la que hace un repaso bastante sencillo de seguir de SPF, DKIM y DMARC

Desde China ¿con amor?

blackhat Si tienes un servidor con presencia en Internet, usas (como deberías) algún sistema para bloquear los intentos de acceso no autorizados como fail2ban o denyhosts y analizas de vez en cuando los logs, no voy a decirte nada nuevo: en los últimos meses hemos experimentado un aumento inusitado de intentos de intrusión desde direcciones IP procedentes de China. En mi caso, en los últimos tres meses el 83% de los intentos irregulares de entrada a través de ssh que he observado proceden de este país. Concretando aún más, el 50% del total de estos intentos procede de la subred 116.10.191.0/24 y el 25% de la subred 61.174.51.0/24. Así que ya sabes: si eres de los que prefieres los métodos preventivos ya tardas en banear ambas subredes en tus cortafuegos.