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).
L'installation de Dovecot est facile :
apt-get install dovecot-imapd
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
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.
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
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
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
maildirmake.dovecot
permettant de créer un Maildir si vous en avez besoin.
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
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.
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.
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.
Vous devez d'abord installer le paquet du plugin :
apt-get install dovecot-antispam
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 :
spamd
et pouvez donc lui passer des commandes via spamc
Junk
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