Configurar DKIM para prevenir el spoofing de correo electrónico, con opendkim, postfix y centos7

DKIM (DomainKeys Identified Mail) es un método para firmar correos electrónicos utilizando una clave pública-privada.

DKIM se utiliza al recibir el servidor de correo para identificar el correo electrónico, que son enviados por servidores de correo autorizados, minimizando la posibilidad de recibir correos electrónicos SPAM.

Con este tutorial voy a explicar como realiziar en centos7 con postfix y opendkim.

Instalamos el software necesario.

yum install postfix opendkim

Ahora creamos la pareja de claves DKIM (publica y privada) utilizando el comando opendkim-genkey proporcionada por el paquete dkim-milter, con el dominio y selector a utilizar.

mkdir -p /etc/opendkim/keys/barrabinbarrabash.es
cd /etc/opendkim/keys/barrabinbarrabash.es

opendkim-genkey -r --domain=barrabinbarrabash.es --selector=barrabinbarrabash

Ahora asignamos los permisos correctos a la pareja de claves.

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

Editamos el archivo de configuración /etc/opendkim.conf y agreguamos / actualizamos las siguientes lineas.

vim /etc/opendkim.conf
Mode     sv
Domain barrabinbarrabash.es
#KeyFile      /etc/opendkim/keys/default.private
KeyTable        /etc/opendkim/KeyTable
SigningTable   refile:/etc/opendkim/SigningTable
ExternalIgnoreList    refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts

Luego edite el archivo de configuración de listas de claves de dominio /etc/opendkim/KeyTable y agregamos el dominio y la clave privada creada.

vim /etc/opendkim/KeyTable

barrabinbarrabash._domainkey.barrabinbarrabash.es barrabinbarrabash.es:barrabinbarrabash:/etc/opendkim/keys/barrabinbarrabash.es/barrabinbarrabash.private

A continuación, editamos el archivo /etc/opendkim/SigningTable añadiendo el dominio a utilizar.

vim /etc/opendkim/SigningTable

*@barrabinbarrabash.es barrabinbarrabash._domainkey.barrabinbarrabash.es

Editamos el archivo /etc/opendkim/TrustedHosts y añadimos el dominio autorizado.

vim /etc/opendkim/TrustedHosts

barrabinbarrabash.es

Ahora edite el archivo de configuración POSTFIX /etc/postfix/main.cf, habilitando el opendkim.

vim /etc/postfix/main.cf

smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept

Para finalizar la configuración arrancamos el servicio opendkim y reiniciamos postfix.

service opendkim start
postfix restart

Por ultimo solo nos faltaria incluir la entrada de dominio con la clave publica para validar los correos firmados.

cat /etc/opendkim/keys/barrabinbarrabash.es/barrabinbarrabash.txt
 
barrabinbarrabash._domainkey       IN      TXT     ( "v=DKIM1; k=rsa; s=email; "
          "p=dEp+wJKP+VUbhc9GigmK34ZjrSqqdKjIEWr2q9QEBAQUAA4GNADCBiQKBgQCdTtV/L65Gqm/rvBz1d6CCp8A2515DvSVp1H1bZs4t050mMA0GCSqGSIbGNADCBic9GigmK34ZjrSqqdKjIEWrQKBgQCdTtEqM8FqndiFYOderzljMMMqBdEp+wJKP+VUbhc9GigmK34ZjrIAocOD6pKDAQAB" )  ; ----- DKIM key barrabinbarrabash for barrabinbarrabash.es

Como solucionar el error al usar yum: “There was a problem importing one of the Python modules required to run yum.”

Estaba yo intentendo instalar com yum mi amado vim y me salto ese terror: “There was a problem importing one of the Python modules required to run yum.”

[root@pruebas~]# yum install vim
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:

   No module named yum

Please install a package which provides this module, or
verify that the module is installed correctly.

It's possible that the above module doesn't match the
current version of Python, which is:
2.6

Total que me puse a investigar y se debia a que habia actualiza la version de python y no reconoce el modulo yum.

La solucion es bastante sencilla, buscamos con un whereis python las diferentes versiones de python instaladas.

[root@pruebas~]# whereis python
python: /usr/bin/python2.6 /usr/bin/python /usr/lib/python2.6  /usr/local/bin/python /usr/include/python2.6 /usr/share/man/man1/python.1.gz

Ahora sabiendo donde se encuentra la ruta del binario del python que necesitamos (en el ejemplo 2.6), bastara con indicarselo en el binario /usr/bin/yum .

vi /usr/bin/yum
#!/usr/bin/python2.6