**** DKIM **** .. include:: ../enlaces.inc.rst :term:`DKIM` es un complemento de seguridad a :term:`SPF`. Éste último consistía en especificar las IPs pero no evita la suplantación de IP. :term:`DKIM` consiste en que el servidor firma digitalmente los menajes salientes, y para que el sistema receptor los verifique, se publica la clave pública en una entrada DNS de texto. A continuación se procederá a realizar la siguiente configuración: 1. Generar una pareja de claves RSA en 2 ficheros específicos para su posterior uso con Exim. 2. Crear una entrada DNS-DKIM para publicar la clave pública. Generación de claves ==================== Actualmente claves RSA de 1024 bits son pocos, pero mi configuración es antigua y no he cambiado la clave desde que la generé, así que presento el ejemplo con 1024. El código mostrado genera las claves en el directorio :file:`/etc/exim4`: .. code:: shell cd /etc/exim4 openssl genrsa -out exim-dkim.key 1024 openssl rsa -in exim-dkim.key -out exim-dkim.pub -pubout -outform PEM El fichero :file:`exim-dkim.key` contiene la pareja de claves y mediante el segundo comando en el fichero :file:`exim-dkim.pub` se extrae la pública, cuyo contenido es el siguiente: .. code:: text -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYCiczqjaT/IH+c9W0vc2pk12z TaU7V3trRdDv52N3a9bHaPAQCunUHC9RudJurh1vdhWk5lBzqrvCcsZhrC9DodU3 JJcFLjWc8tU760+uoQv7d80IxrlvD25poPD7DMjjGWkIDVaCsw/sDOWoUcgjUv/W XQzdCCzmGfHm05SltQIDAQAB -----END PUBLIC KEY----- Entradas DNS ============ Las entradas DNS-DKIM son entradas de texto con una sintaxis donde hay que especificar determinados parámetros junto con la clave pública. Hay mucha literatura al respecto en la red, así solo voy a indicar mi configuración que sirve pare replicarla sin estudiarla en profundidad. Hay una diferencia con la entrada :term:`DKIM` frente a :term:`SPF` y es que lleva un doble prefijo: "selector" y :code:`_domainkey`. El "selector" se puede escoger como se desee, pero :code:`_domainkey` es obligatorio, así, en mi dominio *art-website.com* la entrada completa es: .. code:: text mail._domainkey.art-website.com En el ejemplo he escogido como selector :code:`mail`, de forma que si se realiza una consulta DNS con con el comando :command:`host` se obtendría lo siguiente: .. code:: shell host -t txt mail._domainkey.art-website.com mail._domainkey.art-website.com descriptive text "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCcwWh3vFwebU7z+tZt65LwDynBD0Y4JIh/kRRp14llfnwYg1xeSwV6+MEGq2JISts3X1tkqtBWGSEItFdOgRkRE+caMqROKAm6fDU3VZ5yY3oiSbAgAI7JsX/ALz/T2KrzorUED0CT1bfwLtS6mFWuTc/2HLbtQ73hY5l5L2YweQIDAQAB" .. admonition:: Nota Por simplicidad en mi configuración, usaré el mismo selector (:code:`mail`) en todos los dominios secundarios, añadiendo y usando la misma clave pública, en la entrada DNS-DKIM de cada dominio adicional. En la salida del comando anterior apareció la entrada DNS de texto correspondiente a mi configuración. Añadir la entrada desde el panel de control de un proveedor puede dar problemas, he visto muchos proveedores con paneles de control y formularios muy diferentes y hay que ser cuidadoso. La entrada es la mostrada a continuación, donde hay que pegar la clave pública en \*\*\*. La clave debe estar en una sola línea, hay que eliminar los saltos de línea quedando una linea muy larga: .. code:: text v=DKIM1; k=rsa; p=*** Es recomendable probar que la entrada es correcta usando alguna herramienta de la red como DKIMCore_. .. warning:: Si se tiene IPv6, con Google es obligatorio tener DKIM configurado, de lo contrario los correos salientes SMTP no serán entregados.