Entradas DNS

Antes de poner en funcionamiento un servidor de correo hay que que tener perfectamente configuradas las entradas DNS o terminaremos con la IP bloqueada. Para que la configuración opere correctamente se deben tener bien configurado lo siguiente:

  1. Resolución inversa de la IP del servidor.

  2. Entradas MX del dominio.

  3. Entradas SPF para envío de correo.

  4. Configuración DKIM, obligatoria si usas IPv6.

  5. DMARK no es obligatorio pero al principio es útil para ver que ocurre con los correos enviados.

Aquí dejo el enlace de una web para hacer tests: MxToolBox, aunque es mejor hacer los tests mediante los comandos que muestro.

Resolución inversa

La resolución inversa consiste en obtener un nombre para una determinada IP. En el caso de un servidor de correo, para que quede configurado correctamente deben cumplirse las siguientes reglas:

  1. La resolución inversa de la IP y la resolución directa del nombre deben coincidir.

  2. La respuesta 220 [1] del servidor de correo (puerto 25) debe también coincidir en el nombre anterior.

La resolución inversa sólo puede establecerse desde el proveedor de servicios donde se tenga alojada la máquina. En el siguiente ejemplo muestro mi configuración, donde he escogido como dominio primario art-website.com y he establecido mail.art-website.com como servidor de correo del dominio:

host mail.art-website.com
mail.art-website.com has address 51.210.177.38

host 51.210.177.38
38.177.210.51.in-addr.arpa domain name pointer mail.art-website.com.

Entradas MX

Estas entradas DNS sirven para indicar la(s) máquina(s) donde se deben entregar los correos entrantes. Así, las entradas MX del dominio art-website.com apuntan al nombre mostrado anteriormente mail.art-website.com, usada para la resolución inversa. Con estos comandos se puede comprobar si está correctamente establecido:

host -t mx art-website.com
art-website.com mail is handled by 10 mail.art-website.com.

Para que otros dominios también sean gestionados por esta máquina basta con establecer las entradas MX de cada dominio adicional a mail.art-website.com, por ejemplo, para mi dominio secundario 20cones.org sirve:

host -t mx 20cones.org
20cones.org mail is handled by 10 mail.art-website.com.

Importante

Las entradas MX no deben apuntar a una IP. Según RFC 1035 deben resolverse hacia un nombre, y ese nombre resolverá a una IP.

Entradas SPF

Las entradas SPF son muy importantes para que el correo llegue correctamente a su destino. Estas entradas indican las IPs permitidas para enviar los correos del dominio, y son entradas DNS de texto. Estas entradas deben incluir la IP del servidor SMTP del dominio y para entender su sintaxis se puede consultar OpenSPF

El servidor que estoy usando como ejemplo tengo una IPv4 y una IPv6, de forma que la entrada es:

v=spf1 ip4:51.210.177.38 ip6:2001:41d0:304:200::c45e -all

Para los dominios secundarios, por ejemplo 20cones.org, una buena técnica es hacer referencia al servidor principal. Haciendo esto para el resto de dominios simplifico la migración en caso de cambio de IP. La regla SPF sería:

v=spf1 include:art-website.com -all

Se deben introducir estas entradas DNS de texto en el servidor DNS, y para revisar que todo está correcto, se pueden usar los siguientes comandos, comprobando la salida de cada uno de ellos:

host -t txt art-website.com
art-website.com descriptive text "v=spf1 ip4:51.210.177.38 ip4:37.187.136.189 ip6:2001:41d0:304:200::c45e -all"

host -t txt 20cones.org
20cones.org descriptive text "v=spf1 include:art-website.com -all "

Advertencia

Si añades las entradas DNS desde el panel de control de tu proveedor, ten cuidado, ya que estas entradas no llevan prefijo.

Es importante validar las entradas SPF, hay muchas herramientas en la red, dejo el enlace de una que uso habitualmente: SPF Record Testing Tools. El test final que se puede hacer es comprobar con GMail si la configuración es correcta. Así, enviando un correo a GMail, en las cabeceras del correo recibido debería aparecer es estado SPF tal y como se muestra:

Authentication-Results: mx.google.com;
    spf=pass (google.com: domain of paulino@art-website.com designates 2001:41d0:52:cff::4d as permitted sender) smtp.mail=paulino@art-website.com;

Advertencia

Cuidado al hacer este test, si tienes IPv6 y no tienes DKIM configurado, Google rechazará todos los correos de tu servidor.

Puedes desactivar IPv6 temporalmente o configurar DKIM, antes de hacer esta prueba.

Notas