ZIMBRA.COM.VE

DNS para Correo

Guía DNS

Guía de Configuración DNS en Ubuntu Server 22.04

Un recurso técnico para configurar los registros del dominio miempresa.com.

1. Nombre de Host y Tabla hosts

Antes de Proceder a la instalación de zimbra valide o modifique el nombre del servidor

  • De forma local, asignando un nombre al equipo con hostnamectl y editando el archivo /etc/hosts.
  • En red, mediante un servidor DNS y configurando el cliente en /etc/resolv.conf (gestionado por systemd-resolved en Ubuntu).

1.1. Nombre de Host del equipo local

La resolución local de host del equipo se realiza con el nombre de host, que se asigna con el comando hostnamectl.

sudo hostnamectl set-hostname mail.miempresa.com
exit

# Abre un nuevo terminal y comprueba el nuevo nombre con:

hostnamectl

1.2. Resolución Local de Hostnames y dominios

La resolución local de nombres de hosts y dominios se gestiona con el archivo /etc/hosts, si tu arquitectura es multiservidor, en la tabla /etc/hosts de cada servidor debe estar declarado todos los nombres e Ip´s que contituyen la arquitectura de correo.

sudo nano /etc/hosts

# Contenido del archivo:
127.0.0.1 localhost
192.168.3.201 mail.miempresa.com miempresa
190.81.56.202 www.otrodominio.com

Para comprobar:

ping mail.miempresa.com

1.3. Conceptos Básicos de Registros de Nombres para Correo

Para que un correo electrónico llegue correctamente, el DNS utiliza registros específicos que validan y dirigen el tráfico de correo. A continuación, se explican los más importantes para el dominio miempresa.com.

Registro MX (Mail Exchange)

El registro MX es el más importante para el correo. Le dice a los servidores de correo de internet a qué servidor deben entregar los correos de miempresa.com. La prioridad (ej. 10) indica el orden en caso de múltiples servidores.

; Para el dominio miempresa.com
miempresa.com. IN MX 10 mail.miempresa.com.

Registro A (Address Record)

Este registro asocia el nombre de tu servidor de correo, mail.miempresa.com, a una dirección IPv4. Sin este registro, el servidor de correo que envía no podría encontrar la ubicación de tu servidor.

; Para el servidor de correo
mail.miempresa.com. IN A 149.56.218.201

Registro AAAA (Quad A Record)

Similar al registro A, pero para direcciones IPv6. Es esencial para la conectividad en redes modernas que utilizan este protocolo.

; Para el servidor de correo
mail.miempresa.com. IN AAAA 2001:0db8:85a3:0000:0000:8a2e:0370:7334

Registro SPF (Sender Policy Framework)

El SPF es un registro de tipo TXT que previene la suplantación de identidad. Publica una lista de servidores autorizados para enviar correos en nombre de tu dominio. Un servidor receptor verifica si el correo viene de una de estas IPs permitidas.

; En el dominio principal
miempresa.com. IN TXT "v=spf1 mx a ip4:149.56.218.201 -all"

`v=spf1`: versión de SPF. `mx`: autoriza a los servidores MX. `a`: autoriza la IP del registro A del dominio. `ip4`: autoriza la IP específica. `-all`: rechaza cualquier otro servidor.

Registro DKIM (DomainKeys Identified Mail)

DKIM añade una firma digital al correo saliente. La clave pública de la firma se publica en un registro TXT en el DNS, lo que permite al receptor verificar que el correo no ha sido alterado desde que fue enviado por tu servidor.

; Este registro se genera automáticamente por el servidor de correo
selector1._domainkey.miempresa.com. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD...clave...publica...DAQAB"

Registro DMARC (Domain-based Message Authentication, Reporting, and Conformance)

DMARC une SPF y DKIM. Define una política sobre qué hacer con los correos que fallan la autenticación (monitorear, poner en cuarentena, o rechazar) y permite recibir informes sobre el uso fraudulento de tu dominio.

