Clicky

Instalar DomainKeys Identified Mail (DKIM)

DKIM

Habilitar DKIM en Virtualmin

DomainKeys Identified Mail o DKIM es un estándar para la firma de mensajes de correo electrónico para que el destinatario pueda verificar la dirección de correo electrónico del remitente. Esto permite que los servidores de correo del destinatario detecten la falsificación de la dirección del remitente, que a menudo es utilizada por los spammers para evitar las listas negras de dominio del remitente.

La firma se realiza con una clave privada en el servidor de remitente, que coincide con una clave pública añadida en el dominio DNS del remitente. El receptor puede buscar esta clave del dominio en la dirección From (Desde), y utilizarla para asegurarse de que la firma de correo electrónico se ha creado usando la clave privada correspondiente, lo que demuestra que el mensaje fue enviado realmente a partir de ese dominio.

Virtualmin utiliza un milter para implementar la firma y verificación DKIM. Se trata de proceso en segundo plano que envía los mensajes para su modificación al servidor de correo electrónico Postfix o Sendmail antes de ser enviados a su destino final. Cualquier correo electrónico transmitido a través del sistema Virtualmin (ya sea a partir de una lectura de correo basada en web o un cliente como Outlook o Thunderbird) tendrá una firma añadida por la milter DKIM, siempre y cuando se trate de un dominio para el que esté habilitado DKIM.

Instalación de paquetes DKIM

mensajes emailVirtualmin es compatible con la configuración de DKIM en Debian, Ubuntu, Fedora, CentOS y sistemas RedHat Enterprise, ya que estas distribuciones proporcionan el paquete necesario milter DKIM. La forma más sencilla de instalar este es la siguiente:

Inicia sesión en Virtualmin como root y ve a Email Messages -> *DomainKeys Identified Mail**.

Suponiendo que los paquetes necesarios no estén instalados ya, Virtualmin mostrará un mensaje de error sobre que falta el archivo de configuración DKIM. Haz clic en el botón Install Now para que sea descargado e instalado el paquete apropiado.

La instalación también se puede hacer desde la línea de comandos. En Debian o Ubuntu, el comando es:

# apt-get install dkim-filter

Mientras que en CentOS, Fedora o Red Hat Enterprise se tendrá que ejecutar:

# yum install-dkim milter

Habilitar DKIM en Virtualmin

Para habilitar la firma DKIM en los mensajes de correo electrónico salientes, sigue estos pasos:

1. Inicia sesión en Virtualmin como root y ve a Email Messages -> DomainKeys Identified Mail

2. Cambia Signing of outgoing mail enabled? a Yes.

habilitar DKIM en Virtualmin

3. En el campo Selector for DKIM record name introduce un nombre corto que se utilizará para identificar la clave de firma. Esto por lo general sólo es poner el año en curso, al igual que 2016. No dejar por default, ya que esto puede provocar un error en la versión actual de Virtualmin que suprime el directorio /etc/default

4. Haz clic en el botón Save. Obtendrás esta salida:

DKIM virtualmin salida

Suponiendo que todo va bien, Virtualmin informará de las medidas adoptadas para configurar y activar DKIM.

Mail Client Configuration

Puede que se te de un error parecido a este:

Starting DKIM filter ..
.. start failed : Starting dkim-milter (via systemctl): Job for dkim-milter.service failed because the control process exited with error code. See "systemctl status dkim-milter.service" and "journalctl -xe" for details. [FAILED]

DKIM setup failed!

Ver la solución al final del artículo.

Sólo los servidores virtuales que tienen habilitadas funcionalidades tanto de DNS como de correo electrónico tendrán DKIM activado, ya que el servidor de correo tiene que ser configurado para utilizar una clave de firma privada cuya clave pública correspondiente se añade al DNS.

De forma predeterminada, Virtualmin también configurará el milter DKIM para verificar el correo electrónico entrante que tiene las firmas apropiadas. Mensajes firmados DKIM, donde la firma es incorrecta o no se puede comprobar con una búsqueda de DNS, serán devueltos o retrasados. Si deseas desactivar la comprobación, ajusta la opción Verify DKIM signatures on incoming email? en No.

Para desactivar la firma DKIM por completo, simplemente hacer lo siguiente:

1. Inicia sesión en Virtualmin como root y ve a Email Messages -> DomainKeys Identified Mail
2. Cambia Signing of outgoing mail enabled? a No.
3. Haz clic en Save.

Esto eliminará la clave pública de todos los dominios, y detendrá en el servidor de correo la firma de mensajes con el milter DKIM.

Error: Sendmail DKIM Filter: Unable to bind to port inet:8891@localhost: Address already in use

Hace falta habilitar y ejecutar el servicio dkim-milter así:

# systemctl enable dkim-milter.service
# systemctl start dkim-milter.service

Puede darnos otro error:

# systemctl status dkim-milter.service
● dkim-milter.service - SYSV: DomainKeys Identified Mail Milter
Loaded: loaded (/etc/rc.d/init.d/dkim-milter)
Active: failed (Result: exit-code) since Mon 2016-05-02 21:32:52 CEST; 31s ago
Docs: man:systemd-sysv-generator(8)
Process: 27035 ExecStart=/etc/rc.d/init.d/dkim-milter start (code=exited, status=1/FAILURE)

May 02 21:32:52 ns300398.ip-91-121-31.eu runuser[27036]: pam_unix(runuser:session): session opened for user dkim-milt...d=0)

May 02 21:32:52 ns300398.ip-91-121-31.eu dkim-filter[27038]: Sendmail DKIM Filter: Unable to bind to port inet:8891@l... use
May 02 21:32:52 ns300398.ip-91-121-31.eu dkim-filter[27038]: Sendmail DKIM Filter: Unable to create listening socket ...host
May 02 21:32:52 ns300398.ip-91-121-31.eu dkim-milter[27035]: Starting DomainKeys Identified Mail Milter (dkim-filter)...iled
May 02 21:32:52 ns300398.ip-91-121-31.eu runuser[27036]: pam_unix(runuser:session): session closed for user dkim-milter
May 02 21:32:52 ns300398.ip-91-121-31.eu dkim-milter[27035]: [FAILED]
May 02 21:32:52 ns300398.ip-91-121-31.eu systemd[1]: dkim-milter.service: control process exited, code=exited status=1
May 02 21:32:52 ns300398.ip-91-121-31.eu systemd[1]: Failed to start SYSV: DomainKeys Identified Mail Milter.
May 02 21:32:52 ns300398.ip-91-121-31.eu systemd[1]: Unit dkim-milter.service entered failed state.
May 02 21:32:52 ns300398.ip-91-121-31.eu systemd[1]: dkim-milter.service failed.
Hint: Some lines were ellipsized, use -l to show in full.

Parece que hay un antiguo porceso zombie de dkim, ejecutamos:

# netstat -nlp | grep 8891

tcp 0 0 127.0.0.1:8891 0.0.0.0:* LISTEN 18400/opendkim

Paramos dkim-milter.service

# systemctl stop dkim-milter.service

Matamos el proceso:

# kill 18400

Y corremos de nuevo dkim:

# systemctl start dkim-milter.service

Miramos de nuevo el estado:

# systemctl status dkim-milter.service

● dkim-milter.service - SYSV: DomainKeys Identified Mail Milter
Loaded: loaded (/etc/rc.d/init.d/dkim-milter)
Active: active (running) since Mon 2016-05-02 21:49:44 CEST; 53s ago
Docs: man:systemd-sysv-generator(8)
Process: 29846 ExecStart=/etc/rc.d/init.d/dkim-milter start (code=exited, status=0/SUCCESS)
Main PID: 29850 (dkim-filter)
CGroup: /system.slice/dkim-milter.service
└─29850 /usr/sbin/dkim-filter -x /etc/mail/dkim-milter/dkim-filter.conf -P /var/run/dkim-milter/dkim-milter.pid -p inet:8891@localhost ...

May 02 21:49:44 ns300398.ip-91-121-31.eu systemd[1]: Starting SYSV: DomainKeys Identified Mail Milter...
May 02 21:49:44 ns300398.ip-91-121-31.eu runuser[29847]: pam_unix(runuser:session): session opened for user dkim-milter by (uid=0)
May 02 21:49:44 ns300398.ip-91-121-31.eu runuser[29847]: pam_unix(runuser:session): session closed for user dkim-milter
May 02 21:49:44 ns300398.ip-91-121-31.eu dkim-milter[29846]: Starting DomainKeys Identified Mail Milter (dkim-filter): [ OK ]
May 02 21:49:44 ns300398.ip-91-121-31.eu dkim-filter[29850]: Sendmail DKIM Filter v2.8.3 starting (args: -x /etc/mail/dkim-milter/dkim-filte...-b sv)
May 02 21:49:44 ns300398.ip-91-121-31.eu systemd[1]: Started SYSV: DomainKeys Identified Mail Milter.

Y ahora tenemos el servicio dkim arriba.

Reiniciamos el servidor de correo para aplicar los cambios (en nuestro caso Postfix):

# systemctl restart postfix.service

Jesus_Caceres