Installer un serveur de mail sous Linux (2/3) : Dovecot

L'objectif de cette note en trois parties (au départ c'était une, mais c'est devenu trop long ! 😉 ) est d'installer un serveur de mail simple nous permettant d'envoyer et recevoir des mails, mais aussi de les consulter via une interface Web.

Pour réaliser ces fonctions, le serveur de mail sera composé des éléments suivants qui composeront chacun une note :

  • un serveur SMTP pour le transport des mails : Postfix
  • un serveur POP3/IMAP pour la récupération et gestion des mails depuis un client : Dovecot
  • un Webmail pour la gestion de ses mails en ligne : l'application RoundCube

Les installations seront réalisées à partir des codes sources, et non des packages de distribution. Elles peuvent donc être appliquées sur n'importe quelle distribution.

Le but n'est pas ici de monter une usine à gaz. Il s'agit simplement de monter un serveur de mails fonctionnel.

Nous reviendrons dans d'autres notes sur des notions plus avancées telles que l'authentification, la prise en charge SSL ou la gestion du multi-domaines.

Logiciels utilisés : Dovecot 2.0.8

Système d'exploitation : Debian  5.0, Linux 2.6.34

Note : dans cette note sera donc traitée la partie 2 (Dovecot).

Pour la partie 1 (Postfix) : http://blog.moncoindunet.fr/linux/installer-un-serveur-de-mail-sous-linux-13-postfix/

1 – Pré-requis

Des outils de compilation : make et g++. Le package libpam0g-dev est également requis par Dovecot pour la prise en charge de PAM.

Etant sur Debian, j'utilise apt-get pour les récupérer :

$ apt-get install g++ make libpam0g-dev

Je vous invite à vous rendre sur cette page pour récupérer le lien de la dernière version stable de Dovecot par ici : http://www.dovecot.org/download.html

Et on récupère le package qui va bien :

$ cd ~ 
$ wget http://www.dovecot.org/releases/2.0/dovecot-2.0.8.tar.gz

2 – Compiler et installer

Maintenant que le package Dovecot est téléchargé on peut le décompresser dans le répertoire /usr/local/src :

$ tar xvzf dovecot-2.0.8.tar.gz -C /usr/local/src
$ cd /usr/local/src/dovecot-2.0.8/

On peut maintenant configurer, compiler et installer en spécifiant deux options :

  • --prefix : chemin d'installation
  • --datarootdir : chemin des pages de manuel, la documentation, etc.
$ ./configure --prefix=/usr/local/dovecot --datarootdir=/usr/share
$ make
$ make install

Voilà, Dovecot est installé !

3 – Créer les utilisateurs

Dovecot requiert deux utilisateurs pour fonctionner (autre que root) : dovecot (utilisation interne) et dovenull (utilisation pendant la phase de connexion). Il faur donc les créer, avec leur groupe respectif :

$ groupadd dovecot
$ groupadd dovenull
$ useradd -r -g dovecot -c 'dovecot user' dovecot
$ useradd -r -g dovenull -c 'dovecot user' dovenull

4 – Modifier le PATH

Afin de pouvoir facilement utiliser les commandes fournies par Dovecot sans avoir à retaper toute l'arborescence, on va modifier la variable PATH des utilisateurs :

$ echo -e "dovecot=/usr/local/dovecot/bin\nPATH=\$PATH:\$dovecot" >> /etc/profile
$ . /etc/profile

5 – Configurer

5.1 – Copier la configuration par défaut

La configuration Dovecot se trouve dans un fichier nommé dovecot.conf, qui inclus les fichiers de configuration présents dans le répertoire conf.d.

Le package Dovecot fourni des exemples de fichiers de configuration, que nous allons donc utiliser en les copiant au bon emplacement :

$ cp /usr/share/doc/dovecot/example-config/dovecot.conf /usr/local/dovecot/etc/
$ cp -R /usr/share/doc/dovecot/example-config/conf.d /usr/local/dovecot/etc/
$ cd /usr/local/dovecot/etc

5.2 – Créer le fichier PAM

Pour utiliser l'authentification via PAM il faut créer la configuration Dovecot pour PAM :

$ vi /etc/pam.d/dovecot

Y mettre ces lignes :

auth    required        pam_unix.so
account required        pam_unix.so

5.3 – Modifier la configuration

Plusieurs éléments de la configuration par défaut peuvent être modifiés avant de passer aux tests.

5.3.1 – Adresse d'écoute et protocole

On peut spécifier une adresse IP d'écoute du serveur dans le fichier dovecot.conf (par défaut, le serveur écoute sur toutes les interfaces IPV4 & IPV6).

On peut également y spécifier les protocoles utilisé. Ici, on ne veut que de l'IMAP.

$ vi dovecot.conf

protocols = imap
listen = 192.168.0.1

5.3.2 – Emplacement des boites mails , gestion des locks et resynchronisation