; En el dominio principal
_dmarc.miempresa.com. IN TXT "v=DMARC1; p=reject; rua=mailto:admin@miempresa.com"

`p=reject`: indica que los correos que fallen las verificaciones deben ser rechazados. `rua`: especifica la dirección de correo para recibir informes.


2. Registros de DNS y Cliente DNS

2.1. Cliente de DNS

En Ubuntu Server 22.04, la resolución de DNS es gestionada por systemd-resolved. El archivo /etc/resolv.conf es un enlace simbólico. La configuración se realiza a través de Netplan.

Para configurar los DNS, edita el archivo de configuración de Netplan (el nombre puede variar, ej: 00-installer-config.yaml).

sudo nano /etc/netplan/00-installer-config.yaml

Añade la sección nameservers:

# This is the network config written by 'subiquity'
network:
  ethernets:
    ens18: # Nombre de tu interfaz de red
      dhcp4: no
      addresses: [192.168.3.201/24]
      gateway4: 192.168.3.1
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]
  version: 2

Aplica la configuración:

sudo netplan apply
cat /etc/resolv.conf

2.2. Tipos de Registros de DNS

  • A: Asocia un nombre de dominio a una dirección IPv4. (ej: mail.miempresa.com --> 149.56.218.3)
  • AAAA: Asocia un nombre de dominio a una dirección IPv6.
  • NS: (Name Server) Indica los servidores DNS autoritativos para un dominio.
  • SOA: (Start of Authority) Información sobre el servidor DNS primario del dominio.
  • MX: (Mail Exchange) Especifica los servidores de correo para el dominio.
  • TXT: Proporciona información textual, usada para registros como SPF, DKIM y DMARC.
  • CNAME: (Canonical Name) Crea un alias para un nombre de dominio.
  • PTR: (Pointer) Para resolución inversa, asocia una IP a un nombre de dominio.

2.3. Comprobación de registros DNS con dig

Instalar las utilidades de DNS (incluye `dig`):

sudo apt update
sudo apt install -y dnsutils

dig tiene las siguientes secciones:

  • QUESTION SECTION: La consulta que se está realizando.
  • ANSWER SECTION: La respuesta a la consulta.
  • AUTHORITY SECTION: Detalle de los servidores de autorización (SOA).
  • ADDITIONAL SECTION: Información adicional.

2.4. Registro A

Verificar la zona de dominio www.miempresa.com:

dig www.miempresa.com

2.5. Registro AAAA

Verificar un registro IPv6:

dig AAAA mail.miempresa.com

2.6. Registro NS

Verificar los servidores DNS de miempresa.com:

dig NS miempresa.com

2.7. Registro MX

Verificar los servidores de correo de miempresa.com:

dig MX miempresa.com

2.8. Registro PTR

El PTR verifica que una IP tenga un nombre de host asociado. Es crucial para los servidores de correo.

dig -x 149.56.218.201

2.9. Registro TXT (SPF, DKIM, DMARC)

Verificar los registros SPF, DKIM y DMARC para miempresa.com:

dig TXT miempresa.com
dig TXT default._domainkey.miempresa.com
dig TXT _dmarc.miempresa.com

2.10. Verificación de todos los registros mediante transferencias de zonas

Si el servidor DNS lo permite, puedes solicitar una transferencia de zona completa.

dig axfr @ns1.miempresa.com miempresa.com

3. Configuración del Servidor DNS Público (Bind9)

3.1. Instalar Bind9

Instala los paquetes necesarios para el servidor DNS Bind9.

sudo apt update
sudo apt install -y bind9 bind9utils bind9-doc

3.2. Archivo principal de configuración de Bind

Edita el archivo de opciones de configuración de Bind.

