Anteriormente le mostré cómo configurar SPF y DKIM en el servidor de correo CentOS/RHEL. Dos piezas comunes de software que pueden realizar la firma y verificación de DKIM en Linux son OpenDKIM y Amavis. En ese tutorial usé Amavis, porque en ese momento OpenDKIM no estaba incluido en ningún repositorio de CentOS 8/RHEL 8. A partir de ahora, OpenDKIM está incluido en el repositorio de EPEL. Algunas personas prefieren usar OpenDKIM, así que les mostraré cómo hacerlo en este tutorial.
¿Qué es DKIM?
DKIM (DomainKeys Identified Mail) es un tipo de registros TXT en DNS que puede ayudar a prevenir la suplantación de correo electrónico y hacer que los correos electrónicos legítimos se entreguen en la bandeja de entrada del destinatario en lugar de en la carpeta de correo no deseado. DKIM usa una clave privada para agregar una firma a los correos electrónicos enviados desde su dominio . Los servidores SMTP receptores verifican la firma utilizando la clave pública correspondiente, que se publica en los registros DNS de su dominio.
Deshabilitar DKIM en Amavis
Si siguió mi tutorial anterior de Amavis, pero ahora quiere usar OpenDKIM, debe deshabilitar DKIM en Amavis. Edite el archivo de configuración principal.
sudo nano /etc/amavisd/amavisd.conf
Encuentra las siguientes líneas.
$enable_dkim_verification = 1; # enable DKIM signatures verification $enable_dkim_signing = 1; # load DKIM signing code, keys defined by dkim_key
Agrega un #
carácter al principio de cada línea para comentarlas.
#$enable_dkim_verification = 1; # enable DKIM signatures verification #$enable_dkim_signing = 1; # load DKIM signing code, keys defined by dkim_key
Guarde y cierre el archivo. Luego reinicie Amavis.
sudo systemctl restart amavisd
Paso 1:Instalar y configurar OpenDKIM en CentOS 8/RHEL8
Primero habilite el repositorio EPEL (paquetes adicionales para Enterprise Linux) e instale OpenDKIM.
sudo dnf install epel-release sudo dnf install opendkim
Edite el archivo de configuración principal de OpenDKIM.
sudo nano /etc/opendkim.conf
Busque la siguiente línea.
Mode v
De forma predeterminada, OpenDKIM se ejecuta en modo de verificación (v), que verificará la firma DKIM de los mensajes de correo electrónico entrantes. Necesitamos firmar los correos electrónicos salientes, así que cambie esta línea a la siguiente para habilitar el modo de firma.
Mode sv
Luego busque las siguientes líneas.
## Specifies whether or not the filter should generate report mail back ## to senders when verification fails and an address for such a purpose ## is provided. See opendkim.conf(5) for details. SendReports yes ## Specifies the sending address to be used on From: headers of outgoing ## failure reports. By default, the e-mail address of the user executing ## the filter is used ([email protected]). # ReportAddress "Example.com Postmaster" <[email protected]>
Cuando la verificación de una firma falla y la firma incluye una solicitud de informe ("r=y") y el dominio que firma anuncia una dirección de informe (es decir, ra=usuario) en un registro de informe en el DNS, OpenDKIM enviará un informe estructurado a esa dirección. que contiene los detalles necesarios para reproducir el problema. Es posible que desee utilizar una dirección de correo electrónico particular para enviar el informe. Descomente la ReportAddress
parámetro y cambiar la dirección de correo electrónico. Tenga en cuenta que esto no creará el problema de retrodispersión, porque los correos electrónicos de informes se enviarán a una dirección de correo electrónico especificada en el registro DNS del dominio del remitente.
Busque la siguiente línea y coméntelo, porque usaremos claves separadas para cada nombre de dominio.
KeyFile /etc/opendkim/keys/default.private
A continuación, busque las siguientes 4 líneas y elimínelas.
# KeyTable /etc/opendkim/KeyTable # SigningTable refile:/etc/opendkim/SigningTable # ExternalIgnoreList refile:/etc/opendkim/TrustedHosts # InternalHosts refile:/etc/opendkim/TrustedHosts
Guarde y cierre el archivo.
Paso 2:crear la tabla de firmas, la tabla de claves y el archivo de hosts de confianza
Edite la tabla de firmas archivo.
sudo nano /etc/opendkim/SigningTable
Agregue la siguiente línea al final de este archivo. Esto le dice a OpenDKIM que si un remitente en su servidor está usando un @your-domain.com
dirección, entonces debe firmarse con la clave privada identificada por 20200308._domainkey.your-domain.com
.
*@your-domain.com 20200308._domainkey.your-domain.com
20200308 es el selector DKIM. Un nombre de dominio puede tener varias claves DKIM. El selector DKIM le permite elegir una clave DKIM en particular. Puede usar cualquier nombre para el selector DKIM, pero me pareció conveniente usar la fecha actual (8 de marzo de 2020) como selector DKIM. Guarde y cierre el archivo. Luego edite la tabla de claves archivo.
sudo nano /etc/opendkim/KeyTable
Agregue la siguiente línea, que especifica la ubicación de la clave privada DKIM.
20200308._domainkey.your-domain.com your-domain.com:20200308:/etc/opendkim/keys/your-domain.com/20200308.private
Guarde y cierre el archivo. A continuación, edite el archivo de hosts de confianza.
sudo nano /etc/opendkim/TrustedHosts
127.0.0.0.1 y ::1 se incluyen en este archivo de forma predeterminada. Ahora agregue la siguiente línea. Esto le dice a OpenDKIM que si un correo electrónico proviene de su propio nombre de dominio, entonces OpenDKIM no debe realizar la verificación DKIM en el correo electrónico.
*.your-domain.com
Guarde y cierre el archivo.
Paso 3:generar un par de claves pública/privada
Dado que DKIM se usa para firmar mensajes salientes y verificar mensajes entrantes, necesitamos generar una clave privada para firmar y una clave pública para el verificador remoto. La clave pública se publicará en DNS.
Cree una carpeta separada para el dominio.
sudo mkdir /etc/opendkim/keys/your-domain.com
Genere claves usando opendkim-genkey
herramienta.
sudo opendkim-genkey -b 2048 -d your-domain.com -D /etc/opendkim/keys/your-domain.com -s 20200308 -v
El comando anterior creará claves de 2048 bits. -d (domain)
especifica el dominio. -D (directory)
especifica el directorio donde se almacenarán las claves. Yo uso 20200308
como el selector DKIM. Una vez que se ejecuta el comando, la clave privada se escribirá en 20200308.private
y la clave pública se escribirá en 20200308.txt
archivo.
De forma predeterminada, solo la raíz puede leer y escribir en los archivos clave. Hacer opendkim
como propietario de la clave privada.
sudo chown opendkim:opendkim /etc/opendkim/keys/ -R
Paso 4:Publique su clave pública en registros DNS
Mostrar la clave pública
sudo cat /etc/opendkim/keys/your-domain.com/20200308.txt
La cadena después de p
el parámetro es la clave pública.
En su administrador de DNS, cree un registro TXT, ingrese 20200308._domainkey
en el campo de nombre. (Debe reemplazar 20200308 con su propio selector DKIM). Luego regrese a la ventana de la terminal, copie todo lo que está entre paréntesis y péguelo en el campo de valor del registro DNS. Debe eliminar todas las comillas dobles y los saltos de línea en el campo de valor. Si no los elimina, la prueba de clave en el siguiente paso probablemente fallará.
Paso 5:probar la clave DKIM
Ingrese el siguiente comando en su servidor CentOS 8/RHEL 8 para probar su clave.
sudo opendkim-testkey -d your-domain.com -s 20200308 -vvv
Si todo está bien, verás la key OK
mensaje.
opendkim-testkey: using default configfile /etc/opendkim.conf opendkim-testkey: checking key '20200308._domainkey.linuxbabe.com' opendkim-testkey: key OK
Tenga en cuenta que su registro DKIM puede necesitar algún tiempo para propagarse a Internet. Según el registrador de dominio que utilice, su registro DNS puede propagarse instantáneamente o puede tardar hasta 24 horas en propagarse. Puede ir a https://www.dmarcanalyzer.com/dkim/dkim-check/, ingrese 20200308
como selector e ingrese su nombre de dominio para verificar la propagación de registros DKIM.
Si ve "Clave no segura", no entre en pánico. Esto se debe a que DNSSEC no está habilitado en su nombre de dominio. DNSSEC es un estándar de seguridad para consultas DNS seguras. La mayoría de los nombres de dominio no han habilitado DNSSEC. Puede continuar siguiendo esta guía.
Ahora podemos iniciar el servicio opendkim.
sudo systemctl start opendkim
Y habilite el inicio automático en el momento del arranque.
sudo systemctl enable opendkim
OpenDKIM escucha en 127.0.0.1:8891
.
Paso 6:Conecte Postfix a OpenDKIM
Edite el archivo de configuración principal de Postfix.
sudo nano /etc/postfix/main.cf
Agregue las siguientes líneas al final de este archivo, para que Postfix pueda llamar a OpenDKIM a través del protocolo milter. Tenga en cuenta que debe usar 127.0.0.1
como la dirección. No use localhost
.
# Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters
Guarde y cierre el archivo. Luego agregue postfix
usuario a opendkim
grupo.
sudo gpasswd -a postfix opendkim
Reiniciar postfix
servicio.
sudo systemctl restart postfix
Paso 7:Verificación de SPF y DKIM
Ahora puede usar su cliente de correo electrónico de escritorio o su cliente de correo web para enviar un correo electrónico de prueba a [email protected]
y obtenga un informe de autenticación de correo electrónico gratuito. Este es el informe que obtuve de port25.com.
También puede enviar un correo electrónico de prueba desde su servidor de correo a su cuenta de Gmail para ver si se pasan las comprobaciones de SPF y DKIM. En el lado derecho de un mensaje de correo electrónico abierto en Gmail, si hace clic en show original
del menú desplegable, puede ver los resultados de la autenticación.
Si su mensaje no está firmado y la verificación de DKIM falló, es posible que desee verificar el registro de postfix (/var/log/maillog
) para ver qué está mal en su configuración.
Su servidor de correo electrónico también realizará la verificación DKIM en los correos electrónicos entrantes. Puede ver los resultados en los encabezados de los correos electrónicos. La siguiente es la verificación de SPF y DKIM en un remitente que usa Gmail.
Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::c2d; helo=mail-yw1-xc2d.google.com; [email protected]; receiver=<UNKNOWN> Authentication-Results: email.linuxbabe.com; dkim=pass (2048-bit key; unprotected) header.d=gmail.com [email protected] header.b="XWMRd2co"; dkim-atps=neutral
Cómo configurar OpenDKIM para varios dominios
He escrito una guía para alojar varios dominios en el servidor de correo CentOS 8/RHEL 8 con PostfixAdmin. En ese artículo, utilicé Amavis para la firma y verificación de DKIM. Si usa OpenDKIM, entonces debe omitir el paso 3 en ese artículo.
Para configurar OpenDKIM para varios dominios, debe agregar los otros dominios en la tabla de firmas, la tabla de claves y el archivo de hosts de confianza como se muestra a continuación.
Mesa de firmas:
*@domain1.com 20200308._domainkey.domain1.com *@domain2.com 20200308._domainkey.domain2.com
Tabla clave:
20200308._domainkey.domain1.com domain1.com:20200308:/etc/opendkim/keys/domain1.com/20200308.private 20200308._domainkey.domain2.com domain2.com:20200308:/etc/opendkim/keys/domain2.com/20200308.private
Anfitriones de confianza:
127.0.0.1 localhost *.domain1.com *.domain2.com
Luego, genere el par de claves pública/privada de DKIM y agregue la clave pública de DKIM en el DNS como se menciona en los pasos 3, 4 y 5 para otros dominios. Reinicia OpenDKIM y listo.
sudo systemctl restart opendkim
Siguiente paso
Espero que este tutorial le haya ayudado a instalar y configurar OpenDKIM en el servidor de correo CentOS 8/RHEL 8. Ahora es posible que desee leer el siguiente tutorial para configurar OpenDMARC para bloquear la suplantación de identidad por correo electrónico.
- Configure OpenDMARC con Postfix en CentOS/RHEL para bloquear la falsificación de correo electrónico
Como siempre, si esta publicación le resultó útil, suscríbase a nuestro boletín gratuito para obtener más consejos y trucos. Cuídate 🙂