Instalar el rpm de opendkim en Fedora 13

27 abril 2013 at 18:58 by Adrián Pérez

Spam dkimDKIM (DomainKeys Identified Mail) es un mecanismo de autentificación para luchar contra el spam, que consiste en (y aquí prácticamente copio de la wikipedia) añadir una cabecera llamada "DKIM-Signature"que contendrá una firma digital tanto de la cabecera como del cuerpo del mensaje. El destinatario, hará una consulta DNS usando el dominio origen y un selector, contra un registro DNS del tipo TXT del estilo selector._domainkey.dominio.com que contendrá la clave pública necesaria para descifrar el valor de la firma de la cabecera y verificar así su procedencia.

Aquí explican mejor qué es y cómo funciona DKIM, pero en esta ocasión, lo que veremos no es explicar cómo funciona, si no cómo usar nuestro servidor de correo (postfix sobre un antiguo Fedora 13) para firmar nuestros mails mediante opendkim, instalando el rpm oficial en lugar de instalarlo mediante yum. Instalar el rpm seguramente tenga más trabajo que hacerlo desde yum, pero el proceso servirá en cualquier distribución basada en Red Hat.

Descarga e instalación

El problema de opendkim, es que no viene en los repositorios de Fedora 13. Según esta web, sólo viene en los repositorios a partir de Fedora 14 y en los repositorios EPEL. En cualquier caso, podemos descargar la versión deseada de la web oficial. En el ejemplo, usaremos la versión 2.7.3, que sabemos que funciona sin problemas con Fedora 13.

[root@server]# wget http://sourceforge.net/projects/opendkim/files/Previous%20Releases/opendkim-2.7.3.tar.gz/download
[root@server]# tar -zxvf opendkim-2.7.3.tar.gz
[root@server]# cd opendkim-2.7.3

Requisitos

Antes de realizar el configure y el make, instalaremos algunos requisitos que sabemos que necesitaremos. Es posible que necesitemos otros paquetes adicionales, o que algunos de los siguientes ya los tengamos instalados. Ésto lo sabremos al ejecutar el "configure", que sólo funcionará si tiene todos los requisitos. En caso contrario, se parará en el punto en el que no encuentra un determinado requisito.

[root@server]# yum install libssh.x86_64 openssl-devel.x86_64 sendmail-devel.x86_64

Instalación

Bastará con ejecutar la típicas sentencias:

[root@server]# ./configure
[root@server]# make
[root@server]# make install

Si todo va bien, podremos verificar la ruta de instalación de opendkim:

[root@server]# whereis opendkim
opendkim: /usr/local/sbin/opendkim

Configuración de opendkim

Un primer paso a dar, podría ser configurar opendkim para que se ejecute al inicio. Para ello, bastará con añadir la siguiente línea al final del fichero rc.local:

[root@server]#vi /etc/rc.local
# Opendkim
/usr/local/sbin/opendkim -x /etc/opendkim.cnf

En la línea anterior, se ha definido la ruta del fichero de configuración de opendkim. Lo siguiente que haremos será crear y completar este fichero, por ejemplo, tal y como sigue:

[root@server]# vi /etc/opendkim.cnf
PidFile /var/run/opendkim/opendkim.pid
Mode    s
Syslog no
SyslogSuccess   no
LogWhy  no
UserID  opendkim:opendkim
Socket  inet:8891@localhost
Umask   002
Canonicalization        simple/simple

KeyTable /etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
InternalHosts refile:/etc/opendkim/TrustedHosts

SyslogFacility news
SenderHeaders Sender,From

En el archivo de configuración hemos indicado que opendkim lo ejecutará un usuario con mismo nombre y grupo. Si no existen, como es mi caso, podemos crearlo (sin shell):

[root@server]# useradd opendkim -s /sbin/nologin

También se ha definido una carpeta donde se definirán los ficheros con las claves y los dominios que firmar, que deberemos crear:

[root@server]# mkdir /etc/opendkim
[root@server]# chown root:opendkim /etc/opendkim
[root@server]# cd /etc/opendkim

Dentro del directorio recién creado, crearemos los ficheros de Key, Signing y Hosts, así como un directorio "keys" donde almacenaremos los ficheros con las claves privadas:

[root@server]# touch KeyTable
[root@server]# touch SigningTable
[root@server]# touch TrustedHosts
[root@server]# mkdir keys
[root@server]# chown opendkim:opendkim *

KeyTable

En KeyTable, especificaremos dónde están las claves para firmar los mensajes.  En este fichero, cada línea contendrá una definición, y cada línea, además, deberá seguir siempre el mismo formato, tal y como sigue:

identificador dominio.com:selector:path_to_key

Así, se introducirá un identificador (para referirnos a esa entrada cuando queramos usarla), después se indicará el dominio y el selector para poder encontrar la clave pública en el registro DNS (que se especificará en un registro DNS del tipo TXT así: selector._domainkey.midominio.com) y finalmente la ubicación de la clave privada, que en nuestro caso guardaremos dentro del directorio "keys" (/etc/opendkim/keys/midominio.com.pem).

#default._domainkey.example.com example.com:default:/etc/opendkim/keys/default.private
id.midominio.com midominio.com:default:/etc/opendkim/keys/midominio.com.pem

Es importante recordar que las claves privadas que dejaremos dentro de "keys", han de tener los permisos correctos, pues en caso contrario no funcionará. Se pueden configurar todas las claves con usuario opendkim:opendkim y permisos 600.

También es importante recalcar que necesariamente ha de haber una definición por línea. Una definición no puede estar partida en varias líneas porqué no funcionará.

SigningTable

El fichero SigningTable contendrá las direcciones de correo que se deberán firmar. Básicamente, se definen los dominios origen que se deberán firmar, y la entrada en KeyTable con la que se firmará. Por ejemplo, firmaremos todos los mails que se envíen desde una dirección @midominio.com, usando la clave especificada en la entrada KeyTable para "id.midominio.com":

*@midominio.com id.midominio.com

TrustedHosts

Seguramente el fichero más fácil de entender. Aquí, únicamente definiremos un listado de las redes o hosts desde las que aceptaremos firmar.

127.0.0.1
80.81.82.83/24

Integración con postfix

En el fichero de configuración del opendkim, se ha definido el socket de escucha para firmar los mensajes. En nuestro ejemplo, el socket era "inet:8891@localhost". Deberemos, pues, indicarle al posftix, que use ese socket para firmar. Ésto lo haremos añadiendo al final del fichero de configuración de posftix (main.cf) la siguiente línea:

smtpd_milters = inet:127.0.0.1:8891

Será necesario reiniciar para aplicar los cambios.

Iniciar opendkim

Tal y como hemos visto, opendkim se iniciará durante el proceso de boot de la máquina, a través del comando introducido en el rc.local. Sin embargo, la primera vez, deberemos ejecutarlo a mano:

[root@server]#  /usr/local/sbin/opendkim -x /etc/opendkim.cnf

Con ésto ya debería ser suficiente para empezar a enviar mails usando opendkim, aunque va bien saber que junto a opendkim, se instalarán un seguido de utilidades extra que nos pueden venir bien para testear y ayudarnos a administrar el opendkim, como son:

opendkim-genkey    opendkim-genzone   opendkim-testadsp  opendkim-testkey   opendkim-testmsg

 

Fuentes:

https://support.eapps.com/index.php?/Knowledgebase/Article/View/455/54/user-guide---opendkim-domain-keys

http://www.opendkim.org/opendkim-README

Flickr!Foto por epSos.de