sudo nano /etc/bind/named.conf.options
options {
    directory "/var/cache/bind";
    listen-on { 192.168.3.201; 127.0.0.1; };
    listen-on-v6 { none; };
    allow-query { any; };
    forwarders { 8.8.8.8; 1.1.1.1; };
    recursion no;
    allow-transfer { "none"; };
    dnssec-validation auto;
};

Ahora, define tu zona en el archivo de configuración local.

sudo nano /etc/bind/named.conf.local
// Zona para nuestro dominio
zone "miempresa.com" {
    type master;
    file "/etc/bind/zones/db.miempresa.com"; // Ruta al archivo de zona
    allow-update { none; };
};

3.3. Creando el archivo de zona para el dominio

Crea el directorio para los archivos de zona y el archivo de zona para tu dominio.

sudo mkdir -p /etc/bind/zones
sudo nano /etc/bind/zones/db.miempresa.com

Añade el siguiente contenido, ajustando los valores:

; Archivo de zona para miempresa.com
$TTL 604800
@ IN SOA ns1.miempresa.com. admin.miempresa.com. (
    4       ; Serial (incrementado)
    604800  ; Refresh
    86400   ; Retry
    2419200 ; Expire
    604800 ) ; Negative Cache TTL
;
; Name Servers
@ IN NS ns1.miempresa.com.
@ IN NS ns2.miempresa.com.

; Registros de direcciones IP
@ IN A 149.56.218.201
ns1 IN A 149.56.218.201
ns2 IN A 149.56.218.201
www IN A 149.56.218.201
mail IN A 149.56.218.201
mail IN AAAA 2001:0db8:85a3:0000:0000:8a2e:0370:7334

; Registro MX (Mail Exchanger)
@ IN MX 10 mail.miempresa.com.

; Registro SPF (Sender Policy Framework)
@ IN TXT "v=spf1 mx a ip4:149.56.218.201 -all"

; Registro DKIM (DomainKeys Identified Mail)
; Nota: El selector 'default' y la clave 'p' deben ser generados por tu servidor de correo
default._domainkey IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1E8Z8e8T7Q7fS..."

; Registro DMARC (Domain-based Message Authentication, Reporting, and Conformance)
_dmarc IN TXT "v=DMARC1; p=reject; rua=mailto:admin@miempresa.com"

3.4. Configuración de PTR

La configuración del registro PTR (resolución inversa) generalmente se solicita a tu proveedor de servicios de Internet (ISP) o se configura en el panel de control de tu proveedor de VPS, asociando tu IP pública a tu nombre de host (ej: 149.56.218.201 -> mail.miempresa.com).

3.5. Reglas de Firewall (UFW) para habilitar el puerto 53

Asegúrate de que UFW (Uncomplicated Firewall) esté instalado y habilitado, y permite el tráfico DNS.

sudo ufw status
sudo ufw allow 53/udp
sudo ufw allow 53/tcp
sudo ufw reload

3.6. Comprobación del DNS público

Desde tu máquina local (laptop), ejecuta las siguientes comprobaciones:

dig NS miempresa.com @149.56.218.201
dig MX miempresa.com @149.56.218.201
ping mail.miempresa.com

3.7. Comandos más usados para la administrción

Desde tu máquina local (laptop), ejecuta las siguientes comprobaciones:

1. Comando para comprobar la sintaxis de los archivos
named-checkzone miempresa.com /etc/bind/zones/db.miempresa.com

2. Reiniciar el Servicio Bind9
systemctl (start/stop/restart) bind9 

4. Creación de registros y explicación de términos

La creación de registros de DNS se debe hacer en el panel de control del proveedor de tu dominio (ej. GoDaddy, Namecheap, etc.). Si usas tu propio servidor DNS con Bind9, debes agregarlos al archivo de zona de tu dominio.

4.1. Creación de registros SPF

El registro SPF se añade como un registro de tipo TXT. Es fundamental para evitar que tus correos sean marcados como spam. Debe ser único para tu dominio.

Tipo: TXT
Nombre/Host: @ o el nombre de tu dominio (miempresa.com)
Valor: "v=spf1 mx a ip4:149.56.218.201 -all"

Recuerda que si tienes otros servicios de correo (como Google Workspace o Microsoft 365), sus IPs también deben estar incluidas.

4.1.1. Explicación de términos en SPF

  • v=spf1: Indica la versión de SPF que se está utilizando. Es el primer término y es obligatorio en cualquier registro SPF.
  • mx: Autoriza a todos los servidores de correo listados en los registros MX de tu dominio para enviar correo.
  • a: Autoriza a las direcciones IP listadas en los registros A de tu dominio para enviar correo.
  • ip4:149.56.218.201: Autoriza explícitamente a una dirección IPv4 específica para enviar correos. Debes reemplazar esta IP con la de tu servidor de correo. También existe ip6 para IPv6.
  • -all: Este es el mecanismo final que especifica la política a seguir.
    • **`-all` (fail):** Rechaza los correos que provienen de servidores no listados. Es la política más estricta y recomendada.
    • **`~all` (softfail):** Marca los correos como sospechosos pero no los rechaza. Se utiliza a menudo durante la fase de prueba.
    • **`+all` (pass):** Permite a cualquier servidor enviar correos. Esto anula el propósito de SPF y no se recomienda.

4.2. Creación de registros DMARC

El registro DMARC también es de tipo TXT y complementa a SPF y DKIM, permitiéndote definir una política para los correos no autenticados y recibir reportes.

Tipo: TXT
Nombre/Host: _dmarc
Valor: "v=DMARC1; p=reject; rua=mailto:admin@miempresa.com"

4.2.1. Explicación de términos en DMARC

  • v=DMARC1: Obligatorio, especifica la versión del protocolo DMARC.
  • p= (Policy): Define la política a aplicar a los correos que fallan la autenticación SPF o DKIM.
    • **`p=none`:** No se aplica ninguna acción, solo se recopilan datos para los informes. Ideal para la fase de monitoreo inicial.
    • **`p=quarantine`:** Los correos que fallan son enviados a la carpeta de spam o puestos en cuarentena por el servidor receptor.
    • **`p=reject`:** Los correos que fallan la autenticación son rechazados y no llegan a su destino. Es la política más segura.
  • rua=mailto:admin@miempresa.com: Especifica la dirección de correo a la que se enviarán los reportes agregados diarios. Estos informes te permiten ver qué servidores están enviando correos en nombre de tu dominio.

4.3. Creación de registros DKIM a través de Zimbra

Zimbra genera automáticamente la clave DKIM. Debes obtener esta clave y crear el registro DNS correspondiente.

1. Generar la clave en Zimbra:

Como usuario administrador, ejecuta el siguiente comando en el terminal de tu servidor Zimbra:

/opt/zimbra/libexec/zmdkimkeyutil -a -d miempresa.com -s default

Esto te dará una salida similar a:

DKIM public key for miempresa.com:
default._domainkey.miempresa.com. IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1E8Z8e8T7Q7fS..."

2. Crear el registro DNS:

Copia el nombre y el valor de la salida anterior y crea un nuevo registro TXT en el panel de control de tu dominio.

Tipo: TXT
Nombre/Host: default._domainkey
Valor: "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1E8Z8e8T7Q7fS..."

Una vez que el registro se propague, tus correos salientes se firmarán digitalmente, mejorando su capacidad de entrega.

4.3.1. Explicación de términos en DKIM

  • v=DKIM1: Obligatorio, especifica la versión del protocolo DKIM.
  • k= (Key type): Indica el tipo de clave que se utiliza. El valor más común es rsa para la criptografía RSA.
  • p= (Public key): Esta es la clave pública generada por tu servidor. Es una cadena larga de caracteres y es la parte esencial del registro. El servidor receptor utiliza esta clave para verificar la firma digital del correo saliente.