Configuration de Postfix

Passer à Maildir

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.

Installation de Dovecot

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.

Configuration de Dovecot

Contenu de dovecot-common

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 :

  • il sert aussi de documentation ;
  • il indique assez clairement les paramètres de configuration pris par défaut par les services dovecot.

En réalité, nous aurons très peu de choses à y mettre. Une première lecture rapide nous laisse entendre que :

  • il faudra indiquer quels services nous voulons activer (pop3 et imap dans un premier temps) ;
  • il faudra donner le chemin aux répertoires Maildir des utilisateurs ;
  • il faudra indiquer quelle méthode nous choisissons pour authentifier les utilisateurs.

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 :

  • mécanisme d'authentification en texte clair ;
  • le système utilisera PAM pour vérifier le mot de passe de l'utilisateur qui se connecte. Dovecot a installé un fichier dovecot dans /etc/pam.d dans ce but ;
  • c'est le fichier 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.

Démarrage

# /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.

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