El objetivo de esta práctica es configurar el servidor de correo postfix, para que utilice usuarios virtuales del sistema almacenados en un directorio open LDAP. Para ello vamos a seguir los siguientes puntos:

Instalación necesaria

En primer lugar necesitamos tener instalado el paquete postfix-ldap, que nos da la funcionalidad para que el servidor de correo utilice el servidor LDAP.

  • Instala el paquete postfix-ldap

Esquema para el directorio LDAP

La organización que vamos a construir en nuestro directorio es muy similar a la que hicimos en el capítulo donde estudiamos LDAP. En este caso tendríamos tres unidades organizativas:

  • Rama “people”: la cual contendrá información sobre las cuentas de usuario. Aquí se almacenarán todos los datos obligatorios de las cuentas: direcciones de correo electrónico, directorio Maildir, etc.

  • Rama “groups”: almacenará la información relativa a grupos de usuarios.

  • Rama “postfix”: que contendrá la información necesaria para Postfix. Por ejemplo dentro de esta unidad podemos crear una unidad organizativa “alias” par crear alias y redireccionamientos. (En esta práctica no vamos a implementar esta característica).

  • Utilizando el siguiente fichero ldif crea las unidades organizativas en el directorio ldap:

      dn:ou=people,dc=ldap,dc=web-personal,dc=org
      objectClass: organizationalunit
      ou: people
    
      dn:ou=groups,dc=ldap,dc=web-personal,dc=org
      objectClass: organizationalunit
      ou: groups
    
      dn:ou=postfix,dc=ldap,dc=web-personal,dc=org
      ou: postfix
      objectClass: organizationalUnit
    

Nota 1: Si ya tienes las unidades organizativas people y groups del capitulo anterior sólo tendrás que crear la unidad organizativa postfix.

  • Comprueba la estructura del directorio con la instrucción slapcat.

Directorios para el almacén de correos

Las cuentas de correo tendrán su buzón de correo bajo el directorio /home/vmail/<nombre de usuario>

  • Todos los usuarios de correo pertenecerán al grupo vmail, por lo que tendremos que crear un nuevo grupo en el directorio LDAP con el siguiente fichero ldif:

      dn:cn=vmail,ou=groups,dc=ldap,dc=web-personal,dc=org
      cn: vmail
      gidNumber: 10004
      objectClass: top
      objectClass: posixGroup
    

Nota: Elija el GID del grupo de acuerdo a la configuración de su sistema.

  • A continuación debemos crear los directorios donde se guardarán los correos:

      mkdir /home/mail/felisa
      chown 10001:10004 /home/vmail/felisa
      chmod 2755 /home/mail/felisa
    

Configurando openLDAP para gestionar el correo

OpenLDAP necesita un esquema específico para poder manejar información acerca del correo electrónico, este esquema se encuentra en el paquete courier-authlib-ldap.

  • Instala el paquete _courier-authlib-ldap.
  • Se copian los esquemas necesarios al directorio de esquemas de LDAP (el esquema está comprimido):

      zcat /usr/share/doc/courier-authlib-ldap/authldap.schema.gz > /etc/ldap/schema/authldap.schema
    
  • Por último se ha de añadir el nuevo esquema al archivo de configuración del demonio slapd y reiniciar el demonio.

    Para ello, añada la siguiente línea en la sección de definiciones de objectClass y Schemas:

      include /etc/ldap/schema/authldap.schema
    

    Inicializamos el demonio:

      /etc/init.d/slapd restart
    

Añadir un usuario de correo

  • Vamos a añadir un nuevo usuario de correo con el siguiente fichero ldif:

      dn:uid=felisa,ou=people,dc=ldap,dc=web-personal,dc=org
      uid: felisa
      cn: Felisa
      sn: Perez Lopez
      userPassword:{CRYPT}mdkQsdBAQepDU
      uidNumber: 10001
      gidNumber: 10004
      homeDirectory: /home/vmail/felisa
      objectClass: top
      objectClass: person
      objectClass: posixAccount
      objectClass: CourierMailAccount
      mail: felisa@josedomingo.web-personal.org
      mailbox: felisa/
      quota: 0
    

    Fijate que el gidNumber corresponde con el grupo vmail que creamos anteriormente.

Modificación de la configuración de Postfix

A continuación vamos a configurar postfix para que las cuentas de correo no corresponde a usuarios locales de la máquina sino a los usuarios virtuales que hemos guardado en el directorio ldap.

  • Modifica el fichero de configuración de postfix main.cf con las siguiente líneas, que a continuación explicaremos:

      virtual_mailbox_domains = josedomingo.web-personal.org
      virtual_mailbox_base = /home/vmail
      virtual_minimum_uid = 100
    
      #Virtual User
    
      virtual_mailbox_maps = ldap:vuser
    
      vuser_server_host = 127.0.0.1
      vuser_search_base = ou=people,dc=ldap,dc=web-personal,dc=org
      vuser_query_filter = (&(mail=%s)(!(quota=-1))(objectClass=CourierMailAccount))
      vuser_result_attribute = mailbox
      vuser_bind = no
    
       #Virtual User uid
    
      virtual_uid_maps = ldap:uidldap
    
      uidldap_server_host = 127.0.0.1
      uidldap_search_base = ou=people,dc=ldap,dc=web-personal,dc=org
      uidldap_query_filter = (&(mail=%s)(!(quota=-1))(objectClass=CourierMailAccount))
      uidldap_result_attribute = uidNumber
      uidldap_bind = no
    
      #Virtual User gid
    
      virtual_gid_maps = ldap:gidldap
    
      gidldap_server_host = 127.0.0.1
      gidldap_search_base = ou=people,dc=ldap,dc=web-personal,dc=org
      gidldap_query_filter = (&(mail=%s)(!(quota=-1))(objectClass=CourierMailAccount))
      gidldap_result_attribute = gidNumber
      gidldap_bind = no
    

    Veamos los distintos parámetros:

    • virtual_mailbox_domains: Es el dominio que postfix va a utilizar como virtual, es decir los usuarios van a ser virtuales. Es necesario quitar el dominio dell parametro mydestination de la configuración.
    • virtual_mailbox_base: Es el directorio base donde va a estar el buzón de los usarios virtuales.
    • A continuación hay que indicar donde se va a encontrar los usuarios virtuales (apartado Virtual User), indicando, entre otros, la dirección del servidor ldap, la unidad organizativa donde se encuentran los usuarios y el atributo que identifica el directorio donde vamos a guardar los correos.
    • De manera similar hay que indicar donde se busca el id y el gid de los usarios virtuales.
  • Reincia el servidor postfix, y has una prueba de envio de correo a Felisa. Comprueba en el log que se ha enviado con éxito y comprueba que se ha creado el directorio /home/vmail/felisa.

Updated: