Configuración DKIM · 5 min read · Oct 14, 2025

Configurar DKIM (DomainKeys Identified Mail) Funcionando Con Postfix En CentOS Usando OpenDKIM

Configurar DKIM (DomainKeys Identified Mail) Funcionando Con Postfix En CentOS Usando OpenDKIM

Versión 1.0
Autor: Eladio Martinez < [email protected] >
http://twitter.com/mafecsllc

Este tutorial muestra cómo hacer que DKIM funcione en una caja CentOS que ejecuta Postfix usando OpenDKIM, también cubriré algunos consejos simples de solución de problemas y recomendaciones para futuras actualizaciones en su instalación de OpenDKIM.

1 Requisitos

Este tutorial asume que tiene una instalación completa y funcional de CentOS que ejecuta los siguientes servicios:

  • Postfix 2.3.3 o mejor actualmente funcionando.
  • Sendmail está desactivado.

2 Notas preliminares

Estoy ejecutando todos los pasos en este tutorial con privilegios de root, actualmente estoy ejecutando CentOS 6.3 con OpenDKIM versión 2.4.2 y estaré usando example.com como el dominio principal para este tutorial.

3 Descargar e instalar OpenDKIM

También necesitará instalar los paquetes de desarrollo de OpenSSL y Sendmail, porque contienen algunas “bibliotecas” que necesita para hacer funcionar OpenDKIM.

yum install sendmail-devel openssl-devel

Descargue OpenDKIM en el directorio /usr/local/src:

cd /usr/local/src
wget http://sourceforge.net/projects/opendkim/files/opendkim-2.4.2.tar.gz

Extraiga, configure, compile e instale OpenDKIM con:

tar zxvf opendkim-2.4.2.tar.gz
cd opendkim-2.4.2
./configure –sysconfdir=/etc –prefix=/usr/local –localstatedir=/var
make
make install

Tenga en cuenta que el comando ./configure incluye algunas banderas muy importantes, que se pasarán al script de inicio que se crea cuando se ejecuta el comando de configuración. La primera indica al sistema dónde se ubicará el archivo de configuración de OpenDKIM, la segunda establece el prefijo preferido para algunas otras ubicaciones de archivos importantes, y la última controla el directorio donde se almacenará el archivo PID para OpenDKIM.

4 Crear un nuevo usuario

Agregue un nuevo usuario para DKIM llamado opendkim con las siguientes opciones:

useradd -r -U -s /sbin/nologin opendkim

Este comando creará una nueva cuenta de sistema (-r) y grupo (-g) llamado opendkim y asignará acceso sin shell a este usuario (-s).

5 Crear directorios de trabajo

Cree algunos nuevos directorios para OpenDKIM y asígnele la propiedad y permisos adecuados con:

mkdir -p /etc/opendkim/keys
chown -R opendkim:opendkim /etc/opendkim
chmod -R go-wrx /etc/opendkim/keys

6 Copiar el script de inicio a /etc/init.d/

El paquete fuente de OpenDKIM incluye un directorio contrib que contiene un script de inicio personalizado para ser utilizado con todos los sistemas compatibles con RedHat, incluidos Fedora y CentOS. Puede copiarlo a su directorio /etc/init.d/ para facilitar el inicio, detención, reinicio y recarga de OpenDKIM:

cp /usr/local/src/opendkim-2.4.2/contrib/init/redhat/opendkim /etc/init.d/

Ahora establezca los permisos correctos para el script de inicio:

chmod 755 /etc/init.d/opendkim

7 Generar claves para firmar

Necesita generar una clave privada y una clave pública para cada uno de los dominios para los que desea firmar correos. La clave privada se almacena en su servidor, mientras que la clave pública se publica en los registros DNS de su dominio para que los servidores de correo receptores puedan verificar su correo firmado por DKIM.

Necesita decidir ahora cuál será el nombre de su selector. Un selector es una palabra clave única que se asocia con ambas claves (pública y privada), incluida en todas las firmas y publicada en sus registros DNS. Para simplificar, utilizo la palabra default como mi selector predeterminado. Siéntase libre de elegir algo diferente, pero si lo hace, deberá usarlo de manera consistente en toda su configuración. Además, aunque esto debería ser obvio, debe usar su dominio de correo en lugar de example.com en los siguientes pasos.

Cree sus claves:

mkdir /etc/opendkim/keys/example.com
/usr/local/bin/opendkim-genkey -D /etc/opendkim/keys/example.com/ -d example.com -s default
chown -R opendkim:opendkim /etc/opendkim/keys/example.com
mv /etc/opendkim/keys/example.com/default.private /etc/opendkim/keys/example.com/default

En este ejemplo, utilicé la opción -D (directorio), la opción -d (dominio) y las opciones -s (selector). Eso es todo lo que necesita para que esto funcione.

8 Editar archivos de configuración

Necesita crear o editar cuatro archivos:

  • 1 /etc/opendkim.conf –- Archivo de configuración principal de OpenDKIM
  • 2 /etc/opendkim/KeyTable –- una lista de claves disponibles para firmar
  • 3 /etc/opendkim/SigningTable – una lista de dominios y cuentas permitidas para firmar
  • 4 /etc/opendkim/TrustedHosts –- una lista de servidores a “confiar” al firmar o verificar

Cree el archivo /etc/opendkim.conf:

vi /etc/opendkim.conf

Asegúrese de que su archivo se vea así:

##
## opendkim.conf -- archivo de configuración para el filtro OpenDKIM
##
AutoRestart             Yes
AutoRestartRate         10/1h
Canonicalization        relaxed/simple
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
LogWhy                  Yes
Mode                    sv
PidFile                 /var/run/opendkim/opendkim.pid
SignatureAlgorithm      rsa-sha256
SigningTable            refile:/etc/opendkim/SigningTable
Socket                  inet:8891@localhost
Syslog                  Yes
SyslogSuccess           Yes
TemporaryDirectory      /var/tmp
UMask                   022
UserID                  opendkim:opendkim

Cree el archivo /etc/opendkim/KeyTable:

vi /etc/opendkim/KeyTable

Asegúrese de que su archivo se vea así:

default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default

El archivo KeyTable le dice a OpenDKIM dónde encontrar sus claves. Cada entrada en el archivo KeyTable es una sola línea para cada ubicación de clave (por ejemplo, todo el texto en el ejemplo anterior debe estar en una sola línea en su archivo). Si va a usar múltiples claves (para firmar correos para dominios virtuales con diferentes claves), deberá crear una línea separada en el archivo KeyTable para cada dominio.

Cree el archivo /etc/opendkim/SigningTable:

vi /etc/opendkim/SigningTable

Asegúrese de que su archivo se vea así:

*@example.com default._domainkey.example.com

El archivo SigningTable le dice a OpenDKIM cómo usar sus claves, como en qué remitentes deben usar qué selectores para sus firmas. En el ejemplo anterior, estoy diciendo que todos () los que envían correo desde el servidor “example.com” deben usar el selector llamado “default”. Es importante notar que el símbolo comodín solo funcionará si la opción SigningTable usa el prefijo refile: antes del nombre del archivo.

Cree el archivo /etc/opendkim/TrustedHosts:

vi /etc/opendkim/TrustedHosts

Asegúrese de que su archivo se vea así:

127.0.0.1
hostname1.example1.com
example1.com
hostname1.example2.com
example2.com

El archivo TrustedHosts le dice a OpenDKIM quién puede usar sus claves. Debido a que se hace referencia a esta lista en la directiva ExternalIgnoreList en su archivo de configuración, OpenDKIM ignorará esta lista de hosts al verificar el correo entrante y, dado que también se hace referencia a esta lista en la directiva InternalHosts, esta misma lista de hosts se considerará “interna”, y OpenDKIM firmará su correo saliente.

IMPORTANTE: Asegúrese de listar la dirección IP para localhost (127.0.0.1) en el archivo TrustedHosts o OpenDKIM no firmará el correo enviado desde este servidor. Si tiene múltiples servidores en la misma red que reenvían correo a través de este servidor y desea firmar su correo también, deben estar listados en el archivo TrustedHosts. Coloque cada entrada en su propia línea. Una entrada puede ser un nombre de host, un nombre de dominio (por ejemplo, “example.com”), una dirección IP, una dirección IPv6 (incluida una dirección IPv4 mapeada), o una especificación de IP en estilo CIDR (por ejemplo, “192.168.1.0/24?”).

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.