Mario Teijeiro Otero
En este artículo se utilizará un sistema debian sarge.
Para la autentificación de usuarios se va a utilizar cyrus-sasl que es la implementación del equipo de cyrus del RFC2222. Es necesario instalar los paquetes adecuados:
Se va a utiliar únicamente el módulo sasldb, y, para utilizar éste, no es necesario ejecutar el demonio de autentificación:
cernicalo:~# update-rc.modules -f saslauthd remove
o bien, en el fichero /etc/default/saslauthd:
cernicalo:~# ls -l /etc/sasldb2 -rw-r----- 2 root sasl 12288 Nov 7 21:02 /etc/sasldb2
Por lo que todos los usuarios que quieran acceder a ella, y que no sea a través del demonio saslauthd, deben pertenecer al grupo sasl.
Para añadir/eliminar los usuarios a la base de datos se utilizará el programa saslpasswd2:
cernicalo:~# saslpasswd2 -f /etc/sasldb2 -c usuario Password: Again (for verification): cernicalo:/tmp# sasldblistusers2 /etc/sasldb2 usuario@cernicalo: userPassword prueba@cernicalo: userPassword cernicalo:~# saslpasswd2 -f /etc/sasldb2 -d prueba cernicalo:/tmp# sasldblistusers2 /etc/sasldb2 usuario@cernicalo: userPassword
Para que la librería libsasl2 utilice el módulo de autentificación sasldb se ha de configurar cada programa que use esta librería las opciones pwchek_method=auxprop y auxprop_plugin=salsdb.
Éste es el programa que va a dar servicio imap, imaps, sieve ... Los paquetes necesarios instalar son:
Al instalar estos programas se crea una jerarquía de directorios en /var/spool/cyrus/mail para almacenar los buzones de correo. Todos estos ficheros tienen como propietario a cyrus y grupo mail.
Sólo hay dos ficheros de configuración:
Dentro de los servicios se ha de tener activados (descomentado):
~/.sieve
. Ésto
sólo tiene sentido en sistemas en dónde los usuarios del correo son usuarios del
sistema.
cernicalo:~emeteo$ cyradm --user cyrus localhost Password: localhost>help authenticate, login, auth authenticate to server chdir, cd change current directory createmailbox, create, cm create mailbox deleteaclmailbox, deleteacl, dam remove ACLs from mailbox deletemailbox, delete, dm delete mailbox disconnect, disc disconnect from current server exit, quit exit cyradm help, ? show commands info display mailbox/server metadata listacl, lam, listaclmailbox list ACLs on mailbox listmailbox, lm list mailboxes listquota, lq list quotas on specified root listquotaroot, lqr, lqm show quota roots and quotas for mailbox reconstruct reconstruct mailbox (if supported) renamemailbox, rename, renm rename (and optionally relocate) mailbox server, servername, connect show current server or connect to server setaclmailbox, sam, setacl set ACLs on mailbox setinfo set server metadata setquota, sq set quota on mailbox or resource version, ver display version info of current server
Todos los buzones de usuario estarán bajo el directorio user. Por lo que para crear el buzón del usuario `usuario':
localhost> cm user.usuario localhost>lm user.usuario (\HasNoChildren) localhost>lm user.usuario.personales localhost>lm user.usuario (\HasChildren) user.usuario.personales (\HasNoChildren)
En el caso de tener la opción de configuración altnamespace: yes, el usuario vería en su programa cliente de correo la carpeta `INBOX' y la carpeta `personales' al mismo nivel.
Será el encargado de repartir el correo localmente. Veremos que podemos utilizar tres métodos para entregar el correo a cyrus: procmail, cyrdeliver, lmtp.
La instalación de postfix-tls en Debian ya deja funcionando el servidor. Sólo queda personalizar la configuración de éste para que entregue el correo a cyrus permitiendo SMTP AUTH autentificando mediante sasl y permita la transmisión de correo mediante forma segura.
En la instalación de Debian en el fichero /etc/postfix/master.cf ya existe un transporte llamado cyrus que emplea el programa cyrdeliver:
cyrus unix - n n - - pipe flags=R user=cyrus argv=/usr/sbin/cyrdeliver -e -m ${extension} ${user}
Sólo queda indicarle en el /etc/postfix/main.cf:
mailbox_transport = cyrus
Basta con poner en /etc/postfix/main.cf la opción mailbox_transport = cyrus, ya que, al igual que el transporte cyrus, tiene su entrada correspondiente en /etc/postfix/master.cf.
Para realizar la entrega de correo desde procmail se puede utilizar un /etc/procmailrc como este:
El problema de este sistema es que se necesita que los usuarios del correo sean usuarios del sistema para que éstos utilicen procmail con el fin de repartir su correo.
Para utilizar éste método hay que indicar en /etc/postfix/main.cf:
mailbox_transport = lmtp:unix:/var/run/cyrus/socket/lmtp
Hay que puntualizar que debian no ejecuta el programa de postfix que maneja el protocolo lmtp en un chroot, ya que así está marcado en /etc/postfix/master.cf:
# service type private unpriv chroot wakeup maxproc command + args local unix - n n - - local virtual unix - n n - - virtual lmtp unix - - n - - lmtp
En caso de que se quiera ejecutar en un chroot habría que hacer accesible el socket /var/run/cyrus/socket/lmtp desde su jaula, bien haciendo un enlace duro, bien modificando el path del socket en la configuración de cyrus.
Para ello se modifica la opción smtpd_recipient_restrictions del fichero /etc/postfix/main.cf:
smtpd_sasl_auth_enable=yes smtpd_tls_auth_only = yes smtpd_sasl_local_domain=cernicalo smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated,\ reject_unauth_destination smtpd_sasl_security_options=noanonymous
Así se permite hacer relay a los clientes sin autentificar que pertenezcan a las redes indicadas en mynetworks y a los clientes autentificados mediante el método sasl. Se rechazarán los que están sin autentificar. Además es necesario utilizar tls para autentificarse. Con la opción smtpd_sasl_local_domain=cernicalo se indica que compruebe el usuario entrando en /etc/sasldb2 con usuario@cernicalo.
Existe un problemilla causado porque el servicio smtpd de postfix se ejecuta en una jaula, y, por lo tanto, no puede acceder al fichero /etc/sasldb2 para consultar a los usuarios. Como solución se puede tomar hacer una enlace duro:
cernicalo:/var/spool/postfix/etc# ln /etc/sasldb2 sasldb2
En el caso de que no fuera posible (por estar en distintas particiones), habría que recurrir a otro método (se deja como ejercicio al lector).
Para que postfix sepa qué método utilizar con sasl, hay que crear el fichero /etc/postfix/sasl/smtpd.conf:
pwcheck_method: auxprop mech_list: login cram-md5 digest-md5
Para permitir un canal seguro mediante tls sólo hay que indicar en /etc/postfix/main.cf que así lo haga:
smtpd_use_tls = yes smtpd_tls_cert_file = /etc/ssl/certs/postfix.cert.pem smtpd_tls_key_file = /etc/ssl/private/postfix.key.pem
Los certificados deben tener derechos de lectura para el usuario postfix.
Un ejemplo de script sieve1:
Para subir un script al servidor se utiliza el programa sieveshell, perteneciente al paquete cyrus21-admin:
emeteo@cormoran$ sieveshell -u emeteo cernicalo connecting to cernicalo Please enter your password: > put repartecorreo.sie > ls repartecorreo.sie > activate repartecorreo.sie > ls repartecorreo.sie <- active script > quit
Actualmente kmail sólo soporta editar las respuestas fuera de oficina. Esperemos que soporte un editor completo de estos filtros.
This document was generated using the LaTeX2HTML translator Version 2K.1beta (1.48)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html imap+postfix.tex -split 0
The translation was initiated by Mario Teijeiro Otero on 2003-11-13