Configuración de postfix para el uso de usuarios virtuales de un directorio LDAP
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
.