Cyrus est un serveur IMAP à peu près aussi puissant que difficile à manipuler. Voici donc ma petit cuisine pour le mettre en oeuvre, le paramétrer, le sécuriser ainsi que quelques astuces pour sortir de quelques galères...
Alors donc, pourquoi utiliser Cyrus et pas le simplissime UW IMAP ? En fait les deux outils ne boxent simplement pas dans la même catégorie. UW-IMAP est petit démon d’une mise en œuvre ultra rapide (il suffit de l’installer pour que ça marche), utilisant la structure de stockage des mails natif d’UNIX. Le revers de cette simplicité est déjà son manque de fonctionnalité (gestion des ACL, langage Sieve, dossiers partagés ou multi-niveaux). Ensuite ce démon est très très lent lorsque le volume de courriels stocké devient trop important.
Cyrus quant à lui est un système complet disposant du langage Sieve (traitement automatique des courriels entrant au niveau serveur), l’utilisation d’une base de donnée pour le stockage (db4 en l’instance), le support des ACL, les dossiers multi-niveaux, les dossiers partagés entre utilisateur, etc.
Mais comme je le disais en introduction, Cyrus est aussi puissant que difficile à manipuler, voir même capricieux. Sa base de donnée n’est pas d’une fiabilité inattaquable, loin de là (ce n’est pas pour rien que Subversion a décollé dés qu’il ne l’a plus utilisé)..
En fait tout seul jusqu’à l’arrivée de dovecot qui après 5 ans de développement est arrivé en Avril 2007 à sa version finale 1.0. Dovecot vise la simplicité et la puissance. Et sur le papier c’est un outil très prometteur avec, comme subversion, la possibilité de changer de support de stockage (bases de données, mbox, etc), le support de toutes les fonctions IMAP, et ceci de manière performante. Il y a donc de très fortes chances, vu l’empressement que semble montrer Cyrus à évoluer, que Dovecot devienne LE serveur IMAP. « Devienne », car pour l’instant il est encore un peu tôt pour l’utiliser en production, en tout cas la dernière fois que j’ai pu le tester. Il manquait alors des fonctions importantes pour moi comme le partage des dossiers, le stockage en base de donnée relationnelle et l'implémentation Sieve était encore protozoaire. A suivre de très prés donc, mais en attendant, voyons comment mettre Cyrus en œuvre.
Tout d'abord il faut installer les paquets suivants :
L’installation du paquet sasl
est une des joyeusetés de Cyrus. Ce démon qu’il faut obligatoirement prend en effet en charge tous les aspects authentification.
Le serveur cyrus, comme son nom ne l'indique pas, permet de fonctionner selon les protocoles IMAP et IMAPS, mais aussi POP3 et POP3S. Un petite vérification d'usage pour vérifier que les ports associés à ces protocoles existent dans le fichier /etc/services qui doit contenir :
Deux fichiers sont responsables du paramétrage de cyrus : /etc/imapd.conf et /etc/cyrus.conf. Le premier regroupe les paramètres de fonctionnement :
Le second fichier de configuration, /etc/cyrus.conf définit les services qui doivent être montés au démarrage (IMAP, POP3, etc...) ainsi que le nombre d’instances à exécuter en parallèle. Vous pouvez ainsi mettre en commentaire les services que vous ne comptez pas utiliser :
On peut maintenant lancer la gestion des mots de passes sasl par
Il faut maintenant donner un mot de passe à cyrus :
Et comme nous avons la joie de devoir utiliser sasl, il faut aussi changer le mot de passe qui lui est spécifique
Pour créer nos premières boites il faut déjà que le serveur soit lancé :
Il faut maintenant créer les boites aux lettres. Pour cela, nous allons nous connecter à Cyrus en tant qu'utilisateur Cyrus, créer la boite et changer son mot de passe, l'utilisateur de test sera bien évidement toto :
Maintenant imaginons que nous voulions renommer (ou déplacer) puis finalement détruire cette boite, il faut nous connecter en tant que toto qui a seul les droits d'administration dessus :
IMAP est un protocole « en clair », il est donc important lorsque l’on connecte un serveur Cyrus sur le monde exterieur de ne pas ouvrir le port IMAP mais plutôt sa version cryptée : IMAPS.
La première chose à faire est de générer ses certificats. Vous pouvez pour cela suivre ce tutorial. Ensuite il fait déplacer les 3 fichiers dans un dossier de votre choix, par exemple /var/lib/imapd/ssl.
Tout d'abord, placez le fichier ca.crt dans le dossier /etc/ssl/ca. Ensuite, il faut éditer le fichier /etc/imapd.conf pour modifier les 3 dernières lignes comme suit :
Ensuite, il faut décommenter la ligne correspondant à imaps dans /etc/cyrus.conf, sauver, et redémarrer cyrus.
Il y a deux manière (à ma connaissance) de faire communiquer. Soit les deux démons sont sur la même machine (méthode simple), soit les deux machines sont distantes l’une de l’autre, postfix cloîtré dans la DMZ et Cyrus sur la LAN, et il faut alors utiliser le protocole lmtp (Local Mail Transfert Protocol).
Il suffit de modifier le fichier /etc/postfix/main.conf pour avoir la ligne :
Ensuite dans /etc/postfix/master.conf il faut retrouver la ligne suivante :
Enfin dans /etc/cyrus.conf :
Une fois ces petits travaux effectués, relancez postfix, puis cyrus. Les deux serveurs vont alors utiliser le protocole LMTP pour communiquer via un socket unix.
Nous allons ici renseigner postfix pour envoyer son courrier sur le serveur imapd de cyrus. Pour cela, il faut éditer le fichier /etc/postfix/main.cf et chercher mailbox_transport pour renseigner comme suit :
Puis dans le fichier /etc/postfix/master.cf changer la ligne :
en
Enfin il suffit de relancez postfix, puis cyrus.
Maintenant de faire un test d'envoi pour vérifier que tout se passe bien (le fichier /var/log/postfix.log indique les éventuelles erreurs.
Il m'est arrivé d'obtenir une grosse corruption de la base des boîtes aux lettres. C'est l'horreur à plus d'un titre car la reconstruction /usr/lib/cyrus-imapd/reconstruct -m nous envoi joyeusement ballader. Les logs quant à eux contiennent un erreur typique, en boucle du genre : Bon, la solution car si quelqu'un me lit, il y a des chances qu'il soit sous une bonne dose de stress. Déjà, détente. Les données critiques ne sont pas dans /var/lib/imap mais dans /var/spool/imap. D'un côté les indexes de l'autre les messages. La première chose à faire, c'est d'arrêter tous les serveurs qui alimente cyrus (postfix/lmtp par exemple) pour ne pas perdre de mails entrant (vous avez tous des MX de secours configuré...). Maintant, si ce n'est déjà fait : backup !! Copier ces dossiers avec rsync quelque part en lieu sur. Ensuite, vous vous connectez en tant que cyrus su - cyrus et vous créer quelque part (disons en /var/lib/imap/restore_mb.sh) le script suivant :
se script se lance comme suit :
Le premier argument est la base de stockage des mails, le second un utilisateur qui deviendra propriétaire des boites partagées (si vous en avez). Le scripte basiquement fabrique un fichier texte de dump de type mailboxes.db équivalent à ce que la commande ctl_mboxlist -d aurait créé... Nous allons d'ailleurs utiliser cette même commande, avec -u en paramétrer pour reconstruire la base :
Voilà, il ne reste plus qu'à relancer cyrus et redonner les bons droits aux boites partagés.. ouf
))
- répondre
Larry Cow , le 1 February, 2008 - 11:53Juste une question: en attendant que Dovecot murisse, il y avait aussi Courier-IMAP, non? Bon, je l'ai lâché depuis un petit moment maintenant et je suis très content de Dovecot, mais de là à dire que Cyrus était seul dans son bac à sable...
- répondre
Ulhume, le 1 February, 2008 - 11:59@Larry Cow, Oui, tu as parfaitement raison, je vais corriger. Merci.
SInon, est-ce que ce que je dis sur DoveCot est encore valide ? Je sais que les choses bougent vite dans ce domaine.
- répondre
Dab, le 1 February, 2008 - 16:49Dans le dernier Linux Mag on nous explique la mise en oeuvre d'une messagerie avec Exim / Dovecot collé avec de l'openldap pour l'authentification, Dspam/Spamassassin/ClamAv pour l'anti spam/virus. Cet article est rédigé par un membre de gcu-squad ça doit donc tenir la route ? Je m'avance peut être n'ayant pas testé
- répondre
Ulhume, le 1 February, 2008 - 17:31Oh mais Dovecot tient définitivement la route, c'est juste qu'il me manque encore quelques fonctions clef. Dés que c'est validé, Cyrus part dans l'espace
Poster un nouveau commentaire