L'emplacement et le type de stockage des boites mails peut être configuré dans le fichier mail.conf. Ici, nous choisissons un stockage de type Mailbox (un seul fichier par boite).

Pour conformité avec Postfix il faut également modifier l'ordre des méthodes de vérrouillage.

Il faut également spécifier le groupe permettant l'écriture dans le dossier des mails.

$ vi conf.d/10-mail.conf

mail_location = mbox:~/mail:INBOX=/var/mail/%u
...
mbox_read_locks = fcntl
mbox_write_locks = fcntl dotlock
...
mail_privileged_group = mail

5.3.3 – SSL

Pour les tests de bon fonctionnement en local nous n'allons pas utiliser SSL et donc activer les mots de passe en clair. Cette configuration se fait via les fichiers ssl.conf et auth.conf.

$ vi conf.d/10-auth.conf

disable_plaintext_auth = no

$ vi conf.d/10-ssl.conf

ssl = no
#ssl_cert = </etc/ssl/certs/dovecot.pem
#ssl_key = </etc/ssl/private/dovecot.pem

6 – Premier démarrage

On peut maintenant procéder au premier démarrage du serveur Dovecot :

$ /usr/local/dovecot/sbin/dovecot -c /usr/local/dovecot/etc/dovecot.conf

On peut vérifier que le serveur Dovecot a bien démarré et n'a pas remontée d'erreur en regardant le fichier de log /var/log/mail.log :

Dec 28 00:16:26 pouet dovecot: master: Dovecot v2.0.8 starting up (core dumps disabled)

Tout est bon ! On va pouvoir tester 🙂

7 – Tester

7.1 – Créer l'utilisateur de test

Pour tester, on va d'abord créer un … utilisateur de test ! (sisi).

Nous sommes dans une configuration de base, un utilisateur Dovecot est un utilisateur système Unix (mais qui n'a pas besoin de se connecter au système) auquel on attribue un mot de passe, qui sera utilisé lors de la connexion au serveur IMAP Dovecot.

$ useradd -m -s /bin/false test
$ passwd test

7.2 – Envoyer un mail de test

Pour tester l'accès à la boite de test via Dovecot/IMAP nous allons envoyer un mail dans cette boite :

$ echo "ceci est un mail de test" | sendmail test

7.3 – Se connecter et voir le mail

On peut maintenant se connecter à la boite afin de vérifier que nous voyons bien le mail reçu via Telnet (en jaune, les commandes tapées) :

$ telnet 192.168.0.1 143
Trying 192.168.0.1...
Connected to 192.168.0.1.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE AUTH=PLAIN] Dovecot ready.
a login test secret
a OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
b select inbox
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
* 1 EXISTS
* 1 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1272908161] UIDs valid
* OK [UIDNEXT 2] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
b OK [READ-WRITE] Select completed.

Petite explication de texte sur les commandes tapées :

  • telnet 192.168.0.1 : on se connecte au serveur IMAP
  • a login test secret : on se connecte avec l'utilisateur test et le mot de passe secret
  • b select inbox : on sélectionne la boite de réception

On peut alors voir que dans cette boite nouvellement créé il y a un mail (1 EXISTS) qui n'a pas encore été lu (1 RECENT). Il s'agit en fait du mail que nous venons d'envoyer.

Et voilà, un serveur IMAP tout beau tout neuf pour compléter une plate-forme de messagerie 🙂

 


Erreurs rencontrées

Problème : le serveur Dovecot ne démarre pas et affiche ce type de ligne dans les logs :

May  3 19:00:51 pouet dovecot: auth(default): Fatal: Support not compiled in for passdb driver 'pam'

Solution : installer les librairies PAM (package libpam0g-dev sous Debian) et recompiler Dovecot.

7 pensĂ©es sur “Installer un serveur de mail sous Linux (2/3) : Dovecot”

  1. Bonjour,
    Merci pour ce tuto qui m’a permis de configurer dovecot et postfix. J’ai ensuite installĂ© roundcube pour avoir Ă©galement un webmail. Malheureusement je bute maintenant sur un autre problĂšme : quand j’essaye de me logger dans roundcube avec le user de test crĂ©Ă© pour dovecot (et aussi avec n’importe quel autre user) , j’ai systĂ©matiquement une « erreur d’identification ». Je sais que roundcube n’est pas l’objet de ce tuto, mais si quelqu’un avait une idĂ©e, je le remercie d’avance

  2. Hello, I followed your tutorial and it’s very cool. Well my worries is the third part ie: « Webmail to manage your emails online: RoundCube the application. » Thank you in advance.

  3. Merci pour ce tuto.
    Il y a une petite erreur de config du user test Ă  la fin. Il faut juste l’associer au group mail sinon il aura un probleme d’accĂšs Ă  l’ouverture de la boite mail.
    Merci

Laisser un commentaire