Table des matières
Configurer Dovecot
Avertissement
Dovecot offre la particularité d'avoir un système de configuration extrêmement mouvant d'une version à l'autre. Des paramètres apparaissent et disparaissent régulièrement, sont éclatés dans plusieurs fichiers… Ceci a beau être normal, le logiciel est relativement jeune, la version 1.0 datant d'avril 2007. La version 2.2.13 est distribuée avec Debian Jessie alors qu'à l'heure où ces lignes sont actualisées, la version officielle est la 2.2.24.
La configuration annoncée ici sera relative à la version 2.2.13.
Dans cette version, la configuration est éclatée en plusieurs (beaucoup de) fichiers situés dans /etc/dovecot/conf.d/
. Ici, 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'
driver
permet d'indiquer le type de la base.connect
donne les indications nécessaires pour se connecter à cette base.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.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
.