#SYSAdmin – #Servidor de #correo #Postfix con #DKIM y #SPF

postfix-spf-dkimEl correo electrónico es uno de los servicios fundadores de internet, ha sobrevivido a muchos cambios y sigue siendo de los más utilizados. Desafortunadamente cuando se diseño no se pensó en la seguridad, es común la suplantación de identidades o el envió de correos masivos mejor conocidos como SPAM.

Los primeros esfuerzos por evitar el SPAM surgió a partir del uso de listas negras (blacklist), me llegó a tocar aparecer en algunas, luego solicitarles amablemente que te quitaran cumpliendo primero con algunos requisitos.

Pero esto era poco práctico y con demasiados falsos positivos, por eso ahora hay dos técnicas que se utilizan ampliamente para validar el origen de un correo electrónico y son DKIM y SPF.

DomainKeys Identified Mail (DKIM) es un método para la autentificación de correo electrónico, permite a una persona que recibe el correo electrónico verificar que el mensaje procede efectivamente del dominio que pretende haber venido. La necesidad de este tipo de autentificación surge porque el SPAM a menudo ha falsificado las cabeceras de los mensajes.

Sender Policy Framework (SPF) es la última iniciativa para combatir el SPAM. Se trata de un protocolo que mediante dos técnicas intenta averiguar si existe una suplantación de identidad en los mensajes recibidos, con sólo examinar sus cabeceras.

En pocas palabras, todos los correos van a salir con un sello que certifica su origen, así no van a poder decir que a chuchita la bolsearon.

En este artículo voy a intentar explicar como activar ambas técnicas usando un servidor Ubuntu, no tiene que ser necesariamente esta distribución, pero pueden existir ligeras diferencias en una u otra y en temas de seguridad hasta un bit importa, si algo no esta bien las firmas no lo estarán, el mensaje no se validará y no llegaremos a ningún lado. Sin embargo, supongo que esta información se puede adaptar a prácticamente cualquier distribución de linux.

No voy a profundizar en los aspectos de la instalación de un Ubuntu server ya que en internet hay muchos sitios que tratan el tema.

Les puedo recomendar el uso de virtualbox para hacer algunas pruebas antes de hacer esto en un servidor en producción.

Instalar el software necesario.

Instalar postfix como MTA, opendkim para firmar los correos y mpack para enviar la configuración a otro equipo.

Elegir la configuración de Sitio de internet para postfix.

Un ubuntu server virtualizado puede ser útil para hacer algunas pruebas.

Nombre de dominio www.sysadminsdecuba.com y Hostname del servidor mail . Cualquier nombre de dominio esta bien para hacer algunas pruebas. Claro que esto lo tienen que cambiar para un servidor en producción.

Generar las llaves de opendkim

Llegó el momento de ponernos serios, les recuerdo que estos valores son de ejemplo y tendrán que ajustarlos a sus propias instalaciones.

Primero, crear una carpeta en /etc/opendkim

Y luego hay que generar las llaves para opendkim con el comando:

Nombre del selector mail y dominio www.sysadminsdecuba.com son de ejemplo pero son valores importantes.

Esto genera dos archivos mail.txt y mail.private que son las llaves que se van a usar para firmar los correos.

Enviamos el archivo mail.txt a un correo electrónico ya que contiene la información necesaria para modificar el DNS.

Para esto usé el comando mpack para mandarlos por correo, pero pueden copiar el archivo a un dispositivo usb o cualquier otro medio que tengan a la mano.

Antes de poder usar este archivo, primero hay que hacerle algunos ajustes.

Cadena Original:

Tenemos que agregar la letra k antes de =rsa; y agregar el texto t=y; después del rsa para indicar que es de prueba.

Con los ajustes realizados quedaría más o menos así:

Y con esto obtenemos básicamente lo que es la definición del DNS que tenemos que ajustar en el dominio.

Atención.

Las instrucciones para dar de alta esta información en nuestro DNS puede ser muy variadas, tendrán que investigar por su cuenta sobre como modificar la información de un DNS.

