Cómo configurar los registros SPF y DKIM en tu servidor DNS

En esta entrada os voy a enseñar a configurar correctamente los registros SPF y DKIM de vuestro servidor DNS. Pero primero vamos a empezar desde cero, explicando antes de nada en que consiste un servidor DNS…

Aclarando conceptos…

Un servidor DNS ( Domain Name Server  / Servidor de Nombres de Dominio ), no es más que un servicio que “traduce” direcciones IP en formato decimal, a cadenas de caracteres entendibles y más fáciles de recordar por los seres humanos.

Cada aparato conectado a Internet tiene un dirección de red (pública si funciona bajo IPv4 / IPv6 da igual), si cada vez que quisiéramos acceder a una web, necesitáramos recordar la dirección IP del servidor que la aloja, sería un auténtico caos…

Es por ello que se creo el servicio DNS, el cual nos permite recordar, reconocer y acceder de una forma más rápida a los recursos de una red, bien sea en una red local o en el propio Internet.

En vez de tener que escribir en nuestro navegador, por ejemplo,  193.110.128.199, gracias a este servicio podemos introducir simplemente “elmundo.es” para acceder a esta web.

Registros principales de un servidor DNS

A continuación voy a enumerar los principales registros DNS que deben estar configurados en el mismo.

  • A = Dirección (address). Este registro se usa para traducir nombres de servidores de alojamiento a direcciones IPv4.
  • AAAA = Dirección (address). Este registro se usa en IPv6 para traducir nombres de hosts a direcciones IPv6.
  • CNAME = Nombre canónico (canonical Name). Se usa para crear nombres de servidores de alojamiento adicionales, o alias, para los servidores de alojamiento de un dominio. Es usado cuando se están corriendo múltiples servicios (como FTP y servidor web) en un servidor con una sola dirección IP. Cada servicio tiene su propia entrada de DNS (como ftp.ejemplo.com. y www.ejemplo.com.). Esto también es usado cuando corres múltiples servidores HTTP, con diferentes nombres, sobre el mismo host. Se escribe primero el alias y luego el nombre real. Ej. Ejemplo1 IN CNAME ejemplo2
  • NS = Servidor de nombres (name server). Define la asociación que existe entre un nombre de dominio y los servidores de nombres que almacenan la información de dicho dominio. Cada dominio se puede asociar a una cantidad cualquiera de servidores de nombres.
  • MX = Intercambio de correo (mail exchange). Asocia un nombre de dominio a una lista de servidores de intercambio de correo para ese dominio. Tiene un balanceo de carga y prioridad para el uso de uno o más servicios de correo.
  • PTR = Indicador (pointer). También conocido como ‘registro inverso’, funciona a la inversa del registro A, traduciendo IPs en nombres de dominio. Se usa en el archivo de configuración de la zona DNS inversa.
  • TTL = tiempo de vida (Time To Live). Es un valor de un registro DNS que determina el número de segundos antes de que se apliquen los cambios posteriores realizados en el registro. Cada registro DNS de tu dominio, como un registro MX, un registro CNAME, etc., dispone de un valor TTL. El valor TTL actual de un registro determina cuánto tardará en aplicarse cualquier cambio que realices.Se recomienda establecer este valor a 3600, para que los servidores comprueben si hay cambios en el registro cada hora.
  • TXT = Un registro TXT es un registro DNS que proporciona información de texto a fuentes externas a tu dominio y que se puede utilizar con distintos fines. El valor del registro puede corresponder a un texto legible por una máquina o por una persona.
  • SOA = Autoridad de la zona (start of authority). Proporciona información sobre el servidor DNS primario de la zona.
  • ANY = Toda la información de todos los tipos que exista. (No es un tipo de registro es un tipo de consulta)

Fuentes oficiales:

Ejemplo de configuración de registro DNS:
Name/Host/Alias Record Type Priority Value/Answer/ Destination
Blank or @ A ND 216.239.32.21
Blank or @ A ND 216.239.34.21
Blank or @ A ND 216.239.36.21
Blank or @ A ND 216.239.38.21
Blank or @ MX 1 ASPMX.L.GOOGLE.COM.
Blank or @ MX 5 ALT1.ASPMX.L.GOOGLE.COM.
Blank or @ MX 5 ALT2.ASPMX.L.GOOGLE.COM.
Blank or @ MX 10 ASPMX2.GOOGLEMAIL.COM
Blank or @ MX 10 ASPMX3.GOOGLEMAIL.COM
mail CNAME ND ghs.googlehosted.com.
Blank or @ TXT ND google-site-verification=6tTalLzrBXBO4Gy9700TAbpg2QTKzGYEuZ_Ls69jle8
Blank or @ TXT ND v=spf1 include:_spf.google.com ~all
www CNAME ND ghs.googlehosted.com.
¿Que son y para que sirven los registros SPF y DKIM?

SPF (Convenio de Remitentes, del inglés Sender Policy Framework) –> es una protección contra la falsificación de direcciones en el envío de correo electrónico.1 Identifica, a través de los registros de nombres de dominio (DNS), a los servidores de correo SMTP autorizados para el transporte de los mensajes. Este convenio busca ayudar para disminuir abusos como el spam y otros males del correo electrónico.

Fuente original: https://es.wikipedia.org/wiki/Sender_Policy_Framework

¿Cómo funciona el registro DKIM?

DKIM (DomainKeys Identified Mail) –>  es un mecanismo de autenticación de correo electrónico que permite a una organización responsabilizarse del envío de un mensaje, de manera que éste pueda ser validado por un destinatario.

