GNU/Linux >> Tutoriales Linux >  >> Cent OS

Parte 4:configurar SPF y DKIM con Postfix en el servidor de correo CentOS 8/RHEL 8

Después de completar la parte 1 y la parte 2, tenemos un servidor Postfix SMTP y un servidor Dovecot IMAP en funcionamiento. Podemos enviar y recibir correo electrónico utilizando un cliente de correo electrónico de escritorio. Aunque he creado el MX correcto , A y PTR registro, mis correos electrónicos fueron marcados como spam por Gmail y correo de Outlook. Entonces, en esta parte, veremos cómo mejorar la entrega de correo electrónico a la bandeja de entrada del destinatario mediante la configuración de SPF y DKIM en el servidor CentOS/RHEL.

¿Qué son los registros SPF y DKIM?

SPF y DKIM son dos tipos de registros TXT en DNS que pueden ayudar a prevenir la suplantación de correo electrónico y hacer que los correos electrónicos legítimos se envíen a la bandeja de entrada del destinatario en lugar de a la carpeta de correo no deseado. Si se abusa de su dominio mediante la suplantación de correo electrónico, es probable que sus correos electrónicos aterricen en la carpeta de correo no deseado del destinatario si el destinatario no lo agregó en la libreta de direcciones.

FPS (Marco de políticas del remitente) especifica qué hosts o direcciones IP pueden enviar correos electrónicos en nombre de un dominio . Debe permitir que solo su propio servidor de correo electrónico o el servidor de su ISP envíe correos electrónicos para su dominio.

DKIM (DomainKeys Identified Mail) 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.

Crear un registro SPF en DNS

En su interfaz de administración de DNS, cree un nuevo registro TXT como se muestra a continuación.

TXT  @   v=spf1 mx ~all

donde:

  • TXT indica que se trata de un registro TXT.
  • Ingrese @ en el campo de nombre para representar el nombre de dominio principal.
  • v=spf1 indica que se trata de un registro SPF y la versión del registro SPF es SPF1.
  • mx significa que todos los hosts enumerados en los registros MX pueden enviar correos electrónicos para su dominio y todos los demás hosts no están permitidos.
  • ~todos indica que los correos electrónicos de su dominio solo deben provenir de hosts especificados en el registro SPF. Los correos electrónicos enviados desde otros hosts se marcarán como no confiables. Las alternativas posibles son +all , -all , ?all , pero rara vez se usan.

-all significa que los correos electrónicos enviados desde hosts no permitidos deben rechazarse, y nunca deben aterrizar en la bandeja de entrada o la carpeta de correo no deseado del destinatario. Lo he visto usado por facebook.com, pero generalmente no necesitamos una política tan estricta.

Algunas personas podrían pensar que -all será mejor ya que rechazará los correos electrónicos de hosts que no sean de confianza. Bueno, usando -all en su política SPF puede hacer que sus propios correos electrónicos sean rechazados cuando el destinatario tiene dos servidores SMTP y el servidor SMTP principal se desconecta, sus correos electrónicos se almacenarán temporalmente en el servidor SMTP de respaldo. Cuando el servidor SMTP principal vuelva a estar en línea, el correo electrónico se retransmitirá desde el servidor SMTP de respaldo al servidor SMTP principal. Dado que no incluyó el servidor SMTP de respaldo del destinatario en su política de SPF, el servidor SMTP principal del destinatario rechazará el correo electrónico. Entonces deberías usar ~all en su política de SPF.

Tenga en cuenta que algunos administradores de DNS requieren que envuelva el registro SPF con comillas dobles como se muestra a continuación.

TXT  @   "v=spf1 mx ~all"

Para verificar si su registro SPF se propaga a la Internet pública, puede usar dig utilidad en su caja de Linux como a continuación. (En CentOS/RHEL, debe instalar bind-utils paquete para usar el dig comando:sudo dnf install bind-utils .)

dig your-domain.com txt

El txt opción le dice a dig que solo queremos consultar registros TXT.

También puede usar el validador SPF en línea como spf.myisp.ch para ver qué hosts pueden enviar correos electrónicos para su dominio y depurar su registro SPF si ocurre algún error. El topógrafo dmarcian SPF puede ayudarlo a probar la sintaxis de su registro SPF.

Configuración del agente de política SPF

También debemos decirle a nuestro servidor Postfix SMTP que verifique el registro SPF de los correos electrónicos entrantes para detectar correos electrónicos falsificados. Primero instale los paquetes requeridos:

sudo dnf install epel-release

sudo dnf install pypolicyd-spf

Luego agregue un usuario para policyd-spf.

sudo adduser policyd-spf --user-group --no-create-home -s /bin/false

Edite el archivo de configuración del proceso maestro de Postfix.

sudo nano /etc/postfix/master.cf

Agregue las siguientes líneas al final del archivo, que le indican a Postfix que inicie el demonio de políticas SPF cuando se esté iniciando solo. Policyd-spf se ejecutará como policyd-spf usuario.

policyd-spf  unix  -       n       n       -       0       spawn
    user=policyd-spf argv=/usr/libexec/postfix/policyd-spf

Nota :No debe ejecutar policyd-spf en un entorno chroot.

