====== Dovecot ====== ===== Passer à Maildir ===== Première chose à faire, passer au format de stockage des messages « Maildir ». C'est extrêmement simple; Postfix sait gérer ce format, 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/
Généralement, un simple ''postfix reload'' suffit pour que le serveur relise sa configuration. 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= 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=, size=329, nrcpt=1 (queue active) Jun 3 14:22:58 cyrus postfix/local[20289]: 26D4D67D9E: to=, orig_to=, 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). Aperçu de quelques paquets relatifs à Dovecot sur une Debian Jessie: # aptitude search dovecot ... p dovecot-core - secure POP3/IMAP server - core files ... p dovecot-imapd - secure POP3/IMAP server - IMAP daemon ... p dovecot-managesieved - secure POP3/IMAP server - ManageSieve server ... p dovecot-pop3d - secure POP3/IMAP server - POP3 daemon p dovecot-sieve - secure POP3/IMAP server - Sieve filters support ... Parmi les plus importants pour ce qui nous intéresse ici, relevons les paquets contenant le cœur du serveur, ce qui est nécessaire à la gestion des protocoles ''ipam'' et ''pop3'', ainsi que ''sieve'' qui permet le filtrage et le classement des messages directement à leur arrivée, donc sans l'intervention d'un quelconque MUA.
# aptitude install dovecot-imapd dovecot-pop3d

Les NOUVEAUX paquets suivants vont être installés :     
  dovecot-core{a} dovecot-imapd dovecot-pop3d

0 paquets mis à jour, 3 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 3 854 ko d'archives. Après dépaquetage, 8 772 ko seront utilisés.
Voulez-vous continuer ? [Y/n/?]
...
Paramétrage de dovecot-imapd (1.0.rc15-2etch4) ...
===== Configuration de Dovecot ===== La configuration du pigeonnier a beaucoup évolué, du moins dans sa forme sinon dans son esprit depuis son origine. Cette page a été «actualisée» avec la version 2.2.13 de Debian Jessie. Nous avons désormais une multitude de fichiers placés dans ''/etc/dovecot/conf.d'' tout en ayant toujours un ''/etc/dovecot/dovecot.conf''. Si nous le vidons de ses commentaires, il se résume à ceci: !include_try /usr/share/dovecot/protocols.d/*.protocol dict { } !include conf.d/*.conf !include_try local.conf autrement-dit à rien si ce n'est à des références vers d'autres fichiers. Comme ceci risquerait malgré tout de rester trop simple, nous avons également un ''/etc/default/dovecot''. Nous savons que ce type de fichier n'a en général d'influence que sur les scripts de démarrage. Par défaut, il ne contient que des commentaires: # Set to '0' to explicitly disable starting Dovecot #ENABLED=0 # Set to '1' to allow Dovecot daemons to produce core dumps #ALLOW_COREDUMPS=1 ce qui est très bien comme ça. ==== /usr/share/dovecot/protocols.d/ ==== Avec notre installation, il n'y a que deux fichiers, ''imapd.protocol'' et ''pop3d.protocol''. Par curiosité voyons ce qu'il y a dans ''imapd.protocol'': protocols = $protocols imap Voilà qui promet... ==== conf.d/ ==== Ici, c'est autre chose, la liste des fichiers présents ne présage rien de bon: ls -1 conf.d 10-auth.conf 10-director.conf 10-logging.conf 10-mail.conf 10-master.conf 10-ssl.conf 10-tcpwrapper.conf 15-lda.conf 15-mailboxes.conf 20-imap.conf 20-pop3.conf 90-acl.conf 90-plugin.conf 90-quota.conf auth-checkpassword.conf.ext auth-deny.conf.ext auth-dict.conf.ext auth-master.conf.ext auth-passwdfile.conf.ext auth-sql.conf.ext auth-static.conf.ext auth-system.conf.ext auth-vpopmail.conf.ext ==== local.conf ==== Ce fichier n'existe même pas, mais il est possible de le créer si l'on souhaite compliquer encore plus les choses (ou au contraire, les simplifier). En effet, ce fichier, s'il existait, serait lu en dernier et ce qu'il contiendrait écraserait tout le reste si nécessaire. ===== Premier essai ===== La question est //Est-ce que, avec la configuration par défaut, nous aurions des chances que ça marche ?// Et la réponse est: netstat -lapte | grep dovecot tcp 0 0 *:pop3 *:* LISTEN root 14267 3720/dovecot tcp 0 0 *:imap2 *:* LISTEN root 14295 3720/dovecot tcp6 0 0 [::]:pop3 [::]:* LISTEN root 14268 3720/dovecot tcp6 0 0 [::]:imap2 [::]:* LISTEN root 14296 3720/dovecot Donc il est permis d'espérer. Les ports pop3 et imap sont effectivement à l'écoute. Essayons... Depuis une console locale:
telnet localhost 143

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN] Dovecot ready.
10 capability
* CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN
10 OK Pre-login capabilities listed, post-login capabilities have more.

20 login prof epikoi
* CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES
THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS
LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS
SPECIAL-USE BINARY MOVE
20 OK Logged in
Tout ceci est bien encourageant... Essayons la même chose, mais depuis un autre nœud du réseau:
telnet cyrus.nain-t.net 143

Trying 192.168.60.115...
Connected to 192.168.60.115.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LOGINDISABLED] Dovecot ready.
Qu'est-ce à dire, ce ''LOGINDISABLED'' ? Essayons tout de même:
10 login prof epikoi

* BAD [ALERT] Plaintext authentication not allowed without SSL/TLS, but your client did it anyway.
If anyone was listening, the password was exposed.
10 NO [PRIVACYREQUIRED] Plaintext authentication disallowed on non-secure (SSL/TLS) connections.
Dovecot, par défaut, aurait donc des tendances paranoĩaques. S'il accepte en privé les connexions en clair, il n'accepte en public que TLS. L'attitude n'est pas absurde, mais du coup, il va nous falloir mettre les mains dans le cambouis car, qui ''TLS'' dit «chiffrement» donc «certificats X509». L'horizon s'obscurcit.