Directorio para el almacén de correos
Las cuentas de correo tendrán su buzón de correo bajo el directorio /home/vmail/$user/Maildir, donde “$user” se sustituirá por el nombre del usuario.
Todos los usuarios de correo pertenecerán al grupo vmail, por lo que si este grupo no existe en su sitema, tendrá que crearlo. A continuación se presenta la plantilla LDIF necesaria para añadir el grupo “vmail” al directorio LDAP:
Ejemplo 2.3. Plantilla LDIF para el grupo “vmail”
# Entry 1: cn=vmail,ou=groups,dc=gsr,dc=pt
dn:cn=vmail,ou=groups,dc=gsr,dc=pt
cn: vmail
gidNumber: 10004
objectClass: top
objectClass: posixGroup |
| |
Elija el GID del grupo de acuerdo a la configuración de su sistema. |
El siguiente paso es la creación del directorio que almacenará los buzones de correo de los nuevos usuarios:
Ejemplo 2.4. Creación del directorio para los usuarios de correo
# /bin/mkdir -vp -m 2755 /home/vmail
mkdir: se ha creado el directorio `/home/vmail'
# /bin/chown -v root.vmail /home/vmail/
cambiado el propietario de `/home/vmail/' a root:vmail
|
Como los usuarios de correo van a ser usuarios del sistema, pero sin acceso a la shell, en principio, tienen asociado un directorio home, cuyo path será: /home/vmail/$user ($user se corresponde con el nombre del usuario). Por este motivo, se va a añadir al directorio /etc/skel/ un archivo de recursos para procmail (programa encargado del repardo de correos de los usuarios) y el directorio bajo el cual se van a almacenar los correos de los usuarios en formato Maildir. El siguiente ejemplo muestra como hacerlo:
Ejemplo 2.5. Preparando el directorio /etc/skel/
# /bin/echo -ne "PATH=/usr/bin:/bin:/usr/local/bin:.\n\
MAILDIR=\$HOME/Maildir\nDEFAULT=\$MAILDIR/" > /etc/skel/.procmailrc
# /usr/bin/maildirmake /etc/skel/Maildir
|
| |
En esta línea se define la localización del directorio donde procmail va a almacenar los correos de los usuarios en formato Maildir. |
Ahora el sistema ya se encuentra preparado para la correcta creación del home de los usuarios de correo.
Preparando OpenLDAP para el soporte de 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-ldap, por lo que se procederá a su instalación:
Ejemplo 2.6. Instalación del paquete courier-ldap (primera parte)
# /usr/bin/apt-get install courier-ldap
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias... Hecho
Se instalarán los siguientes paquetes extras:
courier-authdaemon courier-base
Se instalarán los siguientes paquetes NUEVOS:
courier-authdaemon courier-base courier-ldap
0 actualizados, 3 se instalarán, 0 para eliminar y 9 no actualizados.
Se necesita descargar 0B/344kB de archivos.
Se utilizarán 1114kB de espacio de disco adicional después de desempaquetar.
¿Desea continuar? [S/n]
Preconfiguring packages ... |
Ejemplo 2.7. Instalación del paquete courier-ldap (segunda parte)
--------------------- Sourcerer Apt Watcher ---------------------
Configure: courier-base
-----------------------------------------------------------------
(Leyendo la base de datos ...
273464 ficheros y directorios instalados actualmente.)
Desempaquetando courier-base (de .../courier-base_0.45.4-1_i386.deb) ...
Desempaquetando courier-authdaemon (de .../courier-authdaemon_0.45.4-1_i386.deb) ...
Desempaquetando courier-ldap (de .../courier-ldap_0.45.4-1_i386.deb) ...
Configurando courier-base (0.45.4-1) ...
Configurando courier-authdaemon (0.45.4-1) ...
Starting Courier authdaemon: done.
Configurando courier-ldap (0.45.4-1) ...
Starting Courier LDAP alias daemon: done.
|
El siguiente ejemplo muestra una descripción del paquete que se acaba de instalar en el sistema, así como sus dependencias más directas:
Ejemplo 2.8. Información sobre los paquetes courier-ldap, courier-authdaemon y courier-base
# /usr/bin/apt-cache show courier-ldap courier-authdaemon courier-base
Package: courier-ldap
Priority: optional
Section: mail
Installed-Size: 260
Maintainer: Stefan Hornburg (Racke) <racke@linuxia.de>
Architecture: i386
Source: courier
Version: 0.45.4-1
Replaces: courier-imap-authldap
Depends: libc6 (>= 2.3.2.ds1-4), libgdbm3, libldap2 (>= 2.1.17-1), libpam0g (>= 0.76),
courier-base (>= 0.45.4), courier-authdaemon (>= 0.45.4)
Conflicts: courier-imap-authldap
Filename: pool/main/c/courier/courier-ldap_0.45.4-1_i386.deb
Size: 62014
MD5sum: 205b66ece1774ccbf354038e05b2e8f5
Description: Courier Mail Server - LDAP support
This package contains support for LDAP authentication and
LDAP-based mail aliasing.
Package: courier-authdaemon
Priority: optional
Section: mail
Installed-Size: 208
Maintainer: Stefan Hornburg (Racke) <racke@linuxia.de>
Architecture: i386
Source: courier
Version: 0.45.4-1
Depends: libc6 (>= 2.3.2.ds1-4), libgdbm3, libpam0g (>= 0.76), courier-base (>= 0.45.4)
Filename: pool/main/c/courier/courier-authdaemon_0.45.4-1_i386.deb
Size: 51486
MD5sum: da101bf6c9b839d2462e3da4bec49eeb
Description: Courier Mail Server - Authentication daemon
This package contains the authentication daemon for the
Courier Mail Server.
Package: courier-base
Priority: optional
Section: mail
Installed-Size: 620
Maintainer: Stefan Hornburg (Racke) <racke@linuxia.de>
Architecture: i386
Source: courier
Version: 0.45.4-1
Replaces: courier-debug (<< 0.44.2)
Depends: libc6 (>= 2.3.2.ds1-4), libfam0c102, libgdbm3, perl, debconf (>= 0.5.00)
Conflicts: courier-imap (<= 1.3.3), courier-debug (<< 0.44.2)
Filename: pool/main/c/courier/courier-base_0.45.4-1_i386.deb
Size: 230866
MD5sum: 6cfa4f6dc8ac2e3feba5d50022700b6b
Description: Courier Mail Server - Base system
The Courier mail transfer agent (MTA) is an integrated mail/groupware
server based on open commodity protocols, such as ESMTP, IMAP, POP3, LDAP,
SSL, and HTTP. Courier provides ESMTP, IMAP, POP3, webmail, and mailing list
services within a single, consistent, framework.
.
This package provides the functionality needed by all Debian courier packages
like some configuration files, helper programs and the Courier TCP server
daemon.
|
Ahora que ya se encuentra instalado el paquete courier-ldap, se procederá a copiar el esquema necesario para dar soporte de correo al directorio LDAP al directorio de esquemas de OpenLDAP, como se muestra a continuación:
Ejemplo 2.9. Copiando el esquema authldap.schema al directorio de esquemas de OpenLDAP
# /bin/cp -v /usr/share/doc/courier-ldap/authldap.schema /etc/ldap/schema/
`/usr/share/doc/courier-ldap/authldap.schema' -> `/etc/ldap/schema/authldap.schema'
# /bin/chown -v slapd.slapd /etc/ldap/schema/authldap.schema
cambiado el propietario de `/etc/ldap/schema/authldap.schema' a slapd:slapd
# /bin/chmod -v 640 /etc/ldap/schema/authldap.schema
el modo de `/etc/ldap/schema/authldap.schema' cambia a 0640 (rw-r-----) |
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 |
Una vez hecho esto, reinicie el servidor slapd:
# /etc/init.d/slapd restart
Stopping OpenLDAP: slapd.
Starting OpenLDAP: slapd. |
A partir de este momento, OpenLDAP ya tiene soporte para almacenar información relativa a sistemas de correo. En la siguiente sección se verá como añadir nuevos usuarios de correo al directorio LDAP.
Adición de un usuario de correo
En esta sección se verá como añadir un usuario de correo al directorio LDAP. En esta ocasión se hará uso de las herramientas de consola que provee el paquete ldap-utils. Para ello, se creará un archivo ldif con la siguiente estructura:
dn:uid=user,ou=people,dc=gsr,dc=pt
uid: user
cn: Nombre
sn: Apellidos
userPassword: {CRYPT}********
loginShell: /bin/false
uidNumber: 10001
gidNumber: 10004
homeDirectory: /home/vmail/user
shadowMin: -1
shadowMax: 999999
shadowWarning: 7
shadowInactive: -1
shadowExpire: -1
shadowFlag: 0
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
objectClass: CourierMailAccount
mail: usuario@dominio.com
mailbox: Maildir/
quota: 0 |
| |
Clave del usuario encriptada con el algoritmo de hash CRYPT. La elección del algoritmo es crítica para el funcionamiento global del sistema. Si no se escoge este algoritmo, no se podrá autentificar más tarde en los servicios POP3 e IMAP. |
| |
La shell para los usuarios destinados al correo será una shell nula, es decir, no tendrán acceso al sistema; sólo podrán obtener y enviar su correo del mismo. Si en el futuro se quisiese dotar a este usuario con acceso shell, sólo habría que cambiar este atributo por una shell válida. |
| |
GID del grupo principal del usuario de correo. Este ha de ser el GID del grupo vmail (eche un vistazo al valor introducido en GID del grupo vmail). |
| |
Directorio home del usuario. |
| |
objectClass que especifica los atributos relacionados con el correo. |
| |
Correo electrónico del usuario. |
| |
Atributo que controla la quota del usuario. Como de momento no se va a hacer uso de este parámetro, se utilizará para controlar si una cuenta se encuentra desactivada (valor -1) o no (cualquier otro valor). |
| |
Ruta relativa al buzón de correo donde se almacenarán los mensajes. Se han de tener en cuenta los siguientes puntos: el directorio almacén será de la forma dominio.com/usuario/; el directorio se ha de crear antes de ser utilizado; el directorio ha de finalizar en “/” para indicar que se está trabajando con el formato Maildir. |
A continuación se mostrará un ejemplo sobre como añadir un nuevo usuario al sistema. Para ello se creará un archivo con el siguiente contenido:
# Entry 1: uid=severa,ou=people,dc=gsr,dc=pt
dn:uid=severa,ou=people,dc=gsr,dc=pt
uid: severa
cn: Severa
sn: Sanches Lopes
userPassword: {CRYPT}************
loginShell: /bin/false
uidNumber: 10001
gidNumber: 10004
homeDirectory: /home/vmail/severa
shadowMin: -1
shadowMax: 999999
shadowWarning: 7
shadowInactive: -1
shadowExpire: -1
shadowFlag: 0
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
objectClass: CourierMailAccount
mail: severa@gsr.pt
mailbox: Maildir/
quota: 0 |
| |
Para encriptar la clave con el algoritmo de hash CRYPT, se ha utilizado la herramienta slappasswd que provee el paquete ldap-utisl. El proceso de generación ha sido el siguiente:
Ejemplo 2.10. Obtención de una clave encriptada con CRYPT
# /usr/sbin/slappasswd -v -u -h {CRYPT}
New password: [clave]
Re-enter new password: [clave]
{CRYPT}u8.2mAF.3QmIQ | |
| |
El número que aparece en esta línea se corresponde con el gid del grupo vmail añadido en el Ejemplo 2.3, “Plantilla LDIF para el grupo vmail”. |
Suponiendo que el archivo donde se ha almacenado la información de la captura LDIF para Severa se denomina severa.ldif, ha de ejecutar el siguiente comando para añadir la información al directorio LDAP:
Ejemplo 2.11. Adición de un usuario con el comando ldapadd
$ /usr/bin/ldapadd -x -D "cn=admin,dc=gsr,dc=pt" -W -h gsr.pt -f severa.ldif
Enter LDAP Password: [clave]
adding new entry "uid=severa,ou=people,dc=gsr,dc=pt"
|
La siguiente imagen muestra de forma gráfica, gracias a phpLDAPadmin, el nuevo usuario añadido al directorio LDAP: