OJO: por algún motivo con esto no alcanza: rspamd no está firmando con dkim… ¡¡REVISAR!!

Rspamd: módulos dkim y dkim_signing

Este módulo puede usarse tanto para firmar digitalmente los correos que salen como para verificar las firmas de los correos entrantes.

El módulo ARC hace uso de éste módulo también, así que si se desea filtrar y firmar con ARC, hay que habilitar DKIM.

DKIM signing

Creando la llave para DKIM

cd /var/lib/rspamd/dkim
rspamadm dkim_keygen -s uaiq15_dkim -d uaiq15.fq.edu.uy -k uaiq15.dkim.key >uaiq15.dkim.key.pub

donde:

  1. -s es el selector de la llave, puede ser cualquier texto, pero es lo que lo identifica en los registros del DNS
  2. -d define el dominio
  3. -k define el nombre del archivo donde se almacena la llave privada
  4. > redirige stdout al archivo con la llave pública

La llave pública no es requisito guardarla, pero es la que va en el DNS, por eso conviene guardarla también, y tiene el siguiente contenido:

uaiq15_dkim._domainkey IN TXT ( "v=DKIM1; k=rsa; "
	"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDX9G4t/yClPdlLbIXjwEZ9nMzOXn26HoepT+rlQDFLdam80agBrz6UIKUUbHkHuD1yDCdlMsasGq1RT4P1bXSvfuFtlLPb28URvfbLACIG0mTCd+6BWxO+Yc2Bnp9TZQxMJoAs+icsprMYmPKUQk2a4GrbiVQvxNnkJS5vb8pxfwIDAQAB" ) ;
OJO: cuando lo agreguemos al DNS, hay que tener cuidado si es necesario (o no) agregar el dominio completo. En este caso, como estamos agregando la llave a un subdominio de fq.edu.uy para usar como si fuese un dominio de email, conviene agregar el dominio completo (no olvidarse del punto al final) en el registro del DNS. También hay que unir las dos líneas en una, eliminando las comillas del medio.

Al transferir la llave pública para incluirlo como un registro TXT en el header del DNS (fq.hosts), teniendo en cuenta lo anterior, ésta queda así:

uaiq15_dkim._domainkey.uaiq15.fq.edu.uy. IN TXT ( "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDX9G4t/yClPdlLbIXjwEZ9nMzOXn26HoepT+rlQDFLdam80agBrz6UIKUUbHkHuD1yDCdlMsasGq1RT4P1bXSvfuFtlLPb28URvfbLACIG0mTCd+6BWxO+Yc2Bnp9TZQxMJoAs+icsprMYmPKUQk2a4GrbiVQvxNnkJS5vb8pxfwIDAQAB" ) ;

Configuración de dkim_signing en rspamd

Ahora que tenemos las llaves pública y privada generadas y actualizamos el header del DNS, tenemos que configurar rspamd para que empiece a usar esa llave privada.

Para eso vamos a /etc/rspamd/local.d y creamos el archivo dkim_signing.conf. Acá ponemos un ejemplo de lo que puede contener ese archivo. Prestar atención al domain, selector y path que le indican a rspamd qué dominio van a firmar, qué llave usar y cuál es el selector en el DNS.

use_domain = "auth";
allow_hdrfrom_mismatch = true;
allow_hdrfrom_mismatch_sign_networks = true;
domain {
    uaiq15.fq.edu.uy {
        selector = "uaiq15_dkim";
        path = "/var/lib/rspamd/dkim/uaiq15.dkim.key";
    }
}
sign_authenticated = true;
use_esld = true;
allow_username_mismatch = true;