Integrando Postfix Con Directorios Virtuales En Una Base De Datos Ldap

Postfix es un agente de transporte de correo MTA es estable y fácil de instalar, una gran alternativa al sendmail ya que este contiene compatibilidad con bases de datos Berkeley DB, LDAP, MySQL, PostgreSQL, SQLite, filtro de correos, configuración de SASL, entre otras ventajas.

El día de hoy les enseñare a configurarlo integrado con una base de datos de usuarios LDAP para la creación de directorios virtuales, ya que normalmente el Postfix funciona con usuarios del sistema y esto no es una buena opción cuando contamos con grandes cantidades de usuarios, ademas con una base de datos LDAP tenemos un excelente servicio de directorio desde el cual manipular la información de toda una gran empresa.

Comenzare por decirles que en el momento de inicio de esta instalación contaba con una base de datos LDAP en la que solo había añadido el archivo básico de inicio llamado dc=gnunick,dc=com si no saben como hacer esto pueden seguir este enlace

ADMINISTRANDO OPENLDAP
Este esta muy bien explicado y lo único que tienen que hacer es la primer parte hasta la que se añade el archivo de inicio.ldif.

LDAP es una excelente base de datos pero trabajarla a bajo nivel o sin un entorno gráfico no es cómodo para mucha gente, así que instalaremos un administrador gráfico para esta, en este caso jXplorer entonces ya que contamos con una base de datos LDAP que podemos manejar instalaremos jXplorer.

Instalando Jxplorer.

En la pagina oficial de JXplorer podremos encontrar el link Downloads para descargar el programa.



en nuestro caso nos descargaremos el paquete pre compilado de java para Linux, ya que nuestra distribución sera CentOS.


Luego de descargarlo le daremos permisos de ejecución con chmod +x y posteriormente ejecutaremos el programa con ./


Se iniciara el asistente de instalación de nuestro software y seguiremos los pasos.



Este paso es de suma importancia ya que nos dice la ruta donde quedara el ejecutable, en mi caso la carpeta quedara en /opt/




Lo siguiente que haremos sera desplazarnos hasta el directorio donde lo instalamos y con sh ejecutar el archivo jxplorer.sh e inmediatamente se nos abrirá el programa.



Antes de comenzar a utilizarlo verificamos que el LDAP este corriendo por el puerto 389, en mi caso estaba corriendo si no lo estuviera haciendo lo hacemos correr con el comando services ldap start


Ya que abrimos el programa intentaremos hacer que este se comunique con el LDAP creando una nueva conexión.


La información que añadiremos sera el host donde esta la base de datos LDAP (que en mi caso es el host local 127.0.0.1) el puerto (que como anteriormente verificamos es el 389) el dn base (que en el tutorial de LDAP configure como dc=gnunick,dc=com) el nivel que es usuario y pass, el dn de root (que igual que en el tutorial de LDAP es cn=root,dc=gnunick,dc=com) y el password, mas abajo esta la opción save para guardar estos parámetros y no tener que volverlos a introducir en una posterior conexión y le damos ok.


Agregaremos un nuevo registro en nuestra unidad principal.


En available classes podemos observar las clases disponibles, como utilizaremos la base de datos LDAP para integrarla con postfix necesitamos una clase especifica llamada mail, entonces deberemos agregar esta clase al schema de bases de datos postfix por que sin esta nuestra base de datos estaría muy desordenada.


Descargaremos el archivo mail.schema y lo copiaremos y lo pegaremos en /etc/opendlap/shcema, por ultimo nos dirigimos al archivo de configuracion de ldap para decirle a este que vamos a utilizar el nuevo schema, haciendo un include de este.



Ahora reiniciaremos el LDAP para que tome los cambios.


Intentaremos crear una nueva conexión desde el JXplorer e intentaremos crear un usuario de nuevo, y como podemos observar ya existe el atributo mailAccount, entonces podemos continuar.


Las clases que utilizaremos serán las siguientes, mailAccount, inetOrgPerson, organizationalPerson, posixAccount, person y top y en la parte superior ingresaremos el RDN el cual sera cn=(nombre de usuario)


