[ Accueil ] [ Introduction ] [ Le protocole ] [ Serveurs IMAP ] [ Plus avec Cyrus ]
Si tout ça vous a donné l'envie d'expérimenter, voire de mettre en place un serveur IMAP, voici en quelque mots une présentation des deux serveurs les plus courants.
Il s'agit du serveur uw-imapd, celui là même qui a été utilisé en page précédente. Utilisé sur Debian ou une autre distribution comme Mandrake ou Fedora,avec Exim ,Postfix ou Sendmail, les MTA installés par défaut savent délivrer localement avec les bons outils dans des boîtes aux lettres au format Mailbox, généralement dans le répertoire /var/spool/mail.
Installez le paquetage imap sur Mandrake (celui-ci vous fournira également le service POP3).
Vérifiez que le super démon xinetd est correctement configuré. Vous devez trouver dans /etc/xinetd.d/imap quelque chose de ce genre :
service imap
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/imapd
log_on_success += DURATION USERID
log_on_failure += USERID
disable = no
}
Vérifiez également dans /etc/services la présence de ces lignes :
imap 143/tcp imap2 # Interim Mail Access Proto v2 imap 143/udp imap2
Si imap2 vous gène, remplacez par imap4. Ce sera plus joli, mais ça ne fonctionnera pas mieux.
Curieusement, imap2 fait en réalité référence à imap4 révision 1
Installez le paquetage uw-imapd .
Vérifiez que le super démon inetd est correctement configuré. Vous devez trouver dans /etc/inetd.conf quelque chose de ce genre :
#:MAIL: Mail, news and uucp services. imap2 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/imapd imap3 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/imapd
Vérifiez également dans /etc/services la présence de ces lignes :
imap2 143/tcp imap # Interim Mail Access Proto v2 imap2 143/udp imap
relancez votre super démon si vous avez modifié sa configuration, et ça devrait fonctionner.
Vous voyez, ce n'est pas bien compliqué, et ce sera largement suffisant dans bien des cas.
Les solutions les plus simples n'étant pas forcément les plus attrayantes, nous allons maintenant voir une solution qui utilise Cyrus, le serveur de choc.
MTA : Postfix
IMAP : Cyrus en version 2.1
Authentification des utilisateurs par saslauth.
L'objectif est de monter un système indépendant des comptes d'utilisateurs UNIX (Authentification par saslauth via une base de données indépendante des comptes utilisateurs), avec un serveur IMAP proposant le plus de fonctionnalités possibles, et utilisant le format Maildir, plus sûr (Cyrus).
Pour l'authentification, nous aurions pu utiliser une base de données de type MySQL ou un annuaire LDAP. Le sado-masochisme a toutefois ses limites, et ça nous mènerait trop loin hors du sujet initial.
Un outil comme web-cyradm propose une solution en utilisant MySQL. Cet outil, pour prometteur qu'il soit, ne semble pas encore assez mature. Il n'est pas le seul dans ce genre, replex semble être un concurrent très proche.
Avec ce trio, nous aurions pu réaliser un système de messagerie performant :
Administrable par une interface web (web-cyradm),
capable de créer des boîtes aux lettres pour des domaines virtuels (des domaines autres que celui auquel appartient le serveur),
capable de gérer les quotas pour chaque boîte, sans passer par les quotas des utilisateurs UNIX,
la possibilité de gérer les redirections et les répondeurs,
gérer de multiples alias pour une même boîte aux lettres,
gérer un compte "catch all" c'est à dire un collecteur de messages destinés à votre domaine, mais à des utilisateurs qui n'existent pas.
Mais attention, ça peut vite devenir très compliqué...
Ici, nous nous contenterons de faire fonctionner cyrus d'une façon "simple".
Les paquetages existent pour la Mandrake 9.2 dans les contributions. Vous pouvez faire ça sur Mandrake, mais ce qui suit est décrit sur Debian. Ce sera probablement plus compliqué, mais par la suite, c'est tout de même plus facile de faire évoluer une Debian qu'une Mandrake.
Il faut la version 2.1 ou supérieure de Cyrus. Elle n'existe pas "packagée" dans la Debian stable. Autrement dit vous avez le choix entre :
Compiler sur votre version stable le paquetage source "testing"
utiliser la Debian "testing"
Nous ferons ça sur une testing.
Comme il n'est pas question ici d'écrire une encyclopédie, nous supposons que vous savez faire les choses suivantes :
installer une Debian,
la passer en version "testing",
installer Postfix à la place d'Exim (Si vous êtes un expert d'Exim, gardez Exim. Il faut juste être capable de faire comprendre à Exim qu'il doit utiliser Cyrus pour le transport local,
savoir en gros comment fonctionne PAM (Pluggable Authentication Modules),
Si vous savez faire tout cela, vous pourrez faire aussi la suite. Sinon, ça risque de se solder par un échec.
C'est lui qui va recevoir les mails locaux, gérer les boîtes aux lettres des inscrits et leur servir leurs messages via IMAP (ou POP3).
Cyrus, pour authentifier les clients, s'appuie sur SASL. SASL peut authentifier depuis par plusieurs méthodes :
sasldb, une base de données au format Berkeley,
shadow, en utilisant les comptes UNIX locaux,
pam, en utilisant à peu près n'importe quoi.
Dans le cas le plus simple, shadow, chaque utilisateur devra disposer d'un compte local, ce n'est pas ce qui nous intéresse.
sasldb, c'est déjà mieux, les utilisateurs auront un compte dans la base sasldb, indépendant des comptes UNIX,
pam, c'est le moyen le plus souple. On pourra utiliser un annuaire LDAP ou une base de données MySQL ou même sasldb, via pam.
La première chose à faire, une fois la configuration vue plus haut réalisée, est d'installer Cyrus21 et saslauthd.
Voici la liste des paquetages. Attention, à ceux qui sont installés (ii). Tous ceux qui sont listés ici ne sont pas forcément nécessaires.
cyclope:~# dpkg -l '*cyrus*' Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-========================-========================-================================================================ pn cyrus-admin <none> (no description available) pn cyrus-common <none> (no description available) pn cyrus-dev <none> (no description available) pn cyrus-imapd <none> (no description available) pn cyrus-nntp <none> (no description available) pn cyrus-pop3d <none> (no description available) ii cyrus21-admin 2.1.14-1 Cyrus mail system (administration tool) ii cyrus21-clients 2.1.14-1 Cyrus mail system (test clients) ii cyrus21-common 2.1.14-1 Cyrus mail system (common files) pn cyrus21-dev <none> (no description available) ii cyrus21-doc 2.1.14-1 Cyrus mail system (documentation files) un cyrus21-docs <none> (no description available) ii cyrus21-imapd 2.1.14-1 Cyrus mail system (IMAP support) pn cyrus21-murder <none> (no description available) ii cyrus21-pop3d 2.1.14-1 Cyrus mail system (POP3 support) un cyrus22-common <none> (no description available) ii libauthen-sasl-cyrus-per 0.07-1 Perl extension for Cyrus SASL library un libcyrus-imap-perl <none> (no description available) ii libcyrus-imap-perl21 2.1.14-1 Interface to Cyrus imap client imclient library
cyclope:~# dpkg -l '*sasl*' Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-========================-========================-================================================================ pn gsasl <none> (no description available) ii libauthen-sasl-cyrus-per 0.07-1 Perl extension for Cyrus SASL library ii libauthen-sasl-perl 2.05-1 Authen::SASL - SASL Authentication framework pn libgsasl1 <none> (no description available) pn libgsasl1-dev <none> (no description available) un libsasl-bin <none> (no description available) pn libsasl-dev <none> (no description available) pn libsasl-digestmd5-des <none> (no description available) pn libsasl-digestmd5-plain <none> (no description available) pn libsasl-gssapi-heimdal <none> (no description available) pn libsasl-gssapi-mit <none> (no description available) pn libsasl-krb4-mit <none> (no description available) un libsasl-modules <none> (no description available) un libsasl-modules-krb5 <none> (no description available) un libsasl-modules-nonus <none> (no description available) ii libsasl-modules-plain 1.5.27-3.5 Basic Pluggable Authentication Modules for SASL ii libsasl2 2.1.12-1 Authentication abstraction library pn libsasl2-dev <none> (no description available) un libsasl2-digestmd5-des <none> (no description available) pn libsasl2-digestmd5-plain <none> (no description available) pn libsasl2-gssapi-mit <none> (no description available) pn libsasl2-krb4-mit <none> (no description available) ii libsasl2-modules 2.1.12-1 Pluggable Authentication Modules for SASL ii libsasl2-modules-gssapi- 2.1.12-1 Pluggable Authentication Modules for SASL ii libsasl2-modules-kerbero 2.1.12-1 Pluggable Authentication Modules for SASL pn libsasl2-modules-plain <none> (no description available) ii libsasl7 1.5.27-3.5 Authentication abstraction library. ii sasl-bin 1.5.27-3.5 Programs for manipulating the SASL users database ii sasl2-bin 2.1.12-1 Programs for manupulating the SASL users database
Là encore, tous ne sont pas forcément nécessaires.
Le paquetage sasl2-bin contient les outils nécessaires pour gérer l'authentification sasl :
cyclope:~# dpkg -L sasl2-bin /. /usr /usr/share /usr/share/man /usr/share/man/man8 /usr/share/man/man8/sasldblistusers2.8.gz /usr/share/man/man8/saslpasswd2.8.gz /usr/share/man/man8/sasldbconverter2.8.gz /usr/share/man/man8/sasltestsuite.8.gz /usr/share/man/man8/saslauthd.8.gz /usr/share/man/man8/testsaslauthd.8.gz /usr/share/doc /usr/share/doc/sasl2-bin /usr/share/doc/sasl2-bin/README.Debian /usr/share/doc/sasl2-bin/copyright /usr/share/doc/sasl2-bin/changelog.gz /usr/share/doc/sasl2-bin/changelog.Debian.gz /usr/sbin /usr/sbin/saslauthd /usr/sbin/sasltestsuite /usr/sbin/testsaslauthd /usr/sbin/sasldblistusers2 /usr/sbin/saslpasswd2 /usr/sbin/sasldbconverter2 /etc /etc/default /etc/default/saslauthd /etc/init.d /etc/init.d/saslauthd
saslauthd, c'est le "daemon",
saslpasswd2 permet de créer des couples utilisateur/mot de passe,
sasldblistusers2 permet de lister les utilisateurs,
testsaslauthd permet de tester un "loggin".
Le fichier /etc/default/saslauthd a son importance :
cyclope:~# cat /etc/default/saslauthd # This needs to be uncommented before saslauthd will be run automatically START=yes # You must specify the authentication mechanisms you wish to use. # This defaults to "pam" for PAM support, but may also include # "shadow" or "sasldb", like this: # MECHANISMS="pam shadow" MECHANISMS="sasldb"
C'est parti...
# /etc/init.d/saslauthd restart Restarting SASL Authentication Daemon: saslauthd. #
# saslpasswd2 -c cyrus Password: Again (for verification): #Nous avons créé un utilisateur nommé cyrus, avec un mot de passe : passwd dans l'exemple. Bien entendu, essayez de choisir quelque chose de plus original. Cet utilisateur est destiné à devenir par la suite l'administrateur de Cyrus.
# sasldblistusers2 cyrus@cyclope: userPassword #l'utilisateur cyrus est bien créé (cyclope est le nom de la machine de test).
# testsaslauthd -u cyrus -p passwd 0: OK "Success." cyclope:/etc/pam.d#
saslauthd semble fonctionner correctement. Nous pouvons passer à cyrus.
Le paquetage cyrus21-admin contient :
# dpkg -L cyrus21-admin
/.
/usr
/usr/share
/usr/share/linda
/usr/share/linda/overrides
/usr/share/linda/overrides/cyrus21-admin
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/cyrus21-admin
/usr/share/icons
/usr/share/icons/cyradm.xpm
/usr/share/icons/mini
/usr/share/icons/mini/cyradm.xpm
/usr/share/doc
/usr/share/doc/cyrus21-admin
/usr/share/doc/cyrus21-admin/README.Debian
/usr/share/doc/cyrus21-admin/copyright
/usr/share/doc/cyrus21-admin/changelog.gz
/usr/share/doc/cyrus21-admin/changelog.Debian.gz
/usr/share/doc/cyrus21-admin/changelog.html.gz
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/cyradm.1.gz
/usr/share/man/man1/sieveshell.1.gz
/usr/bin
/usr/bin/cyradm
/usr/bin/sieveshell
/usr/lib
/usr/lib/menu
/usr/lib/menu/cyrus21-admin
cyradm est l'outil qui permettra de gérer les comptes imap.
Le paquetage cyrus21-imapd contient :
cyclope:/etc/pam.d# dpkg -L cyrus21-imapd /. /usr /usr/sbin /usr/sbin/squatter /usr/lib /usr/lib/cyrus /usr/lib/cyrus/bin /usr/lib/cyrus/bin/imapd /usr/share /usr/share/man /usr/share/man/man8 /usr/share/man/man8/squatter.8.gz /usr/share/man/man8/idled.8.gz /usr/share/man/man8/imapd.8.gz /usr/share/doc /etc /etc/pam.d /etc/pam.d/imap /usr/share/doc/cyrus21-imapd
Quant au paquetage cyrus21-common :
cyclope:/etc/pam.d# dpkg -L cyrus21-common /. /etc /etc/pam.d /etc/pam.d/lmtp /etc/pam.d/sieve /etc/default /etc/default/cyrus21 /etc/logcheck /etc/logcheck/ignore.d.server /etc/logcheck/ignore.d.server/cyrus21 /etc/logcheck/ignore.d.workstation /etc/logcheck/ignore.d.workstation/cyrus21 /etc/cyrus.conf /etc/imapd.conf /etc/init.d /etc/init.d/cyrus21 /etc/cron.daily /etc/cron.daily/cyrus21-common /usr /usr/sbin /usr/sbin/cyrdeliver /usr/sbin/cyrdump /usr/sbin/cyrmaster /usr/sbin/cyrquota /usr/sbin/cyrreconstruct /usr/sbin/cyrus-makedirs /usr/sbin/ctl_cyrusdb /usr/sbin/ctl_deliver /usr/sbin/ctl_mboxlist /usr/sbin/cvt_cyrusdb /usr/sbin/chk_cyrus /usr/sbin/ipurge /usr/sbin/tls_prune /usr/sbin/mbpath /usr/lib /usr/lib/cyrus /usr/lib/cyrus/upgrade /usr/lib/cyrus/upgrade/convert-sieve.pl /usr/lib/cyrus/upgrade/dohash /usr/lib/cyrus/upgrade/rehash /usr/lib/cyrus/upgrade/undohash /usr/lib/cyrus/upgrade/translatesieve /usr/lib/cyrus/upgrade/upgradesieve /usr/lib/cyrus/cyrus-db-types.txt /usr/lib/cyrus/cyrus-hardwired-config.txt /usr/lib/cyrus/bin /usr/lib/cyrus/bin/lmtpd /usr/lib/cyrus/bin/timsieved /usr/lib/cyrus/bin/notifyd /usr/lib/cyrus/bin/fud /usr/lib/cyrus/get-backtrace.gdb /usr/share /usr/share/snmp /usr/share/snmp/mibs /usr/share/snmp/mibs/CYRUS-MASTER-MIB.txt /usr/share/linda /usr/share/linda/overrides /usr/share/linda/overrides/cyrus21-common /usr/share/lintian /usr/share/lintian/overrides /usr/share/lintian/overrides/cyrus21-common /usr/share/doc /usr/share/doc/cyrus21-common /usr/share/doc/cyrus21-common/README.Debian.gz /usr/share/doc/cyrus21-common/README.Debian.debug.gz /usr/share/doc/cyrus21-common/README.Debian.simpleinstall.gz /usr/share/doc/cyrus21-common/README.postfix.gz /usr/share/doc/cyrus21-common/changelog.Debian.gz /usr/share/doc/cyrus21-common/copyright /usr/share/doc/cyrus21-common/NEWS.Debian.gz /usr/share/doc/cyrus21-common/changelog.gz /usr/share/doc/cyrus21-common/UPGRADE.Debian.gz /usr/share/doc/cyrus21-common/README.Debian.database.gz /usr/share/doc/cyrus21-common/changelog.html.gz /usr/share/man /usr/share/man/man5 /usr/share/man/man5/cyrus.conf.5.gz /usr/share/man/man5/imapd.conf.5.gz /usr/share/man/man8 /usr/share/man/man8/mbpath.8.gz /usr/share/man/man8/timsieved.8.gz /usr/share/man/man8/notifyd.8.gz /usr/share/man/man8/lmtpd.8.gz /usr/share/man/man8/ctl_cyrusdb.8.gz /usr/share/man/man8/ctl_deliver.8.gz /usr/share/man/man8/ctl_mboxlist.8.gz /usr/share/man/man8/cvt_cyrusdb.8.gz /usr/share/man/man8/chk_cyrus.8.gz /usr/share/man/man8/fud.8.gz /usr/share/man/man8/ipurge.8.gz /usr/share/man/man8/cyrdeliver.8.gz /usr/share/man/man8/cyrmaster.8.gz /usr/share/man/man8/cyrreconstruct.8.gz /usr/share/man/man8/cyrquota.8.gz /usr/share/man/man8/cyrdump.8.gz /usr/share/man/man8/cyrus-makedirs.8.gz /usr/share/man/man8/tls_prune.8.gz /var /var/lib /var/lib/cyrus /var/spool /var/spool/cyrus /var/spool/sieve /var/run /var/run/cyrus /var/run/cyrus/socket /etc/sieve /usr/lib/cyrus/bin/quota /usr/lib/cyrus/bin/reconstruct
Il n'y a à priori rien à modifier dans la configuration par défaut de cyrus. Pour imapd, ça va être différent :
Le man imapd.conf vous donnera tous les détails, pour l'instant, nous devons surtout prêter attention à trois lignes :
admins: cyrus
Il faut indiquer qui sera le (ou les) administrateur(s) de cyrus imapd. Autant choisir tout de suite le compte que nous avons créé tout à l'heure, parce que la seconde ligne qui nous intéresse :
sasl_pwcheck_method: saslauthd
indique la méthode d'authentification. Ce sera obligatoirement SASL, mais SASL peut utiliser divers moyens, nous choisissons saslauthd, puisque nous l'avons testée avec succès.
Enfin :
servername: cyclope.maison.mrs
servername doit indiquer le nom complètement qualifié de l'hôte de cyrus.
Bien. Cyradm devrait fonctionner.
# /etc/init.d/cyrus21 restart Stopping Cyrus IMAPd: cyrmaster. Waiting for complete shutdown... Starting Cyrus IMAPd: cyrmaster.
cyclope:/etc/pam.d# cyradm --user cyrus localhost IMAP Password: cyclope>Ben voilà... Heureusement, il y a une aide en ligne :
cyclope> 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 cyclope>commençons par un "listmalbox" :
cyrus> listmmailbox cyrus>C'est vide. C'est normal, nous n'avons encore rien fait.
cyclope> createmailbox user.essai0 cyclope> lm user.essai0 (\HasNoChildren) cyclope>en voilà un de fait. Voyons les droits :
cyclope> listaclmailbox user.essai0 essai0 lrswipcda cyclope>seul essai0 a tous les droits sur cette boîte aux lettres. D'ailleurs :
cyclope> deletemailbox user.essai0 deletemailbox: Permission denied cyclope>même l'administrateur cyrus ne peut détruire cette boîte. Du moins, pas si facilement.
Faisons un petit tour sur le serveur, pour voir. L'installation de cyrus a construit toute une arborescence dans /var/spool/cyrus. Je vous passe les détails, pour aller directement dans :
cyclope:/var/spool/cyrus/mail/e/user/essai0# ls cyrus.cache cyrus.header cyrus.index cyclope:/var/spool/cyrus/mail/e/user/essai0#Comme c'est peut-être pas clair, détaillons un peu.
- Jusqu'à /var/spool/cyrus/mail/e/ c'est l'installation de cyrus qui a créé l'arborescence. Vous trouverez un répertoire par lettre de l'alphabet, ils sont tous vides, sauf le "e".
- Dans le "e", user/essai0 a bien entendu été créé lorsque l'on a créé la BAL avec cyradm. Les trois fichiers inclus également.
mailbox_transport = cyrus #mailbox_command = procmail -a "$EXTENSION"
Spécifier le transport pour mailbox et supprimer l'appel de la commande procmail.
# The Cyrus deliver program has changed incompatibly, multiple times. cyrus unix - n n - - pipe flags=R user=cyrus argv=/usr/sbin/cyrdeliver -e -m "${extension}" ${user} # Cyrus 2.1.5 (Amos Gouaux) #cyrus unix - n n - - pipe # user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}Comme vous pouvez le constater, l'agent de livraison de cyrus peut changer de nom et de façon de fonctionner, suivant la version. Il faut donc faire bien attention à ce détail pour que la livraison locale fonctionne correctement avec cyrus. Faites le bon choix en fonction de la version que vous utilisez.
A titre d'exemple, voici le master.cf de la configuration utilisée pour rédiger cet article :
# ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (50) # ========================================================================== smtp inet n - y - - smtpd #628 inet n - n - - qmqpd pickup fifo n - y 60 1 pickup cleanup unix n - y - 0 cleanup qmgr fifo n - n 300 1 qmgr #qmgr fifo n - n 300 1 nqmgr rewrite unix - - y - - trivial-rewrite bounce unix - - y - 0 bounce defer unix - - y - 0 bounce flush unix n - y 1000? 0 flush smtp unix - - y - - smtp showq unix n - y - - showq error unix - - y - - error local unix - n n - - local virtual unix - n y - - virtual lmtp unix - - y - - lmtp # # Interfaces to non-Postfix software. Be sure to examine the manual # pages of the non-Postfix software to find out what options it wants. # The Cyrus deliver program has changed incompatibly. # cyrus unix - n n - - pipe flags=R user=cyrus argv=/usr/sbin/cyrdeliver -e -m ${extension} ${user} uucp unix - n n - - pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient) ifmail unix - n n - - pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) bsmtp unix - n n - - pipe flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -d -t$nexthop -f$sender $recipient scalemail-backend unix - n n - 2 pipe flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension} # only used by postfix-tls #smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o #smtpd_sasl_auth_enable=yes #587 inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=no proxymap unix - - n - - proxymap trace unix - - - - 0 bounce verify unix - - - - 1 verifyIl s'agit ici de la version 2.1.17 de cyrus et de la version 2.1.5 de Postfix
# saslpasswd2 -c essai0 Password: Again (for verification): # sasldblistusers2 essai0@cyclope: userPassword cyrus@cyclope: userPassword # testsaslauthd -u essai0 -p essai0 0: OK "Success." cyclope:/var/spool/cyrus/mail/e/user/essai0#
# mail essai0@cyclope.maison.mrs Subject: hello world coucou . Cc: #
Nov 15 17:45:40 cyclope postfix/pickup[1072]: AA9B1F95: uid=0 from=<root> Nov 15 17:45:40 cyclope postfix/cleanup[1245]: AA9B1F95: message-id=<20031115164540.AA9B1F95@cyclope.maison.mrs> Nov 15 17:45:40 cyclope postfix/qmgr[491]: AA9B1F95: from=<root@cyclope.maison.mrs>, size=315, nrcpt=1 (queue active) Nov 15 17:45:41 cyclope postfix/pipe[1249]: AA9B1F95: to=<essai0@cyclope.maison.mrs>, relay=cyrus, delay=1, status=sent (cyclope.maison.mrs)
C'est passé.
cyclope:/var/spool/cyrus/mail/e/user/essai0# ls -l total 16 -rw------- 1 cyrus mail 577 Nov 15 17:45 1. -rw------- 1 cyrus mail 584 Nov 15 17:45 cyrus.cache -rw------- 1 cyrus mail 152 Nov 15 16:27 cyrus.header -rw------- 1 cyrus mail 128 Nov 15 17:45 cyrus.index cyclope:/var/spool/cyrus/mail/e/user/essai0#
Il y a un nouveau fichier. serait-ce le message ?
# cat 1. Return-Path: <cyrus@cyclope.maison.mrs> Received: from cyclope.maison.mrs ([unix socket]) by cyclope.maison.mrs (Cyrus v2.1.14-IPv6-Debian-2.1.14-1) with LMTP; Sat, 15 Nov 2003 17:45:41 +0100 X-Sieve: CMU Sieve 2.2 Return-Path: <root@cyclope.maison.mrs> Received: by cyclope.maison.mrs (Postfix, from userid 0) id AA9B1F95; Sat, 15 Nov 2003 17:45:40 +0100 (CET) To: essai0@cyclope.maison.mrs Subject: hello world Message-Id: <20031115164540.AA9B1F95@cyclope.maison.mrs> Date: Sat, 15 Nov 2003 17:45:40 +0100 (CET) From: root@cyclope.maison.mrs (root) coucou #Oui, c'est le message. Jusque là, tout fonctionne.
# telnet cyclope.maison.mrs 143 Trying 192.168.0.16... Connected to cyclope.maison.mrs. Escape character is '^]'. * OK cyclope.maison.mrs Cyrus IMAP4 v2.1.14-IPv6-Debian-2.1.14-1 server ready 001 login essai0 essai0 001 OK User logged in # Bien ! déjà l'identification fonctionne 002 select INBOX * FLAGS (\Answered \Flagged \Draft \Deleted \Seen) * OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)] * 1 EXISTS * 1 RECENT * OK [UNSEEN 1] * OK [UIDVALIDITY 1068910075] * OK [UIDNEXT 2] 002 OK [READ-WRITE] Completed # Bon signe, il existe bien un message dans la BAL 003 fetch 1 BODY[TEXT] * 1 FETCH (FLAGS (\Recent \Seen) BODY[TEXT] {10} coucou ) 003 OK Completed # pas la peine de vérifier dans le détail de l'en-tête, c'est bien sûr le bon message 004 logout * BYE LOGOUT received 004 OK Completed Connection closed by foreign host. cyclope:/var/spool/cyrus/mail/e/user/essai0#
Et voilà le travail. Nous savons maintenant configurer :
et nous savons utiliser :
Nous avons vu en créant une boîte aux lettres avec cyradm que le point (.) était utilisé comme séparateur hiérarchique dans l'arborescence des dossiers...
Comment faire alors, si l'on souhaite créer des utilisateurs qui ont un point dans le nom ?
On ne peut pas. Sauf si l'on ajoute dans imapd.conf la ligne :
unixhierarchysep: yes
Dans ce cas, le séparateur devient un "slash" (/) et le point devient utilisable dans les noms.
Nous devrons écrire alors :
cyclope> createmailbox user/essai0 cyclope> lm user/essai0 (\HasNoChildren) cyclope>
Vous préférerez probablement utiliser cette possibilité.