openDKIM y Postfix en Ubuntu Server 12.04LTS
Intentaré volver y formatear esto mejor. Pero como había una solicitud para publicar mi respuesta, quería publicarla ahora en lugar de esperar hasta que tuviera tiempo de formatearla correctamente. Debido a la falta de tiempo, envolví toda mi respuesta en una cita en bloque. Espero que esta solución sea útil.
Estas son mis referencias:
y Wikipedia tiene una buena entrada sobre el tema
Como mínimo, necesitará:
- Acceso raíz a su servidor de correo
- Acceso para actualizar los registros dns de tu dominio
Instale opendkim desde los repositorios:
# sudo apt-get install opendkim opendkim-tools
Debe decidir qué "selector" desea utilizar. El selector es esencialmente una palabra para describir la clave que desea utilizar. Aquí voy a usar el selector 201205 cuando la clave se hizo válida en mayo de 2012 (¿astucia, eh?). Doy dos ejemplos de variedad, que con suerte agregarán claridad. Solo necesita generar UNA clave. Sin embargo, estoy dando ambos ejemplos para que pueda compararlos.
- 201205 (primera tecla)
- my_selector (segunda tecla)
Mi dominio será example.com
, pero usaré un subdominio para mi segundo ejemplo:
- example.com (primera clave)
- mail.example.com (2da clave)
Decidí trabajar en el siguiente directorio:
# mkdir /etc/opendkim/
# cd /etc/opendkim
Genere las claves en el directorio actual, utilizando su selector y dominio elegidos.
# opendkim-genkey -s 201205 -d example.com
Puede que necesite o no cambiar de propietario. Vea los detalles en mi ejemplo para la segunda clave a continuación para saber qué propiedad y permisos deberían ser.
Primero debe verificar si hay un opendkim
usuario (sus ID de usuario / grupo pueden ser diferentes):
# grep opendkim /etc/passwd
opendkim:x:108:117::/var/run/opendkim:/bin/false
Y probablemente necesites hacer esto:
# chmod 700 /var/run/opendkim
NOTA: Estos dos comandos siguientes NO son necesarios en Ubuntu 12.04. Pero si el comando anterior no muestra que el usuario opendkim se configuró correctamente, hágalo de manera similar a esto:
# useradd -r -g opendkim -G mail -s /sbin/nologin -d /var/run/opendkim -c "OpenDKIM" opendkim
# chown opendkim:opendkim 201205.private
# cat 201205.private
-----BEGIN RSA PRIVATE KEY-----
ABCCXQ...[long string]...SdQaZw9
-----END RSA PRIVATE KEY-----
¡Ahora verifique la clave pública y observe que hay un error (en openDKIM 2.5.2 en Ubuntu 12.04)! Donde está contiene, ;=rsa;
debería contener ;k=rsa;
. La k
falta. Por favor insértelo.
# cat 201205.txt
201205._domainkey IN TXT "v=DKIM1;=rsa; p=WIGfM..[snip]..QIDIAB" ; ----- DKIM 201205 for example.com
Después de ser reparado, se verá así:
201205._domainkey IN TXT "v=DKIM1;k=rsa; p=WIGfM..[snip]..QIDIAB" ; ----- DKIM 201205 for example.com
Además, probablemente necesites escapar de los puntos y comas como este. Si no desea el comentario final, simplemente bórrelo. También tenga en cuenta que debe agregar el indicador t = y para indicar a los servidores receptores que está probando DKIM pero que aún no lo está utilizando activamente. Te queda un registro de recursos viable:
201205._domainkey IN TXT "v=DKIM1\;k=rsa\;t=y\;p=WIGfM..[snip]..QIDIAB"
Debe publicar el contenido de la clave pública anterior en su servidor DNS autorizado. Recomiendo usar un registro TXT. Parece haber un poco de controversia sobre si usar un registro SPF o ambos tipos. Después de leer un poco, elegí seguir con el tipo de registro TXT exclusivamente, aunque no creo que esta sea la última palabra sobre este tema.
Debe usar un TTL corto (tiempo de vida) para que pueda cambiar la clave sin esperar años para que se propague a través de DNS. Usé 180 segundos.
El segundo ejemplo de generar un par de claves fue un poco más complicado para mí. Describiré lo que hice. El primer elemento es que usé el valor de dominio "ejemplo.com" aunque la clave se usará para "mail.example.com". Llegué a esto por prueba y error. Funciona, mientras que usar "mail.example.com" no funcionó. Desafortunadamente, no estoy al tanto de las razones detrás de esto. Esta es realmente la única diferencia que encontré, pero fue lo suficientemente problemático como para sentir que debería documentar mis experiencias con el uso de subdominios. Ninguno de los otros tutoriales de nivel inicial que encontré hizo esto. Genere una segunda clave:
opendkim-genkey -s my_selector -d example.com
verifique la propiedad y los permisos de la clave privada, como se indicó anteriormente. Así es como deberían verse:
# ls -la /etc/opendkim
-rw------- 1 opendkim opendkim 891 May 10 07:44 my_selector.private
Después de publicar el registro DNS, verifíquelo con dig
. Debería devolver exactamente lo que ingresó en el registro de recursos (RR).
$ dig 201205._domainkey.example.com txt +short
"v=DKIM1\;k=rsa\;t=y\;p=WIGfM..[snip]..QIDIAB"
Ahora, prueba la llave. Los siguientes comandos suponen que está en el directorio donde reside la clave (/ etc / opendkim para mí).
# opendkim-testkey -d example.com -s 201205 -k 201205.private -vvv
opendkim-testkey: key loaded from /etc/opendkim/201205.private
opendkim-testkey: checking key '201205._domainkey.example.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK
Se esperan estos resultados. La "clave no segura" no indica un error. Es una consecuencia esperada de no usar DNSSSEC. DNSSEC está llegando, pero aún no está listo para el horario estelar, según mi lectura.
Ejemplo con 2da clave:
# opendkim-testkey -d example.com -s my_selector -k /etc/opendkim/my_selector.private -vvvv
opendkim-testkey: key loaded from /etc/opendkim/my_selector.private
opendkim-testkey: checking key 'my_selector._domainkey.example.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK
Tenga en cuenta que opendkim informa que la clave no es segura. Esto se relaciona con el hecho de que DNSSEC no está implementado en mi servidor DNS y, en teoría, alguien podría interceptar la búsqueda de DNS y reemplazarla con su propia clave.
Edite el archivo de configuración de OpenDKIM:
# nano /etc/opendkim.conf
# cat /etc/opendkim.conf
# This is a basic configuration that can easily be adapted to suit a standard
# installation. For more advanced options, see opendkim.conf(5) and/or
# /usr/share/doc/opendkim/examples/opendkim.conf.sample.
#
Domain example.com
KeyFile /etc/opendkim/201205.private
Selector 201205
#
# Commonly-used options
Canonicalization relaxed/simple
Mode sv
SubDomains yes
# Log to syslog
Syslog yes
LogWhy yes
# Required to use local socket with MTAs that access the socket as a non-
# privileged user (e.g. Postfix)
UMask 022
UserID opendkim:opendkim
#
KeyTable /etc/opendkim/KeyTable
SigningTable /etc/opendkim/SigningTable
ExternalIgnoreList /etc/opendkim/TrustedHosts
InternalHosts /etc/opendkim/TrustedHosts
#
Socket inet:8891@localhost
#EOF
Si está utilizando mi segundo ejemplo clave, con el dominio de destino "mail.example.com", la entrada todavía solo haría referencia al dominio principal:
Domain example.com
KeyFile /etc/dkim/my_selector.private
Selector my_selector
-----
Nota de una de mis fuentes: si ejecuta varias instancias de Postfix, debe agregar esto a opendkim.conf para cada instancia (o las que desea usar opendkim)
Crea un archivo con tu editor de texto /etc/opendkim/TrustedHosts
:
Agregue dominios, nombres de host y / o ip que deben ser manejados por OpenDKIM. No olvides localhost.
127.0.0.1
localhost
example.com
mail.example.com
192.168.1.100 #(IP address of your server, if applicable)
(la última línea de arriba probablemente no sea necesaria. Si tiene una dirección IP para agregar, asegúrese de usar la suya, no el ejemplo anterior).
Editar /etc/default/opendkim
:
Descomente esta fila y use el puerto 8891:
SOCKET="inet:8891@localhost" # listen on loopback on port
Asegúrese de que su firewall (iptables) permita el loopback en localhost:
sudo iptables -A INPUT -i lo -j ACCEPT
A continuación, cree un archivo con su editor de texto /etc/opendkim/KeyTable
y agregue el dominio a la tabla de claves
Añadir línea:
#EXAMPLE showing my 2nd key:
my_selector._domainkey.example.com example.com:my_selector:/etc/opendkim/my_selector.private
Siguiente Cree un archivo con su editor de texto /etc/opendkim/SigningTable
y agregue el dominio a SigningTable
Muestro ambos ejemplos. Tenga en cuenta que para mi segunda clave, ahora tengo que usar el nombre de dominio completo "mail.example.com":
example.com 201205._domainkey.example.com
mail.example.com my_selector._domainkey.example.com
Tenga en cuenta que en OpenDKIM 2.0.1 los nombres de dominio distinguen entre mayúsculas y minúsculas. En este ejemplo, estamos usando una versión más nueva de OpenDKIM y esto no parece ser un problema.
Configurar postfix. Edite /etc/postfix/main.cf y agregue las líneas al final
milter_default_action = accept
milter_protocol = 2
smtpd_milters=inet:localhost:8891
non_smtpd_milters=inet:localhost:8891
También cambie el nombre de host:
#myhostname = localhost #original
myhostname = mail.example.com
También debe cambiar la entrada correspondiente en / etc / hosts. Estos cambios son efectivos después de un reinicio (aunque puede configurarlo inmediatamente con el comando:) hostname NEW_NAME
.
Reinicie postfix y opendkim si no reinició:
# service opendkim restart
Restarting OpenDKIM: opendkim.
# service postfix restart
* Stopping Postfix Mail Transport Agent postfix [ OK ]
* Starting Postfix Mail Transport Agent postfix [ OK ]
Pruebas
La mejor manera de verificar que su correo firmado se esté autenticando y que sus registros DNS estén configurados correctamente es usar uno de los servicios de prueba gratuitos. Usé estos:
Cada uno de estos le dirá si las cosas funcionan correctamente y le dará algunos consejos sobre la solución de problemas si es necesario.
Si tiene una cuenta de Gmail, también puede enviar un mensaje firmado allí para una prueba rápida y fácil.
Una vez que esté satisfecho de que todo esté bien, puede eliminar el indicador de prueba en el registro TXT de DNS y aumentar TTL.
¡Hecho!
Esta es una buena guía.
Explica que opendkim es realmente recomendable y que los pasos para implementar su firma dkim son los mismos que con dkim-filter.
BTW Domainkeys es el predecesor en desuso de DKIM. Agregue registros TXT a su zona DNS para SPF y DKIM, pero ya no es necesario molestarse con Domainkeys.
fuente
http://wiki.zimbra.com/wiki/Configuring_for_DKIM_Signing
Siempre me aseguro de cruzar algunas guías sobre cualquier cosa. Este tut en la configuración funciona, lo acabo de verificar y valida este. Pero, es posible que desee mostrar un TXT de ejemplo para que se detalle el registro de dominio. La gente puede confundirse y poner explícitamente todo lo de la clave en el valor p, lo cual no estoy completamente seguro de que sea correcto. es decir ... incluyendo ----- BEGIN PUBLIC KEY ----- y ----- END PUBLIC KEY -----. Eso puede llevar a algunos a confundirse. Solo asegúrese de poner solo la parte de cifrado y no los marcadores.
fuente