====== Installation et configuration d'un serveur IMAP avec Dovecot ====== ===== Introduction ===== [[http://dovecot.org/|Dovecot]] est un serveur POP et IMAP léger, simple à configurer et nécessitant peu de ressources pour fonctionner. Il dispose également d'un certain nombre de plugins intéressants. Nous verrons comment l'installer et le configurer dans une configuration de base (pas de passage par une base de données ou autre). ===== Installation ===== L'installation de Dovecot est facile : apt-get install dovecot-imapd FIXME Cette commande ne fonctionne pas avec Ubuntu 9.10 et 10.4. Avec Ubuntu 10.4, il faut taper: sudo apt-get install dovecot-imapd Vous pouvez ensuite lancer le service tout simplement avec : service dovecot start ===== Configuration ===== Le fichier de configuration de Dovecot se trouve dans ''/etc/dovecot/dovecot.conf'' et est très bien documenté. Voici quelques réglages nécessaires. ==== Protocoles ==== Si vous souhaitez faire de l'IMAP, vous devrez indiquer la ligne ''protocols'' suivante : protocols = imap Si vous souhaitez utiliser IMAP et SSL, vous devrez indiquer le protocole ainsi que l'emplacement de votre certificat et clé SSL : protocols = imaps ssl_cert_file = /chemin/vers/votre/certificat/ssl ssl_key_file = /chemin/vers/votre/clé/ssl ==== Authentification ==== Le module d'authentification de Dovecot est très complet et permet de la réaliser de nombreuses manières. Si vous souhaitez simplement utiliser l'authentification de vos utilisateurs sur le serveur, il suffit d'ajouter (ou modifier) la ligne suivante dans le module ''auth'' mechanisms = plain login ==== Emplacement des messages ==== Dovecot est capable d'accéder aux messages stockés au format Maildir ou Mbox. Si votre serveur SMTP délivre les messages dans un répertoire ''Maildir'' (au format Maildir donc) situé dans le répertoire racine de l'utilisateur, vous indiquerez alors : mail_location = maildir:~/Maildir Dovecot fournit une commande ''maildirmake.dovecot'' permettant de créer un Maildir si vous en avez besoin. ==== Ressources utilisées ===== Si vous n'avez qu'une seule part, il peut être intéressant de réduire encore un peu plus les ressources utilisées par Dovecot. Voici par exemple quelques options de configuration possibles : login_process_per_connection = no login_processes_count = 2 login_max_processes_count = 20 ==== C'est terminé ==== Une fois configuré et relancé (service dovecot restart) votre serveur doit correctement répondre sur le port 143 (imap) et/ou 993 (imaps) selon votre configuration. Vous pourrez alors relever vos messages. ===== Bonus 1 : authentification SASL avec Postfix ===== Tous ceux qui ont déjà eu à configurer l'authentification SASL pour Postfix savent qu'il s'agit d'un chemin parfois compliqué. Bonne nouvelle, vous allez pouvoir profiter de Dovecot pour faire le boulot, vous simplifier la vie et économiser quelques services qui se chargeaient de cette tâche auparavant. Dans votre section ''auth default {...}'' vous pouvez activer l'export de l'authentification afin que Postfix puisse l'utiliser. À la fin de la section, ajoutez ceci : socket listen { client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } } Relancez Dovecot puis éditez le fichier ''/etc/postfix/main.cf'' afin d'y ajouter ceci : smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth Bien sûr, vous prendrez soin de configurer tout ce qui se rapporte à l'authentification dans Postfix et qui n'a rien à voir avec ce tutoriel. ===== Bonus 2 : Apprentissage du spam ===== Filtrer le spam avec Spamassassin, par exemple, est assez simple à mettre en place. Ce qui l'est moins est généralement de maintenir un apprentissage des messages "spam" ou "non spam". Évidemment, vous pouvez vous connecter en SSH à votre serveur et lancer les commandes d'apprentissage à la main. Avouez que vous aimeriez que ça soit plus facile. Vous aimeriez peut-être que l'apprentissage d'un spam se déclenche dès qu'un message est déposé dans un dossier IMAP donné. Ou également quand un message sort de ce dossier (ce qui signifierait "non spam"). Tout ceci automatiquement. Dovecot, par le biais de son plugin ''antispam'' le permet. ==== Installation ==== Vous devez d'abord installer le paquet du plugin : apt-get install dovecot-antispam ==== Configuration ==== Toujours dans le fichier ''/etc/dovecot/dovecot.conf'', vous devez disposer d'une ligne : mail_plugins = antispam Ensuite, dans la section ''plugin {...}'', vous devez configurer votre plugin. Avant, voici ce que nous supposons : * Vous utilisez spamassassin en mode ''spamd'' et pouvez donc lui passer des commandes via ''spamc'' * Votre dossier de spam s'appelle ''Junk'' * Votre corbeille s'appelle ''Trash'' ou ''trash'' Si les paramètres de dossier sont différents, vous veillerez à la changer. Voici donc la configuration que nous ajoutons dans ''plugin {...}'' : antispam_spam = Junk antispam_trash = Trash;trash antispam_allow_append_to_spam = yes antispam_mail_sendmail = /etc/dovecot/antispam antispam_mail_sendmail_args = -u;%u;-L antispam_mail_spam = spam antispam_mail_notspam = ham antispam_mail_tmpdir = /tmp Quelques remarques. ''antispam_allow_append_to_spam'' rend le plugin actif. Vous constatez qu'un fichier ''/etc/dovecot/antispam'' est appelé comme commande remplaçant sendmail. Nous utilisons en effet cette technique pour appeler spamc. Nous aurions pu indiquer ''/usr/bin/spamc'' mais le plugin requiert un code retour de 0 et pas autre chose. ''spamc'' peut parfois retourner autre chose que 0 (si le message est trop volumineux par exemple). Vous devez donc créer un fichier ''/etc/dovecot/antispam'' : #!/bin/sh /usr/bin/spamc $@ exit 0 Et le rendre exécutable : chmod a+x /etc/dovecot/antispam Ce fichier ne fait rien d'autre qu'appeler ''spamc'' en lui passant les arguments données dans ''antispam_mail_sendmail_args'' puis quitter avec un code retour de 0. Vous pouvez consulter la page man ''antispam'' pour en savoir plus sur toutes les options de configuration du plugin. Une fois votre serveur relancé, vous pouvez tester le fonctionnement du plugin en regardant dans vos logs ''/var/log/mail.log''. Au moment où vous déplacez un message dans le dossier spam, vous devriez voir une ligne comme celle-ci : spamd: connection from localhost [127.0.0.1] at port 46885 spamd: setuid to xxxxx succeeded