Probamos si esta todo correcto con esta instrucción:

al final la instrucción debe decir:

Eso quiere decir que esta correcto.

Configurar opendkim

Primero se edita el archivo /etc/default/opendkim y agregamos esta línea.

Editamos el archivo /etc/opendkim.conf y ajustamos las siguientes líneas.

Creamos el archivo internal_hosts cuyo contenido será las direcciones IP que están autorizadas por dkim para firmar correos.

Reiniciamos opendkim:

Configurar postfix.

Agregar estas líneas al final del archivo /etc/postfix/main.cf

ajustar los valores:

y

Mediante la directiva mynetworks definimos qué redes o hosts pueden enviar correo a través de nuestro Postfix. Un ejemplo sería

Con esta configuración estamos definiendo: La red 127.0.0.0 puede enviar. Esta red siempre será nuestra propia máquina (localhost). Los 254 hosts de la red 192.168.2.0 pueden usar nuestro servidor. Solo el host 172.16.3.4 puede usar nuestro servidor, y ninguno más de la red 172.16.3.0. Por ejemplo, el 172.16.3.14 no podría.

Reiniciamos posftfix

Configurar SPF en DNS

Es mucho más sencillo siguiendo esta regla:

Ejemplo,

Esto se coloca en el DNS como un TXT general.

Verificar SPF en Postfix

Instalar el demonio

Lo primero es lo primero que tenemos que instalar el demonio que se va a comprobar los registros SPF para nosotros. Esto viene como un módulo postfix tendremos que configurar.

Lo siguiente que necesitamos para localizar el archivo ejecutable, por defecto este se encuentra en /usr/sbin/postfix-policyd-spf-perl sin embargo para otros sabores linux esto es probable que encuentra en otros lugares.

Para localizar el ejecutable podemos utilizar los siguientes comandos

Ubicaciones probables son /usr/bin/ , /usr/sbin/ , /usr/local/bin/ etc. (Las ubicaciones habituales que encontrarían un ejecutable a). Tome nota de la ubicación del ejecutable, ya que lo necesitará más adelante.

Configurar postfix

Lo siguiente que necesitamos para configurar postfix para utilizar el nuevo demonio que hemos instalado. Abra /etc/postfix/main.cf con su editor favorito

Agregue la siguiente opción en la parte inferior del archivo

Esto cambia el tiempo límite para que el servidor de políticas no se interrumpirá mientras que todavía se está procesando un mensaje.

Después de eso ahora tenemos que editar /etc/postfix/master.cf para configurar un nuevo servicio para postfix a utilizar.

Cambie el argv= opción en consecuencia con la ubicación del ejecutable que instalamos previamente.

Finalmente tenemos que añadir el nuevo servicio de la política en nuestro smtpd_recipient_restrictions opción en /etc/postfix/main.cf

Nota: Coloque el servidor de la política después de reject_unauth_destination para evitar respuestas inesperadas del servicio de la política y para evitar que el sistema se convierta en una retransmisión abierta. También debe poner el servicio de la política después de usted permite remitentes locales, ya que sólo queremos comprobar los registros SPF de correo entrante de Internet, correo no saliente de usted o sus usuarios.

Lo último que hay que hacer es postfix reload

Verificación Está funcionando

La forma más sencilla de varify usted ha instalado correctamente y configurado la comprobación SPF es monitorear su registro electrónico, mientras que el envío de un correo electrónico a ti mismo desde una fuente externa, como Gmail.

Si hay un problema con el servicio de la política o su integración con Postfix que se registrará, correo asimismo aceptado que pasa la comprobación SPF también se registrará.

Pruebas, pruebas y más pruebas.

Una forma muy sencilla de probar si todo es correcto es configurando un cliente de correo electrónico (puedo sugerir thunderbird) para que utilice el servidor que acabamos de configurar como su SMTP y enviar un correo a [email protected]

Su respuesta nos dará los resultados:

