Installation et configuration d'un serveur IMAP avec Dovecot

Introduction

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
Dernière modification: le 06/12/2014 à 20:30 par Frédéric D.