NetQmail Vpopmail QmailAdmin Horde IMP bajo Gentoo
Contents
Introducción
Vamos a instalar un MTA con Qmail, realizar la gestion de los dominios virtuales con vpomail, la recogida de correos se ralizará por imap con courrier-imap utilizar QmailAdmin como interfaz de gestión de vpomail y IMP para el acceso mediante webmail a nuestra cuenta de correo.
NetQmail
Instalamos NetQmail. En mi caso tuve primero que desinstalar ssmtp.
emerge -av netqmail
Configuración de NetQmail
El fichero /var/qmail/control/servercert.cnf tiene los datos para la generación del certificado SSL. Los modificamos para que sean correctos.
emerge --config netqmail
Para poner un certificado propio, emerge nos indica los pasos siguientes:
If you want to have a properly signed certificate instead, do the following: openssl req -new -nodes -out req.pem \ -config /var/qmail/control/servercert.cnf \ -keyout /var/qmail/control/servercert.pem Send req.pem to your CA to obtain signed_req.pem, and do: cat signed_req.pem >> /var/qmail/control/servercert.pem
Alias de root
En la carpeta /var/qmail/alias tenemos varios ficheros que nos permiten redirigir los correos de root a una cuenta de correo en particular.
echo cuenta@luniel.com > /var/qmail/alias/.qmail-root echo cuenta@luniel.com > /var/qmail/alias/.qmail-postmaster echo cuenta@luniel.com > /var/qmail/alias/.qmail-mailer-deamon
Activación del servicio qmail-send
rc-update add svscan default cd /service ln -s /var/qmail/supervise/qmail-send qmail-send /etc/init.d/svscan start
Vpopmail
Instalamos vpopmail.
emerge -av vpopmail (Hay que asegurarse de tener el USE flag de mysql
Base de datos
mysql -p mysql> create database vpopmail; mysql> create user vpopmail identified by 'contraseña'; mysql> grant select,insert,update,delete,drop,create on vpopmail.* to vpopmail@servidor.luniel.com;
Configuración vpopmail
Modificamos la contraseña del fichero /etc/vpopmail.conf para que coincida con la que hemos asignado al usuario de base de datos. Creamos nestro dominio, y en mi caso los distintos alias.
vadddomain luniel.com vaddaliasdomain luniel.com luniel.es vaddaliasdomain luniel.com luniel.net vadduser usario@luniel.com contraseña vdominfo domain: luniel.com uid: 89 gid: 89 dir: /var/vpopmail/domains/luniel.com users: 2 domain: luniel.es (alias of luniel.com) uid: 89 gid: 89 dir: /var/vpopmail/domains/luniel.com users: 2 domain: luniel.net (alias of luniel.com) uid: 89 gid: 89 dir: /var/vpopmail/domains/luniel.com users: 2
IMAP
Instalamos courier-imap, la instalación se tiene que realizar despues de haber instalado vpopmail para que el modulo de autentificación se cree correctamente.
emerge -av dev-tcltk/expect courier-imap
Configuramos el modulo de authentificación desde la carpeta /etc/courier/authlib
authdaemonrc: authmodulelist="authldap " authldaprc: ldap.luniel.com ....
En la carpeta /etc/courier-imap, configuramos el fichero imapd.cnf con los parametros correctos de certificado.
mkimapdcert
Courrier authlib
En vez de utilizar el modulo de authentificación de vpopmail, hemos autilizado authldap, para authetificar nuestros usuarios contra nuestro Ldap.
Esquema de authldap
En nuestro ldap hemos añadido el esquema de authldap, el esquema esta disponible en los fuentes de la versión del modulo de authentificación de courrier (nuestra versión es courier-authlib-0.60.6). Lo añadimos a la carpeta /etc/openldap/schema el archivo authldap.schema.
/etc/openldap/sldap.conf # # See slapd.conf(5) for details on configuration options. # This file should NOT be world readable. # include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema include /etc/openldap/schema/samba.schema include /etc/openldap/schema/authldap.schema ...
En el Ldap añadimos los siguintes campos (en negrita). Los campos que nos van a interresar en nuestro caso es el mail, el mailbox (lo añade el objeto CourierMailAccount).
# Exportación LDIF de: uid=usuario,ou=Users,dc=luniel,dc=com # Generado por phpLDAPadmin el October 21, 2008 8:02 pm # Servidor: Luniel LDAP Server (xxx.xxx.xxx.xxx) # Ámbito de búsqueda: base # Filtro de búsqueda: (objectClass=*) # Entradas totales: 1 dn: uid=usuario,ou=Users,dc=luniel,dc=com objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount objectClass: sambaSamAccount objectClass: CourierMailAccount cn: usuario sn: usuario givenName: usuario uid: usuario uidNumber: 10xxx gidNumber: 10xxx homeDirectory: /home/usuario loginShell: /bin/bash samba... ...: 45 displayName: Usuario Pepe gecos: Usuario Pepe mail: usuario.pepe@luniel.com mailbox: /correo/luniel.com/usuario.pepe/
Ficheros Configuración Courrier AuthLdap
/etc/courier/authlib/authdaemonrc
Cambios realizados con el fichero de la distribución:
authmodulelist="authldap "
/etc/courier/authlib/authldap
Cambios realizados con el fichero de la distribución:
LDAP_URI ldap://ldap.luniel.com LDAP_BASEDN dc=luniel,dc=com LDAP_BINDDN cn=Manager, dc=luniel,dc=com LDAP_BINDPW contraseña LDAP_AUTHBIND 1 (Con este parametro es el Ldap que confirma que la contraseña es correcta) LDAP_MAIL mail (Nuestro patron de busqueda es el usuario de nuestro Ldap) LDAP_GLOB_UID vpopmail (Los correos tiene permisos de vpopmail) LDAP_GLOB_GID vpopmail LDAP_HOMEDIR mailbox (Ruta donde vpopmail deja los correos de nuestro buzon) #LDAP_MAILDIR mailbox (Dejamos que coja el parametro por defecto (.maildir) #LDAP_DEFAULTDELIVERY defaultDelivery (No usamos este parametro) LDAP_FULLNAME displayName (El nombre completo de nuestros usuarios) #LDAP_CLEARPW clearPassword (Deshabilitamos las contraseñas en claro)
Ficheros de arranque de courier
rc-update add courier-imap-ssl /etc/init.d/courier-imap-ssl start
Smtpd
Actualmente Qmail solo admite mensajes locales, para que pueda recibir y enviar correo al exterior, vamos a habilitar los mensajes de usuarios authentificados mediante Vpopmail.
/var/qmail/control/conf-smtpd: QMAIL_SMTP_CHECKPASSWORD="/var/vpopmail/bin/vchkpw"
El fichero de configuración del certificado, ya esta configurado en mi caso, sino
vi /var/qmail/control/servercert.cnf mkservercert (Tambien ya tengo el certificado creado anteiormente). cd /services ln -s /var/qmail/supervise/qmail-smtpd qmail-smtpd /etc/init.d/svscan restart
QmailAdmin
Qmail se tiene que ejecutar en la misma máquina que vpopmail. Como en mi caso mi servidor web está en otra máquina, tenemos que configurar qmail en un servidor apache y hacerle un proxypass al servidor web externo. Las rutas por defecto de QmailAdmin no nos valen, por lo que he "retocado" el ebuild.
make.conf: PORTDIR_OVERLAY=/ruta_portage_alternativo/portage cp -r /usr/portage/netmail/qmailadmin /ruta_portage_alternativo/portage
Modificamos el ebuild qmailadmin-1.2.10.ebuild
local url_htdocs_images="..." local url_cgibin="..."
Volvemos a realizar el digest
ebuild qmailadmin-1.2.10.ebuild digest emerge -av qmailadmin
En el apache del qmailadmin configuramos la seguridad. En el apache de acceso configuramos el proxypass.
ProxyRequests Off ProxyPass /uri_servidor_externo/qmailadmin/images/ http://url_servidor_qmailadmin/qmailadmin/images/ ProxyPass /uri_servidor_externo/qmailadmin/cgi/ http://url_servidor_qmailadmin/monitor/qmailadmin/cgi/
Si tenemos problemas de login, primero verificar los permisos del fichero de cvonfiguración y del cgi.
-rw-r--r-- 1 root vpopmail 637 Nov 1 18:50 /etc/vpopmail.conf -rwsr-sr-x 2 vpopmail vpopmail 198728 Nov 1 19:58 /var/www/qmailadmin/cgi-bin/qmailadmin
Sincronización de contraseñas
En nuestro ejemplo la authentificación de courrier se realiza mediante courier-authlib, pero la gestion de las cuentas la realizamos con vpopmail. Se eligio esta configuracón para mantener una única contraseña en el Ldap, y las ventajas de vpopmail. Pero nos interesa que cuando cambiemos la contraseña del Ldap tambien se cambie la contraseña de vpopmail. El cambio de contraseña la realizamos mediante samba, con el programa smbldap-passwd, por lo que nos hemos creado un script que realice el cambio de contraseñade las dos partes:
#!/bin/bash MAIL=`/usr/bin/ldapsearch -LLL -H ldap://ldap.luniel.com -b ou=Users,dc=luniel,dc=com uid=$1 mail | grep mail | cut -d ' ' -f 2` if [ "#$MAIL#" != "##" ] ; then for correo in $MAIL do /var/vpopmail/bin/vpasswd $correo $2 echo "Password e-mail account $correo changed" done fi /usr/sbin/smbldap-passwd $1 << END $2 $2 END
El script busca las cuentas principales de correo de nuestro usuario en el atributo mail, estas cuentas tienen que coincidir con las cuentas de vpopmail creadas de nuestro usuario, lo busca mediante el uid que le propocionamos. Cambia la contraseña de vpopmail, y a continuación cambia la contraseña de nuestro usuario en el ldap.
Horde IMP
El articulo de Horde bajo gentoo viene detallado la configuración del cliente de webmail.
Referencias
- netqmail/vpopmail Virtual Mail Hosting System Guide
- Re: courier-imap & authldap authentication FAILED
- HOWTO: qmail vpopmail courier-imap qmail-scanner etc (NEW)
- Qmailadmin with Apache
--Daniel Simao 09:32 18 oct 2008 (UTC)