Si todo salió bien y terminaron las pruebas, entonces quiten el texto t=y; del DNS para indicar que ya son valores finales y las pruebas terminaron.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 4.8 / 5. Recuento de votos: 5

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Sobre Armando Felipe Fuentes Denis 82 artículos
Director de Infraestructura en Guajiritos S.R.L.

12 comentarios

  1. Firefox 63.0 Firefox 63.0 Windows 8.1 x64 Edition Windows 8.1 x64 Edition
    Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0

    hola a todos, estoy teniendo dificultades con DKIM, quisiera saber si hay que tener control de la zona DNS, y si en caso de no tenerla, el registro DKIm debe estar agregado en los DNS de ETECSA, pues ya lo tengo configurado y mi DNS interno y obtengo el siguiente error
    ‘default._domainkey.uptcer.co.cu’ record not found
    ademas al hacer un netstat no monta el puerto 8891 por ningun lado y sin embargo el servicio inicia
    necesito ayuda pues estoy teniendo dificultades con la suplantacion de identidad, tengo corregido la suplantacion interna y dominio y usuarios inexistentes externos, sin embargo, cuando el correo existe realmente no matchea de que el helo es diferente del remitente
    mi mail es [email protected]

  2. Firefox 59.0 Firefox 59.0 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0

    tengo estos errores alguna idea
    opendkim-genkey -b 2048 -d domain.com -s mail opendkim-genkey: openssl exited with status %d

  3. Google Chrome 63.0.3239.132 Google Chrome 63.0.3239.132 Windows 7 x64 Edition Windows 7 x64 Edition
    Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36

    I have been surfing online more than 7 hours today
    #SYSAdmin – #Servidor de #correo #Postfix con #DKIM y #SPF , yet I never found any
    interesting article like yours. It’s pretty worth enough for me.
    In my view, if all webmasters and bloggers made good content as you did,
    the web will be a lot more useful than ever before.

    • Firefox 52.0 Firefox 52.0 GNU/Linux x64 GNU/Linux x64
      Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0

      That´s the main problem with the internet these days, a lot of info, but poorly documented or badly executed. We try not to fall on that terms… We test all we write here, thousands of times… 😀

  4. Google Chrome 65.0.3325.181 Google Chrome 65.0.3325.181 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36

    Estimados compañeros, es posible utilizar alguna herramienta como cbpolicyd para rechazar ataques de SPAM al Zimbra.

  5. Unknown Unknown Unknown Unknown

    hola,hace poco que descrubri este sitio y me encanto,esta buenisimo y trata buenos temas,aqui les traigo una duda a ver si me pueden ayudar, yo estoy configurando un servidor de correo con postfix y dovecot en debian7, ya lo tengo configurado completamente el unico problema que tengo es que mediante una coneccion via telnet por el puerto 25 y luego con el comando mail puedo mandar un correo sin problemas y sin la debiada autenticacion… como puedo eliminar ese problema???saludos de antemano

  6. Unknown Unknown Unknown Unknown

    a mi me parece perfecto, yo cree los regisros SPF , configure postfix para chequear, aun tego dudas, por ejemplo tengo claro que ya con mi registro SPF nadie me puede suplantar mi dominio o mi ideintidad, pero por ejemplo otras personas si podrian suplantar la ideintidad de un dominio que no tenga creado correctamente el registro SPF o inventar un dominio y enviarme mensajes, no me queda claro el chequeo del helo ehlo necesito ayuda, he intentado probar y si me he mandando mensajes de dominios que existen y no pasa nada

  7. Unknown Unknown Unknown Unknown

    A primera lectura me parece muy útil. Voy a seguirle bien los pasos para realizarlo en mi entorno,
    Aprovecho para reconocer el eficiente y desinteresado trabajo de divulgación que haces en pro de conocer más profundamente el software libre. Debieras recibir un premio, junto a otros promotores de GUTL por este esfuerzo

Responder a enrique Cancelar la respuesta

Tu dirección de correo electrónico no será publicada.


*