En el siguiente tutorial vamos a explicar como configurar correctamente los registros para el correo DKIM y DMARC.

El registro DKIM o DomainKeys Identified Mail es un registro que nos permite firmar el correo con el dominio a través de claves públicas indicadas en las zonas DNS de tu dominio.

El registro DMARC o Domain-based Message Authentication, Reporting and Conformance -tela con el nombre-, es un registro que complementa al SPF y al DKIM. Este registro indica qué hacer cuando dan error los registros anteriores, para así poder tomar medidas necesarias lo antes posible.

Configurar DKIM en Postfix

Empezaremos instalando los paquetes necesarios para configurar DKIM:

apt install opendkim opendkim-tools

Añadimos el usuario postfix al grupo opendkim:

gpasswd -a postfix opendkim

Editamos el fichero de configuración /etc/opendkim.conf para comentar o descomentar las siguientes líneas.

## Descomentamos:
Logwhy               yes

## Más abajo, descomentamos:
Canonicalization   relaxed/simple
Mode               sv
SubDomains         no

## Justo debajo de SubDomains añadimos lo siguiente:
AutoRestart         yes
AutoRestartRate     10/1M
Background          yes
DNSTimeout          5
SignatureAlgorithm  rsa-sha256

## Debajo de UserID añadimos:
KeyTable           refile:/etc/opendkim/key.table
SigningTable       refile:/etc/opendkim/signing.table
ExternalIgnoreList  /etc/opendkim/trusted.hosts
InternalHosts       /etc/opendkim/trusted.hosts

Guardamos el fichero de configuración y seguimos.

Creamos estructura de ficheros necesarios

Creamos directorios:

mkdir /etc/opendkim
mkdir /etc/opendkim/keys

Modificamos permisos:

chown -R opendkim:opendkim /etc/opendkim
chmod go-rw /etc/opendkim/keys

Creamos el siguiente fichero de configuración /etc/opendkim/signing.table y añadimos lo siguiente:

*@[tu_dominio]    default._domainkey.[tu_dominio]
*@*.[tu_dominio]    default._domainkey.[tu_dominio]
📢
Recuerda modificar [tu_dominio] por el dominio que estás configurando.

Creamos otro fichero de configuración /etc/opendkim/key.table y añadimos lo siguiente:

default._domainkey.[tu_dominio]     [tu_dominio]:default:/etc/opendkim/keys/[tu_dominio]/default.private
📢
Recuerda modificar [tu_dominio] por el dominio que estás configurando.

Último fichero que creamos, ahora /etc/opendkim/trusted.hosts y añadimos lo siguiente:

127.0.0.1
localhost

.[tu_dominio]
📢
Recuerda modificar [tu_dominio] por el dominio que estás configurando.

Generamos las llaves para DKIM

Si queremos crear diferentes llaves para diferentes dominios, lo que haremos será crear un directorio por cada domino, por lo tanto:

mkdir /etc/opendkim/keys/[tu_dominio]

Y generamos las llaves en el directorio anterior con:

opendkim-genkey -b 2048 -d [tu_dominio] -D /etc/opendkim/keys/[tu_dominio] -s default -v

Cambiamos permisos de los ficheros creados:

chown opendkim:opendkim /etc/opendkim/keys/[tu_dominio]/default.private
chmod 600 /etc/opendkim/keys/[tu_dominio]/default.private
📢
Recuerda modificar [tu_dominio] por el dominio que estás configurando.

Creamos el registro en nuestra zona DNS

Ahora deberemos de crear el registro tipo TXT en nuestra zona DNS, para ello podremos ver el  registro que tenemos que poner con este comando:

cat /etc/opendkim/keys/[tu_dominio]/default.txt

Este comando debería de mostrar la siguiente salida:

default._domainkey      IN      TXT     ( "v=DKIM1; h=sha256; k=rsa; "
          "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmYnS7t6LBjrqMFjzOqxCNmR0hah6XoQqsOb+2UyuWuwHXplmzDcaeFvbEQ+c6dHQisIuluNxtUhxIBuKVSdbH1kgTTLrWfvIQgOv9ALpEwcb/6dHKoUvsuPGCOd2YU6ckv2DHuwEvmJSYOWZ8hX2zZvQmpy/Rfd7twKNkokPqZgbbHSm/1GqYjRbuo2I9C2r4bB35LLxv6a3uv"
          "0sklAYME1ioL/Pz9Z9fopWjbaXOfwN+KL/0vzARVam3ttFgdwM3nWMSaysx6PHeaYuVVo/EvhoonOmeygl1W9ouCm/WvxsknB2qAiPOFzBcgnPI34++3IWQTt8R6R0z94iNDE3LwIDAQAB" )  ; 
📢
Deberemos de crear un registro tipo TXT con el nombre default._domainkey y con el valor que hay entre comillas que se trata de la llave.

Comprobamos nuestra llave

Podemos hacerlo usando el siguiente comando:

opendkim-testkey -d [tu_dominio] -s default -vvv

Esto nos devolverá la siguiente salida:

opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: checking key 'default._domainkey.[tu_dominio]'
opendkim-testkey: key secure
opendkim-testkey: key OK
🚨
Si aparece "key not secure" en la salida del comando, no te asustes. Esto se debe a que DNSSEC no está habilitado en tu nombre de dominio. DNSSEC es un estándar de seguridad para consultas DNS seguras. La mayoría de los nombres de dominio no lo tienen habilitado por defecto. Puedes continuar siguiendo este tutorial.

Conectamos OpenDKIM a Postfix

Creamos directorios necesarios y sus permisos:

mkdir /var/spool/postfix/opendkim
chown opendkim:postfix /var/spool/postfix/opendkim

Editamos el fichero de configuración de OpenDKIM /etc/opendkim.conf y revisamos o añadimos lo siguiente:

## Busca esta línea y comentala.
Socket                 local:/run/opendkim/opendkim.sock

## Descomenta la siguiente línea de más abajo:
Socket                  local:/var/spool/postfix/opendkim/opendkim.sock

Guardamos y editamos /etc/postfix/main.cf y añadimos lo siguiente:

milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters
🚨
Revisa que no se dupliquen los parámetros, ya que algunos de ellos ya es posible que los tengas en el fichero de configuración de Postfix. Por lo que si existen, mira de dejarlos con el valor que aparece más arriba.

Finalmente, reiniciamos ambos servicios:

systemctl restart opendkim postfix

Configurar registro DMARC

En nuestra zona DNS deberemos de configurar un registro Tipo TXT con el siguiente contenido:

v=DMARC1; p=none; pct=100; rua=mailto:dmarc-reports@[tu_dominio]

Explicación de los parámetros:

  • =DMARC1: La versión del protocolo es DMARC1.
  • p=none: Elegimos none como política para nuestro dominio.
  • pct=100: El porcentaje de correos de tu dominio a los que se aplica DMARC.
  • rua: Son las siglas de reporting URI para informe agregado. La dirección de correo electrónico se utiliza para indicar a los servidores de correo electrónico receptores dónde debe enviarse el informe.

Existen 3 políticas entre las que puedes escoger:

  • none: Indica a los servidores de correo electrónico receptores que no hagan nada especial si falla la comprobación DMARC.
  • quarantine: Indica al servidor de correo electrónico receptor que ponga el correo en cuarentena si falla la comprobación DMARC. Debe ser aprobado por un administrador antes de que pueda llegar a la bandeja de entrada del destinatario.
  • reject: Indica a los servidores de correo electrónico receptores que rechacen el correo electrónico si falla la comprobación DMARC. Ten en cuenta que no todos los servidores de correo electrónico receptores cumplen la política de rechazo. Gmail y Yahoo Mail rechazarán el correo electrónico, pero Microsoft Mail (Outlook, Hotmail, Live) no lo rechaza.

Comprobación y revisión

Ahora podremos mirar si los registros están creados correctamente. Podemos usar MXToolBOX para comprobar nuestro DKIM. O nuestro DMARC.

Además podemos usar Mail-Tester para ver que tenemos una puntuación sobre 10.

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación