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 :
/etc/passwd
;
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
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
.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 :
Maildir
, celui où les messages vont venir se stocker, défini comme /home/virtual/mail/%d/%n/Maildir
;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.
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
.