{"id":1841,"date":"2016-09-21T09:07:33","date_gmt":"2016-09-21T09:07:33","guid":{"rendered":"http:\/\/esferas.org\/msqlu\/?p=1841"},"modified":"2016-09-23T05:53:25","modified_gmt":"2016-09-23T05:53:25","slug":"dovecot-y-usuarios-virtuales-en-ldap","status":"publish","type":"post","link":"https:\/\/esferas.org\/msqlu\/2016\/09\/21\/dovecot-y-usuarios-virtuales-en-ldap\/","title":{"rendered":"Dovecot y usuarios virtuales en LDAP &#8230;"},"content":{"rendered":"<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:876,&quot;href&quot;:&quot;http:\\\/\\\/wiki.dovecot.org\\\/VirtualUsers&quot;,&quot;archived_href&quot;:&quot;&quot;,&quot;redirect_href&quot;:&quot;https:\\\/\\\/wiki.dovecot.org\\\/VirtualUsers&quot;,&quot;checks&quot;:[],&quot;broken&quot;:false,&quot;last_checked&quot;:null,&quot;process&quot;:&quot;done&quot;}]'><\/div>\n<p>&#8230; un concepto interesante y no tan dif\u00edcil de lograr una vez claros los conceptos.<\/p>\n<p><!--more--><\/p>\n<p>Dovecot es un programa que proporciona el servicio de acceso a buzones de correo electr\u00f3nico mediante los protocols IMAP y POP3 principalmente.<\/p>\n<p>Para funcionar puede separa la autentificaci\u00f3n de usuarios del acceso a su informaci\u00f3n local. Lo primero se realizar mediante el mecanismo <code>passwd<\/code> y lo segundo v\u00eda <code>userdb<\/code>. Conseguir que un usuario se identifique con \u00e9xito en el servidor es relativamente sencillo; lo segundo necesita replantearse algunas cosas antes.<\/p>\n<p>En el caso de utilizar un directorio LDAP para las cuentas de usuario es casi seguro que nos encontramos ante un caso de usuarios virtuales: no est\u00e1n inscritos en el archivo <code>\/etc\/passwd<\/code> y no se consideran cuentas de sistema UNIX. Podemos tener contrase\u00f1as y controlar el acceso a los servicios sin muchos problemas. Lo complicado aparece cuando es necesario manipular archivos en el sistema. \u00bf Qui\u00e9n ser\u00e1 el propietario de los mismo ?<\/p>\n<p>La <a href=\"http:\/\/wiki.dovecot.org\/VirtualUsers\">documentaci\u00f3n de Dovecot<\/a> describe muy bien c\u00f3mo definir \u00e9stos usuarios y qu\u00e9 limitaciones podemos encontrarnos, as\u00ed que la mayor decisi\u00f3n que debemos tomar es qu\u00e9 cuenta y qu\u00e9 grupo vamos a emplear para mantener los buzones. Debe estar de acuerdo con el mecanismo de entrega de correo, que suele estar representado por alguna combinaci\u00f3n de servidor de enrutado de correo y herramienta local de despacho (exim4 y maildrop es habitual en mis sistemas).<\/p>\n<ol>\n<li>Elegimos el directorio ra\u00edz de los buzones para los usuarios. En mi caso, m\u00e1s por cuesti\u00f3n de distribuci\u00f3n de disco que por otra cosa, he elegido <code>\/srv\/usuarios\/%u\/<\/code>.<\/li>\n<li>Creamos una cuenta y un grupo especiales para los directorios y archivos <em>f\u00edsicos<\/em> que componen los buzones de correo. Es una cuenta y un grupo de sistema con el nombre -ambos- de <code>vmail<\/code>.<\/li>\n<li>Indicamos a dovecot que utilice siempre estos datos empleando un recurso conocido como <em>static userdb<\/em> (base de datos extras de usuarios fija -m\u00e1s o menos-).<\/li>\n<\/ol>\n<pre class=\"lang:sh decode:true \">$ sudo useradd --system --home-dir \/srv\/mail vmail \r\n$ sudo install -d -u vmail -g vmail \/srv\/mail<\/pre>\n<p>En la configuraci\u00f3n de dovecot bastar\u00e1 con a\u00f1adir las siguientes estrofas en <code>\/etc\/dovecot\/local.conf<\/code>:<\/p>\n<pre class=\"lang:default decode:true\">passdb {\r\n  driver = ldap\r\n  args  = \/etc\/dovecot\/dovecot-ldap.conf.ext\r\n}\r\nuserdb { \r\n        driver = static\r\n\r\n        args = uid=vmail gid=vmail home=\/srv\/mail\/%u mail=maildir:\/srv\/mail\/%u\r\n}\r\n<\/pre>\n<p>asegur\u00e1ndonos de que no hay m\u00e1s cla\u00fasulas tipo <em>userdb<\/em> e incluyendo lo siguiente en el archivo mencionado <code><\/code><code>\/etc\/dovecot\/dovecot-ldap.conf.ext<\/code>:<\/p>\n<pre class=\"lang:default decode:true\">debug_level = 1\r\nldap_version = 3\r\n#uris = ldapi:\/\/\/\r\nhosts = localhost\r\nbase = ou=users,dc=empresa,dc=net\r\nderef=never\r\nuser_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid\r\nuser_filter = (&amp;(objectClass=inetOrgPerson)(uid=%u))\r\nauth_bind = yes\r\nauth_bind_userdn = uid=%u,ou=users,dc=empresa,dc=net\r\n<\/pre>\n<h4>Comprobaciones<\/h4>\n<p>El programa dovecot dispone de algunas ayudas para comprobar la configuraci\u00f3n adem\u00e1s del registro del sistema. Invocarlo con el par\u00e1metro <code>-a<\/code> muestra toda la configuraci\u00f3n y hacerlo con <code>-n<\/code> nos ense\u00f1a aquellos valores que difieren de los predeterminados.<\/p>\n<p>Puede ser importante para comprobar el orden en el que aparecen las diferentes base de datos de autentificaci\u00f3n y datos extra (<em>authdb<\/em> y <em>passdb<\/em>) ya que es un factor a tener en cuenta cuando comprobamos la configuraci\u00f3n.<\/p>\n<p>Existe tambi\u00e9n otra herramienta interesante al respecto. Se llama <code>authadm<\/code> y entre otras muchas funciones nos permite comprobar si est\u00e1 funcionando o no la autentificaci\u00f3n de usuarios:<\/p>\n<pre class=\"lang:sh decode:true \">root@tlp:\/etc\/dovecot# doveadm auth test coco\r\nPassword: \r\npassdb: coco auth succeeded\r\nextra fields:\r\n  user=coco\r\nroot@tlp:\/etc\/dovecot#<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8230; un concepto interesante y no tan dif\u00edcil de lograr una vez claros los conceptos.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","webmentions_disabled_pings":false,"webmentions_disabled":false,"footnotes":""},"categories":[2],"tags":[18,560,25,335],"class_list":["post-1841","post","type-post","status-publish","format-standard","hentry","category-software","tag-administracion-de-sistemas","tag-dovecot","tag-email","tag-ldap"],"_links":{"self":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/1841","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/comments?post=1841"}],"version-history":[{"count":0,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/1841\/revisions"}],"wp:attachment":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/media?parent=1841"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/categories?post=1841"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/tags?post=1841"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}