Dicha organización puede ser una fuente directa del mensaje, como el autor, el servidor encargado de gestionar el correo de ese dominio, o un servidor intermedio situado en el tránsito que recorre dicho correo, como por ejemplo un servicio independiente que provee recursos de correo al servidor que gestiona el dominio principal.

La necesidad de este tipo de autenticación surge por la falsificación de contenidos de las que hace uso el spam. Por ejemplo, un mensaje de spam puede falsear el campo “From:” de las cabeceras de un mensaje diciendo que el origen es usuario@ejemplo.com, cuando realmente no proviene de esa dirección, y el único objetivo del spammer es convencer al destinatario de que acepte y lea el mensaje.

Como el mensaje no proviene realmente del dominio usuario@ejemplo.com, quejarse a ese dominio no serviría de nada. Además, resulta complicado por parte de los destinatarios el distinguir cuándo deben confiar o no en un determinado dominio, y los administradores de correo tienen que hacerse cargo de quejas de spam que supuestamente se originan desde su dominio, cuando realmente no es así.
DKIM utiliza criptografía de clave pública para permitir al origen firmar electrónicamente correos electrónicos legítimos de manera que puedan ser verificados por los destinatarios.
DKIM también protege contra la manipulación de correo electrónico, proporcionando integridad de extremo a extremo, desde un módulo firmante a un módulo validador.

En la mayoría de los casos el módulo firmante actúa en nombre de la organización originaria insertando una firma DKIM en las cabeceras del mensaje, y el módulo de comprobación en nombre de la organización del receptor, validando la firma obteniendo la clave pública del firmante a través del DNS.

Fuente original: https://es.wikipedia.org/wiki/DomainKeys_Identified_Mail

Ejemplo de configuración de registros SPF y DKIM:

Ahora imaginemos que necesitamos configurar estos dos registros en nuestro DNS. Para ello os voy a poner un ejemplo de cómo debería quedar configurado:

Registro SPF
www.ejemplo.com. IN TXT v=spf1 +a +mx include:www.ejemplo.com include:ejemplo.com ipv4:0.0.0.0 ?all

Dónde…

  • v –> define la versión de spf utilizada
  • a –> define que el dominio actual es autorizado
  • mx –> define los servidores de correo autorizados
  • include –> define los dominios autorizados
  • ipv4: la dirección IP bajo la versión 4 autorizada

Para ampliar información visitad su web oficial ——> http://www.openspf.org/SPF_Record_Syntax

Registro DKIM

Lo primero es crear la clave privada a incluirla en el servidor de correo, podemos generar estas claves con una herramienta online cómo esta: http://dkimcore.org/tools/

En este caso la clave privada que he generado es la siguiente…

-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDGWR0Fekq8gZuOlq8Jvww9Vimioq9U0qzAnQQBTvH+3Ust0CKv
NN5Kh9LQy/4Y2SauvkamV8IWpsuZUiUrrQcr62WnjCTzQ5N3FOkh/RES5sFm3mYS
OiV5PYrA3o2OyO7EKDMYP9pLrkOxSANkoIjYc9IeFVKqt3cNtEEzhztTdQIDAQAB
AoGAVkYIo4tP2rKdUOYl+J1K25sQvRb6IHEKhzVEurT1+Z+TxbeUfpUGY3C0t/Ei
8vfxJWzKGixt1aBzSps6Y8b9KM9EfhGz2ZTtsvH2ymcNhsQCXVwDD24IFv5liuUe
hfsTQ7axXWOsM9sH8pAy5r5KfoTdFs22hlutMFueC66STHkCQQDmi+9+p0Fs2t+Y
3l1zhP/pETkfm0rDSdDqD4gbe8VCdGGwZEcAe3on1HYec/4pAjgNw9G4wVA6I/Xt
cq+27gZbAkEA3D8iKlHADpYt6XtKeY/5L1vI9kUwdIudD2LIcfG8E3Y16CUjSOAf
9+D28dTiJ41D0JY7KmPydPVxd5zJbOxWbwJBAI9G3iMvHMjiyVz+rMMzH7ufuYl8
AB2XzV75IhQ6emAPZfqyhzG0izkfn/zTB1xDBcUAMmEIuqw3VwonYS5lhMsCQAXh
kbH7mNtK21L+vdBdLdQ76TPaSR7zk3ATvTJ9t/31DB90zmplwbTGxxFSE+/mb8ck
G9RX8uN4ol0FTMOh0/UCQQDOwGn8p1xcD8AYaHN7Q1PjiC+syu2Pz2+wkG2SLeCJ
+qgGTpOZLjg664SnMNl0y4AP6UqPPQg3ANkbROmJj1dr
-----END RSA PRIVATE KEY-----

Una vez tengo la clave (importantísimo que nadie pueda acceder a ella), es necesario configurar el registro DKIM en el DNS. En este caso quedaría algo así:

1491823634.ejemplo._domainkey.www.ejemplo.com. IN TXT (
        "v=DKIM1;t=s;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDGWR0Fekq8gZuOlq8Jvww9Vimi"
        "oq9U0qzAnQQBTvH+3Ust0CKvNN5Kh9LQy/4Y2SauvkamV8IWpsuZUiUrrQcr62Wn"
        "jCTzQ5N3FOkh/RES5sFm3mYSOiV5PYrA3o2OyO7EKDMYP9pLrkOxSANkoIjYc9Ie"
        "FVKqt3cNtEEzhztTdQIDAQAB")

Ahora sólo quedaría comprobar que funciona bien, enviando correos y verificando que no se marcan cómo SPAM, eso ya lo dejo en las manos de cada uno…

¡¡Hasta la próxima!! 😉

 

About: Miguel Carretas Perulero

Miguel Carretas Perulero ha escrito 61 artículos en este blog.

Deja un comentario