|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
El proveedor de buzón de correo seguro Protonmail utiliza Postfix y OpenDMARC para realizar comprobaciones DMARC en los correos electrónicos entrantes y le mostraré cómo hacer lo mismo en su propio servidor Postfix SMTP.
Requisitos
Este tutorial es para proveedores de buzones y cualquier persona que ejecute su propio servidor de correo, para proteger a sus usuarios de ser estafados por correo electrónico falso. Si es propietario de un nombre de dominio y desea evitar que los suplantadores de correo electrónico utilicen su nombre de dominio, lea este artículo para crear un registro DMARC y analizar el informe DMARC. También te recomiendo que leas ese artículo si no entiendes completamente DMARC.
Debe tener un servicio de verificación DKIM ejecutándose en su servidor de correo antes de configurar OpenDMARC. OpenDMARC debe usarse junto con OpenDKIM. Si usa Amavis para realizar la firma y verificación de DKIM, le recomiendo cambiar de Amavis a OpenDKIM. Eso es porque OpenDMARC no puede leer los resultados de verificación DKIM de Amavis. No tienes que desinstalar por completo Amavis. Simplemente deshabilite DKIM en Amavis, luego instale y configure OpenDKIM.
Si no desea cambiar a OpenDKIM, debe integrar Amavis con Postfix a través de la interfaz milter, que se explicará al final de este artículo.
Paso 1:Instalar y configurar OpenDMARC en CentOS/RHEL
OpenDMARC es un software de código abierto que puede realizar comprobaciones e informes DMARC. Puede instalarlo en CentOS/RHEL desde el repositorio de EPEL.
sudo dnf install epel-release
sudo dnf install opendmarc
Inicie OpenDMARC.
sudo systemctl start opendmarc
Habilite el inicio automático en el momento del arranque.
sudo systemctl enable opendmarc
OpenDMARC escucha en 127.0.0.1:8893
. Ejecute el siguiente comando para comprobar su estado.
systemctl status opendmarc
Salida:
● opendmarc.service - Domain-based Message Authentication, Reporting & Conformance (DMARC) Milter
Loaded: loaded (/usr/lib/systemd/system/opendmarc.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2020-03-08 23:52:59 EDT; 1min 4s ago
Docs: man:opendmarc(8)
man:opendmarc.conf(5)
man:opendmarc-import(8)
man:opendmarc-reports(8)
http://www.trusteddomain.org/opendmarc/
Main PID: 19987 (opendmarc)
Tasks: 3 (limit: 5047)
Memory: 1.1M
CGroup: /system.slice/opendmarc.service
└─19987 /usr/sbin/opendmarc -c /etc/opendmarc.conf -P /var/run/opendmarc/opendmarc.pid
Luego edite el archivo de configuración principal con su editor de texto.
sudo nano /etc/opendmarc.conf
Busque la siguiente línea:
# AuthservID name
De manera predeterminada, OpenDMARC usa el nombre de host del MTA como AuthserveID, pero es mejor usar un nombre diferente para el servicio de autenticación, porque Amavisd-new sobrescribirá el encabezado de resultados de autenticación agregado por OpenDMARC. Puede cambiarlo a lo siguiente, que le resultará muy fácil ver qué programa agrega qué encabezado de resultados de autenticación.
AuthservID OpenDMARC
A continuación, agregue la siguiente línea. Reemplace el nombre de host con su nombre de host real de Postfix. Esto le dice a OpenDMARC que confíe en el resultado de la autenticación con mail.yourdomain.com
en la identificación. Esto es necesario cuando tiene OpenDKIM ejecutándose para realizar la verificación de DKIM. Si el nombre de host de Postfix no está incluido en los TrustedAuthservIDs
, entonces OpenDMARC ignorará el encabezado de resultados de autenticación generado por OpenDKIM.
TrustedAuthservIDs mail.yourdomain.com
Luego busque la siguiente línea.
# IgnoreAuthenticatedClients false
Cambia el valor a true
para ignorar los clientes SMTP que se autentican correctamente a través de SMTP AUTH, que incluye clientes de correo de escritorio/móviles que envían correos electrónicos salientes a través del puerto 587.
IgnoreAuthenticatedClients true
Luego busque esta línea:
# RejectFailures false
De manera predeterminada, OpenDMARC no rechazará los correos electrónicos que no superen la verificación de DMARC, incluso si la política del dominio está establecida en p=reject
. . Si prefiere rechazar los correos electrónicos que fallan en DMARC, verifique cuándo la política del dominio está configurada en p=reject
, luego elimine el comentario de esta línea y cambie false
a true
.
RejectFailures true
Busque la siguiente línea.
# RequiredHeaders false
Cámbialo por:
RequiredHeaders true
Esto rechazará los correos electrónicos que no cumplan con los estándares de encabezado de correo electrónico como se describe en RFC5322. Por ejemplo, si un correo electrónico entrante no tiene From:
encabezado o date:
encabezado, será rechazado. También se rechazará un campo De:del que no se haya podido extraer ningún nombre de dominio.
De forma predeterminada, OpenDMARC en CentOS/RHEL ignorará los resultados de SPF en los encabezados de correo electrónico y realizará las comprobaciones de SPF por sí mismo. Esto se controla mediante los siguientes dos parámetros.
SPFIgnoreResults true
SPFSelfValidate true
Si prefiere utilizar otro servicio de comprobación de SPF en su servidor de correo, dígale a OpenDMARC que confíe en los resultados de SPF en los encabezados de correo electrónico y solo realice comprobaciones de SPF cuando no pueda encontrar resultados de SPF en los encabezados.
SPFIgnoreResults false
SPFSelfValidate true
Guarde y cierre el archivo. Luego reinicie OpenDMARC para que los cambios surtan efecto.
sudo systemctl restart opendmarc
Paso 2:Integrar OpenDMARC con el servidor SMTP de Postfix
Si usa OpenDKIM
Edite el archivo de configuración principal de Postfix.
sudo nano /etc/postfix/main.cf
Si siguió mi tutorial de DKIM en CentOS 8/RHEL 8, entonces debería tener líneas en este archivo como se muestra a continuación. OpenDKIM está escuchando en 127.0.0.1:8891
.
# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
Ahora solo necesita agregar el socket OpenDMARC para que Postfix pueda comunicarse con OpenDMARC. (Asegúrese de que esté después del socket OpenDKIM). OpenDMARC escucha en 127.0.0.1:8893
.
# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:8891,inet:127.0.0.1:8893
non_smtpd_milters = $smtpd_milters
Guarde y cierre el archivo. Luego reinicie Postfix para que el cambio surta efecto.
sudo systemctl restart postfix
Si usas Amavis
Si usa Amavis para la firma y verificación DKIM como en iRedMail , entonces OpenDMARC no puede leer los resultados de la verificación DKIM de Amavis. Puede instalar OpenDKIM para verificar la firma DKIM.
Instale OpenDKIM desde el repositorio EPEL (Extra Packages for Enterprise Linux).
sudo dnf install epel-release
sudo dnf install opendkim
Por defecto, el opendkim
El paquete en CentOS/RHEL se ejecuta solo en modo de verificación. No agregará firmas DKIM a los correos electrónicos salientes. Esto es lo que queremos porque Amavis agregará firmas DKIM. Edite el archivo de configuración de OpenDKIM.
sudo nano /etc/opendkim.conf
Busque la siguiente línea.
KeyFile /etc/opendkim/keys/default.private
Como no queremos que OpenDKIM firme los correos electrónicos salientes, debemos comentar esta línea, luego guardar y cerrar el archivo.
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,inet:127.0.0.1:8893
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
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
Paso 3:Probar la verificación de OpenDMARC
Ahora envíe un correo electrónico desde su otra dirección de correo electrónico a su dirección de dominio. Después de eso, revisa los encabezados de los correos electrónicos. Si OpenDMARC funciona correctamente, puede ver los resultados de verificación de DMARC como se muestra a continuación.
Authentication-Results: OpenDMARC; dmarc=pass (p=none dis=none) header.from=gmail.com
Envié un correo electrónico desde mi cuenta de Gmail a la dirección de correo electrónico de mi dominio y pasó la verificación DMARC. Si no ve este encabezado de correo electrónico, verifique sus registros de correo.
sudo nano /var/log/maillog
Verá algo como a continuación, lo que significa que OpenDMARC está funcionando.
opendmarc[26495]: 61DAA3EA44: gmail.com pass
Si ve el siguiente mensaje.
ignoring Authentication-Results at 1 from mail.linuxbabe.com
significa que OpenDMARC está ignorando los resultados de verificación de SPF y DKIM, por lo que OpenDMARC no está funcionando. Debe agregar la siguiente línea en /etc/opendmarc.conf
archivo, luego reinicie OpenDMARC.
TrustedAuthservIDs mail.yourdomain.com
Si cambia el Postfix myhostname
parámetro, recuerde agregar el nuevo nombre de host a TrustedAuthservIDs. Puede agregar varios nombres de host, separados por comas.
TrustedAuthservIDs mail.yourdomain.com,mail2.yourdomain.com
Prueba de OpenDMARC con Telnet
Puede utilizar telnet para falsificar otro nombre de dominio, como paypal.com. Primero, ejecute el siguiente comando para conectarse al puerto 25 de su servidor de correo.
telnet mail.yourdomain.com 25
Luego, siga los siguientes pasos para enviar un correo electrónico falso. (Usted escribe los textos en negrita.)
HELO mail.paypal.com
250 mail.yourdomain.com
MAIL FROM:<[email protected]>
250 2.1.0 Ok
RCPT TO:<[email protected]>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
From: [email protected]
To: [email protected]
Subject: Please update your password.
Click this link to update your password.
.
550 5.7.1 rejected by DMARC policy for paypal.com
quit
Como puede ver, mi servidor de correo rechazó este correo electrónico porque no pasó la verificación de DMARC y Paypal implementó un p=reject
política.
Nota: Si la política DMARC de un dominio está establecida en p=quarantine
, OpenDMARC milter colocará el correo electrónico falsificado en la cola de espera de Postifx. indefinidamente. El postmaster puede listar todos los mensajes en la cola con postqueue -p
comando y use el postsuper
utilidad de línea de comandos para liberar mensajes en cola de espera.
(Opcional) Integrar Amavis con Postfix a través de Milter
Como se explica en la sección de requisitos previos, recomiendo cambiar de Amavis a OpenDKIM, pero si no desea cambiar, debe integrar Amavis con Postfix a través de la interfaz milter, para que OpenDMARC pueda leer el resultado de la verificación DKIM de Amavis.
Instala el amavisd-milter
paquete en CentOS/RHEL.
sudo dnf install amavisd-milter
Inicie el servicio.
sudo systemctl start amavisd-milter
Habilite el inicio automático en el momento del arranque.
sudo systemctl enable amavisd-milter
Amavisd-milter escucha en un socket Unix en /run/amavisd/amavisd-milter.sock
. Edite el archivo de configuración principal de Postfix.
sudo nano /etc/postfix/main.cf
Agregue las siguientes líneas al final del archivo. Tenga en cuenta que debe colocar el zócalo Unix amavisd-milter antes del zócalo TCP OpenDMARC.
# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = unix:/run/amavisd/amavisd-milter.sock,inet:127.0.0.1:8893
non_smtpd_milters = $smtpd_milters
También comente la siguiente línea, para que Postfix no pase los correos electrónicos entrantes a Amavis dos veces.
content_filter = smtp-amavis:[127.0.0.1]:10024
Guarde y cierre el archivo. Luego agregue postfix
al amavis
grupo, por lo que Postfix podrá acceder al socket Amavis Unix.
sudo gpasswd -a postfix amavis
Los correos electrónicos salientes enviados por usuarios autenticados no deben pasarse a Amavis a través de la interfaz milter, porque Amavis no agregará la firma DKIM. Deberían usar 127.0.0.1:10026
como de costumbre, para que se agregue la firma DKIM. Edite el archivo Postfix master.cf.
sudo nano /etc/postfix/master.cf
Encuentra el submission
componente. Debería tener el siguiente aspecto si siguió mi tutorial de Amavis en CentOS/RHEL.
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_tls_wrappermode=no
-o smtpd_sasl_auth_enable=yes
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
-o content_filter=smtp-amavis:[127.0.0.1]:10026
Ahora agregue la siguiente opción al final.
-o smtpd_milters=
Así:
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_tls_wrappermode=no
-o smtpd_sasl_auth_enable=yes
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
-o content_filter=smtp-amavis:[127.0.0.1]:10026
-o smtpd_milters=
Esto hará que el servicio de envío de Postfix no use milter en absoluto, por lo que los correos electrónicos enviados por usuarios autenticados no se pasarán a Amavis a través de la interfaz milter. Tenga en cuenta que no debe agregar ningún espacio antes del signo igual (=).
También debe agregar esta línea a smtps
componente.
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
-o content_filter=smtp-amavis:[127.0.0.1]:10026
-o smtpd_milters=
Guarde y cierre el archivo. Reinicie Postfix para que los cambios surtan efecto.
sudo systemctl restart postfix
Ahora OpenDMARC podrá leer el resultado de la verificación DKIM de Amavis, y Amavis continuará agregando la firma DKIM para los usuarios autenticados.