Configurer Dovecot

Avertissement

Dovecot offre la particularité d'avoir un fichier de configuration particulièrement mouvant. D'une version à l'autre, des paramètres apparaissent et disparaissent régulièrement. Ceci a beau être normal, le logiciel est jeune et la version 1.0 ne date que d'avril 2007, en est à la version 1.1.1 le 22 juin 2008, et n'est distribué qu'en version 1.0rc15 dur Debian Etch. Espérons que les choses vont maintenant se stabiliser.

La configuration annoncée ici n'est donc réputée valable que pour Dovecot 1.0 rc15.

Par rapport à la configuration vue au chapitre précédent, nous n'avons pas énormément de modifications à apporter. Dovecot devra principalement :

  • trouver les utilisateurs et les identifier à partir des informations de la base de données et non plus du fichier /etc/passwd ;
  • il devra également trouver l'emplacement du répertoire Maildir de chaque compte dans la base de données ;
  • il devra offrir à Postfix un transport non plus local mais virtuel.

Préparatifs

Commençons par créer un groupe et un utilisateur vmail, sans shell, qui disposera d'un répertoire /home/virtual/mail. Les UID et GID = 500 peuvent prendre une autre valeur disponible. Nous aurons besoin de cette valeur plus tard.

groupadd -g 500 vmail
useradd -g vmail -u 500 vmail -d /home/virtual/mail -s /bin/false -m

Accès à la base

Il y a dans /etc/dovecot un fichier abondamment documenté qui s'appelle dovecot-sql.conf. Nous devons commencer par celui-ci.

Fichier /etc/dovecot/dovecot-sql.conf débarrassé de ses commentaires :

driver =  mysql
connect = host=localhost dbname=vmail user=vmail password=epikoi
default_pass_scheme = MD5
password_query = SELECT password FROM mailbox WHERE username = '%u'
  1. driver permet d'indiquer le type de la base.
  2. connect donne les indications nécessaires pour se connecter à cette base.
  3. default_pass_scheme indique le mode de chiffrement des mots de passe. MD5 pour la version 1.0rc15, mais attention, c'est MD5-CRYPT à partir de la version 1.0rc16 et jusqu'à la prochaine fois.
  4. password_query permet de récupérer le mot de passe de l'utilisateur %u.

Dovecot

Le fichier dovecot.conf, débarrassé de ses commentaires, devrait ressembler à ceci :

protocols = imap imaps pop3 pop3s
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_location = maildir:/home/virtual/mail/%d/%n/Maildir

protocol imap {
}
  
protocol pop3 {
  pop3_uidl_format = %08Xu%08Xv
}
protocol lda {
  postmaster_address = sysop@nain-t.net
  hostname = cyrus.nain-t.net
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  sendmail_path = /usr/lib/sendmail
  auth_socket_path = /var/run/dovecot/auth-master
  mail_plugins = cmusieve
}
auth default {
  mechanisms = plain
  passdb pam {
  }
  passdb sql {
      args = /etc/dovecot/dovecot-sql.conf
  }
  userdb passwd {
  }
  userdb static {
    args = uid=vmail gid=vmail home=/home/virtual/mail/%d/%n
  }

  user = root
  socket listen {
    master {
      path = /var/run/dovecot/auth-master
      mode = 0600
      user = vmail
      group = vmail
    }
    client {
      path = /var/spool/postfix/private/auth
      mode = 0660
      user = postfix
      group = vmail
    }
  }
}
dict {
}
plugin {
}
Nous avons essentiellement ajouté ce qu'il fallait pour que Dovecot sache reconstituer le chemin absolu des Maildir et utilise les requêtes SQL décrites dans dovecot-sql.conf pour trouver le mot de passe.

Le paragraphe userdb static permet de définir de façon statique (c'est notre mode de fonctionnement) les UID et GID de l'utilisateur virtuel (vmail), ainsi qu'un répertoire home.

Notez que nous aurons ainsi :

  • le répertoire Maildir, celui où les messages vont venir se stocker, défini comme /home/virtual/mail/%d/%n/Maildir ;
  • le répertoire home du compte sera quant à lui /home/virtual/mail/%d/%n, ce qui est une structure similaire à celle que nous avions avec des « vrais » comptes Unix.

Le paragraphe master dans socket listen définit un « socket » qui sera nécessaire par la suite, lorsque nous utiliserons le deliver de Dovecot pour le transport virtuel.

Vérifications

Nous devirons déjà vérifier que l'utilisateur sysop@nain-t.net peut se connecter en IMAP et être authentifié :

# telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK Dovecot ready.
10 login sysop@nain-t.net epikoi
10 OK Logged in.
20 logout
* BYE Logging out
20 OK Logout completed.
Connection closed by foreign host.

Et dans les logs /var/log/mail.info :

Jul 15 18:30:22 cyrus dovecot: Dovecot v1.0.rc15 starting up
Jul 15 18:30:23 cyrus dovecot: auth-worker(default): mysql: Connected to localhost (vmail)
Jul 15 18:30:45 cyrus dovecot: ssl-build-param: SSL parameters regeneration completed
Jul 15 18:31:05 cyrus dovecot: imap-login: Login: user=<sysop@nain-t.net>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, secured
Jul 15 18:31:50 cyrus dovecot: IMAP(sysop@nain-t.net): Disconnected: Logged out

Une bonne chose de faite.

Allons faire un tour dans /home/virtual/mail :

cyrus:/home/virtual/mail# ls -l
total 0
drwx------ 3 vmail vmail 18 2008-07-15 18:40 nain-t.net

Ce répertoire, c'est Dovecot qui l'a créé lorsque sysop s'est connecté pour la première fois. Il est fort ce Dovecot. Mais voyons plus loin :

cyrus:/home/virtual/mail# cd nain-t.net/
cyrus:/home/virtual/mail/nain-t.net# ls -l
total 0
drwx------ 5 vmail vmail 36 2008-07-15 18:40 sysop

Et encore plus loin :

cyrus:/home/virtual/mail/nain-t.net# cd sysop/Maildir
cyrus:/home/virtual/mail/nain-t.net/sysop/Maildir# ls -l
total 0
drwx------ 2 vmail vmail 6 2008-07-15 18:40 cur
drwx------ 2 vmail vmail 6 2008-07-15 18:40 new
drwx------ 2 vmail vmail 6 2008-07-15 18:40 tmp

Toute la structure a été construite. Notez que le tout appartient à vmail.

Dernière modification:: le 03/03/2009 à 19:48
   
 
Cette création est mise à disposition sous un contrat Creative Commons. Creative Commons License