Première chose à faire, passer au format « Maildir ». C'est extrêmement simple, il suffit d'ajouter une ligne à notre /etc/postfix/main.cf
:
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
myhostname = cyrus.nain-t.net
myorigin = $myhostname
mydestination = $myhostname, localhost
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
relayhost =
mynetworks = 127.0.0.0/8 192.168.0.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
home_mailbox = Maildir/
Essayons :
mail prof Subject: Test Maildir Nous passons a Maildir . Cc:
Dans les logs :
Jun 3 14:22:58 cyrus postfix/pickup[20275]: 26D4D67D9E: uid=0 from=<root> Jun 3 14:22:58 cyrus postfix/cleanup[20287]: 26D4D67D9E: message-id=<20080603122258.26D4D67D9E@cyrus.nain-t.net> Jun 3 14:22:58 cyrus postfix/qmgr[20273]: 26D4D67D9E: from=<root@cyrus.nain-t.net>, size=329, nrcpt=1 (queue active) Jun 3 14:22:58 cyrus postfix/local[20289]: 26D4D67D9E: to=<prof@cyrus.nain-t.net>, orig_to=<prof>, relay=local, delay=0.05, delays=0.03/0.01/0/0, dsn=2.0.0, status=sent (delivered to maildir) Jun 3 14:22:58 cyrus postfix/qmgr[20273]: 26D4D67D9E: removed
Tout s'est bien passé. Mais où est allé notre message ? Est-il toujours dans /var/mail/ ? Non. Tout se passe désormais dans le répertoire de l'utilisateur :
# su prof prof@cyrus:~/Maildir/new$ cd ~ prof@cyrus:~$ ls Maildir prof@cyrus:~$ cd Maildir/ prof@cyrus:~/Maildir$ ls cur new tmp prof@cyrus:~/Maildir$ cd new/ prof@cyrus:~/Maildir/new$ ls 1212495778.V306I7b467M188615.cyrus prof@cyrus:~/Maildir/new$ cat 1212495778.V306I7b467M188615.cyrus Return-Path: <root@cyrus.nain-t.net> X-Original-To: prof Delivered-To: prof@cyrus.nain-t.net Received: by cyrus.nain-t.net (Postfix, from userid 0) id 26D4D67D9E; Tue, 3 Jun 2008 14:22:58 +0200 (CEST) To: prof@cyrus.nain-t.net Subject: Test Maildir Message-Id: <20080603122258.26D4D67D9E@cyrus.nain-t.net> Date: Tue, 3 Jun 2008 14:22:58 +0200 (CEST) From: root@cyrus.nain-t.net (root) Nous passons a Maildir prof@cyrus:~/Maildir/new$Dans le « home » de l'utilisateur, Postfix a créé un répertoire
Maildir
. Dedans, il y a 3 répertoires : cur
, new
et tmp
. C'est dans new
que Postfix range les messages entrants, un message par fichier. /var/mail/prof
n'a plus de service.
Reste maintenant à installer Dovecot, pour permettre d'exploiter à distance le contenu de ~/Maildir
, par l'entremise d'IMAP et éventuellement POP3.
Dovecot est fourni dans toutes les « bonnes » distributions GNU/Linux (et Debian en est une).
# aptitude search dovecot p dovecot-common - secure mail server that supports mbox and maildir mailboxes p dovecot-imapd - secure IMAP server that supports mbox and maildir mailboxes p dovecot-pop3d - secure POP3 server that supports mbox and maildir mailboxes
Dovecot est donc fourni sous la forme de trois paquets. Nous sommes ici pour être curieux, donc nous allons essayer aussi bien le POP3 que l'IMAP, (cependant, vous essayerez tout seul les possibilités de POP3 si le cœur vous en dit) :
# aptitude install dovecot-common dovecot-imapd dovecot-pop3d
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Lecture de l'information d'état étendu
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait
Construction de la base de données des étiquettes... Fait
Les NOUVEAUX paquets suivants vont être automatiquement installés :
dovecot-common libmysqlclient15off libpq4 libsqlite3-0 mysql-common
Les NOUVEAUX paquets suivants vont être installés :
dovecot-common dovecot-imapd dovecot-pop3d libmysqlclient15off libpq4 libsqlite3-0 mysql-common
0 paquets mis à jour, 6 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 3999ko d'archives. Après dépaquetage, 8377ko seront utilisés.
Voulez-vous continuer ? [Y/n/?]
...
Paramétrage de dovecot-common (1.0.rc15-2etch4) ...
adduser : Attention : ce répertoire personnel n'appartient pas à
l'utilisateur que vous êtes en train de créer.
Ajout de l'utilisateur « dovecot » au groupe « mail »...
Terminé.
Creating generic self-signed certificate: /etc/ssl/certs/dovecot.pem
(replace with hand-crafted or authorized one if needed).
Paramétrage de dovecot-imapd (1.0.rc15-2etch4) ...
Bon. Pourquoi des choses qui parlent de mysql, de sqlite et de papier hygiénique ?
Alors… D'abord, libpq
n'a rien à voir avec le rouleau de papier, c'est une librairie cliente de PostgreSQL, l'autre base de données populaire dans le monde GNU. Donc, clairement, Dovecot sait utiliser des bases de données SQL (Postfix aussi d'ailleurs). Ici, nous n'en aurons pas besoin, mais l'usage d'une base de données est bien pratique lorsque nous avons plusieurs domaines à gérer ainsi qu'un grand nombre d'utilisateurs, qui n'ont pas de compte Unix associé. Il s'agit de la gestion de domaines « virtuels » que nous aborderons dans le chapitre suivant.
C'est dans ce paquets que se trouve la structure de configuration :
# dpkg -L dovecot-common /. /etc /etc/ssl /etc/ssl/certs /etc/ssl/private /etc/dovecot /etc/dovecot/dovecot.conf /etc/dovecot/dovecot-ldap.conf /etc/dovecot/dovecot-sql.conf /etc/pam.d /etc/pam.d/dovecot /etc/init.d /etc/init.d/dovecot /usr /usr/sbin /usr/sbin/dovecot /usr/sbin/dovecotpw /usr/share ... /usr/share/doc ... /usr/share/man /usr/share/man/man1 /usr/share/man/man1/maildirmake.dovecot.1.gz /usr/lib ... /usr/bin /usr/bin/maildirmake.dovecot /var ...
Non seulement nous avons sql, mais il semble bien que ldap soit aussi utilisable…
A vue de nez, c'est /etc/dovecot/dovecot.conf
qui va nous être le plus utile pour ce que nous avons à faire. Ce fichier est assez particulier :
En réalité, nous aurons très peu de choses à y mettre. Une première lecture rapide nous laisse entendre que :
Peut-être que Debian a déjà fait pas mal de travail à notre place ?
# cat dovecot.conf | egrep -v -e '^[[:blank:]]*#|^$' protocols = log_timestamp = "%Y-%m-%d %H:%M:%S " mail_privileged_group = mail protocol imap { } protocol pop3 { pop3_uidl_format = %08Xu%08Xv } auth default { mechanisms = plain passdb pam { } userdb passwd { } user = root } dict { } plugin { }
A priori, pour ce que nous avons à faire, c'est presque bon :
dovecot
dans /etc/pam.d dans ce but ;passwd
qui sera utilisé comme base de donnée des utilisateurs. De ce fait, l'utilisateur sous le compte duquel dovecot va effectuer l'authentification devra ici être root
.
Voyez le dovecot.conf
d'usine pour tous les détails sur les divers modes d'authentification possibles.
Dans un premier temps, nous n'avons donc qu'à compléter la ligne protocols
comme suit :
protocols = pop3 imap
En ce qui concerne l'accès aux ~/Maildir, c'est l'option par défaut, donc pas besoin de le spécifier.
# /etc/init.d/dovecot restart Restarting mail server: dovecot.
# netstat -a | grep :pop tcp 0 0 *:pop3 *:* LISTEN # netstat -a | grep :imap tcp 0 0 *:imap2 *:* LISTEN
Il est à l'écoute.