Estos son los parámetros que yo utilice.


Les explicare un poco esto, en nuestro sistema debemos crear un usuario que se llamara vmail (esto no lo hemos hecho) su gid y uid sera 5000 y su home sera /var/vmail/ dentro de este habrá una carpeta que se creara sola llamada como el usuario en este caso alejandro y dentro de esta se creara el Maildir donde quedaran los directorios del Postfix.

En la imagen anterior observamos lo siguiente.

gidNumber: 5000 (osea el del usuario real vmail)
homeDirectory: /var/vmail/ (también el del usuario real vmail)
mail: su correo propio
Objectclass: las clases de objetos que añadimos anteriormente.
sn: apellido
uid: cn o nombre
uidNumber: 5000 (el del usuario real vmail)
mailenable: OK
mailbox: alejandro/Maildir/ (la carpeta alejandro se creara sola y Maildir sera la carpeta donde se almacenaran los emails para ESTE usuario.

Presionamos Submit para guardar y listo.

En mi caso cree 3 usuarios para hacer la prueba.


Listo, por ahora sabemos que el LDAP esta trabajando con el JXplorer, ahora comenzaremos con la configuración en el Postfix.

Vinculando Postfix Con LDAP.

Lo primero que haremos sera instalar estos dos paquetes postfix y system-switch-mail-gnome


Luego de descargados comenzaremos por editar el postfix en el archivo /etc/postfix/main.cf y estas son las lineas que cambiaremos o des comentaremos.

 
 


Al final del archivo añadiremos estas lineas que son las mas importantes.


Tomaremos en cuenta que:

virtual_mailbox_base = es el home de el usuario vmail
virtual_mailbox_maps = es un archivo que crearemos a continuación
virtual_uid_maps = es el uid de vmail
virtual_gid_maps = es el gid de vmail

Ahora crearemos el archivo que definimos anteriormente.

 

Este es el archivo mas interesante:

server_host = ip del servidor LDAP
server_port = puerto de servidor LDAP
search_base = el dn base

Revisemos esta linea.
supongamos que se envía un correo a el usuario alejandro@gnunick.com
query_filter = (&(el postfix buscara que exista el objeto mailAccount)(también verificara que el mailenable este OK)(por ultimo verificara el mail)

result_attribute = mailbox en este caso alejandro/Maildir/ y así creara la carpeta alejandro

version = versión del ldap

Ahora crearemos el tan mencionado usuario vmail


Bueno ya tenemos casi todo listo, ahora les aclaro algo, si intentáramos enviar un correo en este momento, el MTA por defecto que utiliza nuestra maquina es sendmail así que el postfix no estaría trabajando, para cambiar esto fue que descargamos junto con el postfix el paquete system-switch-mail-gnome.

ejecutamos el comando.


y cambiamos sendmail por postfix.

Enviando el correo.

Bueno hemos llegado a la parte final, comprobare que no existe ningún directorio en /var/vmail/ (osea el home de vmail)


Ahora enviaremos un correo al usuario alejandro con este comando. Verificamos donde estoy ubicado y se creo un archivo nuevo, si lo revisamos nos daremos cuenta que acaba de llegar un correo para alejandro@gnunick.com

echo "asunto" | mail -s "contenido del correo alejandro@gnunick.com, inmediatamente listamos en el directorio /var/vmail/ y se habrá creado la carpeta alejandro u dentro de esta el Maildir de este usuario.

Verificamos el Correo.


Espero que este manual les haya servido si tienen alguna duda o algún error no duden en preguntarlo =D

Si has encontrado útil este artículo puedes compartirlo desde tu blog, página Web o foro.




2 comentarios:

D.A Iturriaga dijo...

hlaa, muy bueno tu post, me ayudo muchoooo, pero no me resulta la linea de sh jxplorer.sh
espero puedas ayuarme

Alejandro Calderon dijo...

Podrias mostrarme un "ls /opt/" para verificar que exista la carpeta "jxplorer-#.#-#"?

Publicar un comentario

 
Licencia Creative Commons
Este obra está bajo una licencia Creative Commons Atribución-NoComercial-SinDerivadas 2.5 Colombia.