Guarde y cierre el archivo. A continuación, edite el archivo de configuración principal de Postfix.

sudo nano /etc/postfix/main.cf

Agregue las siguientes líneas al final del archivo. La primera línea especifica la configuración de tiempo de espera del agente de políticas de Postfix (para consultar DNS). Las siguientes líneas impondrán restricciones a los correos electrónicos entrantes al verificar el registro SPF.

policyd-spf_time_limit = 3600
smtpd_recipient_restrictions =
   permit_mynetworks,
   permit_sasl_authenticated,
   reject_unauth_destination,
   check_policy_service unix:private/policyd-spf

Guarde y cierre el archivo. Luego reinicie Postfix.

sudo systemctl restart postfix

La próxima vez que reciba un correo electrónico de un dominio que tenga un registro SPF, podrá ver los resultados de la verificación SPF en el encabezado del correo electrónico sin procesar. El siguiente encabezado indica que el remitente envió el correo electrónico desde un host autorizado.

Received-SPF: Pass (mailfrom) identity=mailfrom;

Configuración de DKIM

Dos piezas comunes de software que pueden realizar la firma y verificación de DKIM en Linux son OpenDKIM y Amavis. Usaremos OpenDKIM porque es liviano y OpenDMARC no funciona con Amavis.

Instalar y configurar OpenDKIM en CentOS 8/RHEL8

Instale OpenDKIM desde el repositorio EPEL (Extra Packages for Enterprise Linux).

sudo dnf install epel-release

sudo dnf install opendkim perl-Getopt-Long

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.

Crear tabla de firmas, tabla de claves y 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.

Generar par de claves pública/privada

Dado que DKIM se usa para firmar mensajes salientes y verificar mensajes entrantes, debe generar una clave privada para firmar correos electrónicos salientes y una clave pública para recibir servidores SMTP para verificar la firma DKIM de su correo electrónico. 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

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á.

Probar 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 .

Conectar 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

Comprobación de SPF y DKIM

Ahora 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á una verificación de SPF y DKIM en el dominio del remitente. 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: mail.linuxbabe.com;
	dkim=pass (2048-bit key; unprotected) header.d=gmail.com [email protected] header.b="XWMRd2co";
	dkim-atps=neutral

Prueba de puntuación y ubicación del correo electrónico

Ahora puede ir a https://www.mail-tester.com. Verá una dirección de correo electrónico única. Envíe un correo electrónico desde su dominio a esta dirección y luego verifique su puntaje. Como puede ver, obtuve una puntuación perfecta.

Mail-tester.com solo puede mostrarle una puntuación de remitente. Hay otro servicio llamado GlockApps que le permite verificar si su correo electrónico se coloca en la bandeja de entrada o en la carpeta de correo no deseado del destinatario, o si se rechaza por completo. Es compatible con muchos proveedores de correo electrónico populares como Gmail, Outlook, Hotmail, YahooMail, iCloud mail, etc.

Buzones de Microsoft (Hotmail.com, Outlook.com)

Microsoft parece estar usando una lista negra interna que bloquea muchas direcciones IP legítimas. Si sus correos electrónicos son rechazados por Outlook o Hotmail, debe enviar el formulario de información del remitente. Después de eso, su correo electrónico será aceptado por Outlook/Hotmail, pero aún puede ser etiquetado como correo no deseado. En mi prueba, el correo electrónico llegó a mi bandeja de entrada de Gmail. Sin embargo, todavía está etiquetado como correo no deseado en mi correo electrónico de Outlook.com, aunque se pasan SPF y DKIM.

¿Qué sucede si sus correos electrónicos aún se marcan como spam?

Tengo más consejos para ti en este artículo:Cómo evitar que tus correos electrónicos se marquen como spam.

Siguiente paso

En la parte 5, veremos cómo crear un registro DMARC para proteger su dominio de la suplantación de identidad por correo electrónico. Como siempre, si esta publicación te resultó útil, suscríbete a nuestro boletín gratuito para recibir más artículos útiles, síguenos en Twitter o dale me gusta a nuestra página de Facebook.


Cent OS
  1. Cómo instalar el servidor de correo postfix en RHEL 8 / CentOS 8

  2. Cómo instalar y configurar el servidor de correo Postfix en CentOS 8

  3. Cómo instalar e integrar DKIM con OpenDKIM y Postfix en un CentOS 6 VPS

  4. Configure un servidor de correo con PostfixAdmin y MariaDB en CentOS 7

  5. Cómo configurar un servidor de correo con PostfixAdmin en CentOS 7

Configurar el servidor de impresión CUPS en CentOS 8/RHEL 8 (Bonjour, IPP, Samba, AirPrint)

Configure el servidor Samba en CentOS 8/RHEL 8 para compartir archivos

Configure OpenDMARC con Postfix en CentOS/RHEL para bloquear la falsificación de correo electrónico

Instale y configure OpenDKIM en el servidor de correo CentOS 8/RHEL 8

Parte 3:PostfixAdmin:cree buzones virtuales en el servidor de correo CentOS 8/RHEL 8

Cómo configurar un servidor de correo con todas las funciones con Postfix, Dovecot y Roundcube en Ubuntu 18.04