{"id":1265,"date":"2016-04-28T09:28:16","date_gmt":"2016-04-28T07:28:16","guid":{"rendered":"https:\/\/elkano.org\/blog\/?p=1265"},"modified":"2016-04-28T09:38:39","modified_gmt":"2016-04-28T07:38:39","slug":"configurando-dkim-con-postfix","status":"publish","type":"post","link":"https:\/\/elkano.org\/blog\/configurando-dkim-con-postfix\/","title":{"rendered":"Configurando DKIM  con Postfix"},"content":{"rendered":"<p>DKIM es un standard de internet que permite relacionar un mensaje de correo con un nombre de dominio, utiliza un cifrado de clave asim\u00e9trica para poder validar un mensaje de correo con su emisor. El MTA del emisor firma los mensajes de correo con la clave privada y el receptor puede validar a partir de la clave p\u00fablica obtenida del dominio del emisor que las cabeceras del mensaje no han sido alteradas.<\/p>\n<p>Instalar OpenDKIM y sus dependencias:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"enlighter\" data-enlighter-language=\"xml\">\r\nsudo apt-get install opendkim opendkim-tools\r\n<\/pre>\n<p>Editar el fichero <strong>\/etc\/opendkim.conf<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"enlighter\" data-enlighter-language=\"xml\">\r\nAutoRestart             Yes\r\nAutoRestartRate         10\/1h\r\nUMask                   002\r\nSyslog                  yes\r\nSyslogSuccess           Yes\r\nLogWhy                  Yes\r\n\r\nCanonicalization        relaxed\/simple\r\n\r\nExternalIgnoreList      refile:\/etc\/opendkim\/TrustedHosts\r\nInternalHosts           refile:\/etc\/opendkim\/TrustedHosts\r\nKeyTable                refile:\/etc\/opendkim\/KeyTable\r\nSigningTable            refile:\/etc\/opendkim\/SigningTable\r\n\r\nMode                    sv\r\nPidFile                 \/var\/run\/opendkim\/opendkim.pid\r\nSignatureAlgorithm      rsa-sha256\r\n\r\nUserID                  opendkim:opendkim\r\n\r\nSocket                  inet:12301@localhost\r\n<\/pre>\n<p>Esto es un ejemplo de configuraci\u00f3n que permite firmar mensajes para varios dominios, para ver con mayor detalle la configuraci\u00f3n puedes ir <a href=\"http:\/\/www.opendkim.org\/opendkim.conf.5.htmlhttp:\/\/www.opendkim.org\/opendkim.conf.5.html\">aqu\u00ed<\/a><\/p>\n<p>Conectar el filtro milter con Postfix<\/p>\n<p>editar el fichero <strong>\/etc\/default\/opendkim<\/strong> y a\u00f1adir la siguiente l\u00ednea:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"enlighter\" data-enlighter-language=\"xml\">\r\nSOCKET=&quot;inet:12301@localhost&quot;\r\n<\/pre>\n<p>Editar el fichero <strong>\/etc\/postfix\/main.cf<\/strong> de postfix y asegurarse de que estas opciones existen:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"enlighter\" data-enlighter-language=\"xml\">\r\nmilter_protocol = 2\r\nmilter_default_action = accept\r\n<\/pre>\n<p>Si no tienes m\u00e1s filtros milter configurados a\u00f1adir las siguientes l\u00edneas:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"enlighter\" data-enlighter-language=\"xml\">\r\nsmtpd_milters = inet:localhost:12301\r\nnon_smtpd_milters = inet:localhost:12301\r\n<\/pre>\n<p>Crear la estructura de directorios para albergar las claves y los ficheros de configuraci\u00f3n de OpenDKIM:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"enlighter\" data-enlighter-language=\"xml\">\r\nsudo mkdir -p \/etc\/opendkim\/keys\r\n<\/pre>\n<p>Especificar el fichero de servidores de confianza:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"enlighter\" data-enlighter-language=\"xml\">\r\nvim \/etc\/opendkim\/TrustedHosts\r\n<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"enlighter\" data-enlighter-language=\"xml\">\r\n127.0.0.1\r\nlocalhost\r\n192.168.0.1\/24\r\n\r\n*.example.com\r\n\r\n#*.example.net\r\n#*.example.org\r\n<\/pre>\n<p>Crear el fichero <strong>KeyTable<\/strong> con la tabla de claves, la tabla contiene el par selector\/dominio y la ruta a la clave privada a utilizar para firmar los mensajes:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"enlighter\" data-enlighter-language=\"xml\">\r\nvim \/etc\/opendkim\/KeyTable\r\n<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"enlighter\" data-enlighter-language=\"xml\">\r\nmail._domainkey.example.com example.com:mail:\/etc\/opendkim\/keys\/example.com\/mail.private\r\nmail._domainkey.example.es example.es:mail:\/etc\/opendkim\/keys\/example.es\/mail.private\r\n<\/pre>\n<p>Crear el fichero <strong>SigningTable<\/strong>. El fichero se utiliza para especificar los dominios y sus selectores:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"enlighter\" data-enlighter-language=\"xml\">\r\nvim \/etc\/opendkim\/SigningTable\r\n<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"enlighter\" data-enlighter-language=\"xml\">\r\n*@example.com mail._domainkey.example.com\r\n*@example.es mail._domainkey.example.es\r\n<\/pre>\n<p>Generar el par de claves para cada dominio:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"enlighter\" data-enlighter-language=\"xml\">\r\ncd \/etc\/opendkim\/keys\r\nmkdir example.com\r\ncd example.com\r\nopendkim-genkey -s mail -d example.com\r\nchown opendkim:opendkim mail.private\r\n<\/pre>\n<p>A\u00f1ade la clave p\u00fablica al registro DNS<br \/>\nPor cada dominio abre el fichero <strong>mail.txt <\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"enlighter\" data-enlighter-language=\"xml\">\r\nmail._domainkey IN TXT &quot;v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDN12F+VM4TCEMm8\/5vGjhT42Zo\/UHbf+N6CZx5Aj3p20u1dR8mqeWLM3TqE+9EpvKsx4GKtrl\/8QBL1g7ZmdluVSlz6AIMarDXnjqmKqN4dlpCj15bnOjiHxH6r\/bpll36dJrlmRuOL61xnilxTydpWQ4uJtTel2eUG5zeUG1CnQIDAQAB&quot; ; ----- DKIM key mail for example.com\r\n<\/pre>\n<p>Puedes probar que tu DNS responde correctamente a trav\u00e9s del comando dig:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"enlighter\" data-enlighter-language=\"xml\">\r\ndig txt mail._domainkey.example.com\r\n<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"enlighter\" data-enlighter-language=\"xml\">\r\n[...]\r\n;; ANSWER SECTION:\r\nmail._domainkey.example.com. 14400 IN\tTXT\t&quot;v=DKIM1\\; k=rsa\\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDN12F+VM4TCEMm8\/5vGjhT42Zo\/UHbf+N6CZx5Aj3p20u1dR8mqeWLM3TqE+9EpvKsx4GKtrl\/8QBL1g7ZmdluVSlz6AIMarDXnjqmKqN4dlpCj15bnOjiHxH6r\/bpll36dJrlmRuOL61xnilxTydpWQ4uJtTel2eUG5zeUG1CnQIDAQAB&quot;\r\n<\/pre>\n<p>Una vez que est\u00e1 todo correcto reinicia el servicio de OpenDKIM y Postfix<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"enlighter\" data-enlighter-language=\"xml\">\r\n# service opendkim restart\r\n# service postfix restart\r\n<\/pre>\n<p>y para probar que la configuraci\u00f3n es correcta env\u00eda un mail a la direcci\u00f3n <strong>check-auth@verifier.port25.com<\/strong>, el servicio nos responder\u00e1 con un mensaje en el que se <\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"enlighter\" data-enlighter-language=\"xml\">\r\n==========================================================\r\nSummary of Results\r\n==========================================================\r\nSPF check:          pass\r\nDomainKeys check:   neutral\r\nDKIM check:         pass\r\nSender-ID check:    pass\r\nSpamAssassin check: ham\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>DKIM es un standard de internet que permite relacionar un mensaje de correo con un nombre de dominio, utiliza un cifrado de clave asim\u00e9trica para poder validar un mensaje de correo con su emisor. El MTA del emisor firma los mensajes de correo con la clave privada y el receptor puede validar a partir de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[180,74,181],"_links":{"self":[{"href":"https:\/\/elkano.org\/blog\/wp-json\/wp\/v2\/posts\/1265"}],"collection":[{"href":"https:\/\/elkano.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/elkano.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/elkano.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/elkano.org\/blog\/wp-json\/wp\/v2\/comments?post=1265"}],"version-history":[{"count":13,"href":"https:\/\/elkano.org\/blog\/wp-json\/wp\/v2\/posts\/1265\/revisions"}],"predecessor-version":[{"id":1287,"href":"https:\/\/elkano.org\/blog\/wp-json\/wp\/v2\/posts\/1265\/revisions\/1287"}],"wp:attachment":[{"href":"https:\/\/elkano.org\/blog\/wp-json\/wp\/v2\/media?parent=1265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/elkano.org\/blog\/wp-json\/wp\/v2\/categories?post=1265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/elkano.org\/blog\/wp-json\/wp\/v2\/tags?post=1265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}