« LINUX:Dovecot » : différence entre les versions

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
 
(5 versions intermédiaires par le même utilisateur non affichées)
Ligne 274 : Ligne 274 :
  tcp        0      0 0.0.0.0:995            0.0.0.0:*              LISTEN      6633/dovecot
  tcp        0      0 0.0.0.0:995            0.0.0.0:*              LISTEN      6633/dovecot


=[[LINUX:Dovecot-Tester|Tester l'accès à la boîte mail]]=
Comme dans l'article sur [[LINUX:Postfix|Postfix - serveur de messagerie]], on peut tester la connexion aux protocoles POP et IMAP via des scripts.
=[[LINUX:Dovecot-Aller plus loin|Aller plus loin]]=
Jusque maintenant, nous nous sommes basés sur une configuration de base légèrement modifiée. Mous allons proposer quelques améliorations.





Dernière version du 31 octobre 2025 à 12:50


retour au menu de concernant la messagerie


But

Dovecot est un serveur permettant aux clients de récupéré leurs messages électroniques que Postfix, le serveur de messageries a convoyé et mis dans leur boîte postale.

Nous ne considèrerons que les protocole POP et IMAP:

  • POP : port 110 (non crypté ou partiellement)
  • POPS : port 995 (crypté)
  • IMAP : port 143 (non crypté ou partiellement)
  • IMAPS : port 993 (crypté)

POP est chargé de récupérer les messages chez le client. Et IMAP sert à consulter et gérer les messages se trouvant sur le serveur.

Le schéma suivant donne un aperçu des interactions entre Postfix, Dovecot et les clients.



Dovecot permet l'utilisation d'autres protocoles tels Submission et LMTP. Ces deux derniers seront gérés par Postfix. Nous ne les aborderons pas ou indirectement.


Installation

Pour installer Dovecot, on lance la commande d'installation du package:

dnf install dovecot


Configuration

Les fichiers de configuration se trouve dans le répertoire "/etc/dovecot". Le fichier de configuration principal est "/etc/dovecot/dovecot.conf". Il fait appel aux fichiers se trouvant dans le sous-répertoire "/etc/dovecot/conf.d".

Nous allons en premier lieu, supprimer toutes les lignes en commentaires dans ces fichiers et ensuite tous les blocs de configuration qui n'ont pas de paramètres ainsi que les fichiers qui n'ont pas de paramètres et auxquels on ne fait pas référence pour les deux protocoles retenus: POP et IMAP.

Il existe une grande variété de méthodes d'authentification. Nous ne retiendrons que celle qui utilise celle de Linux via les fichiers "/etc/passwd" et "/etc/shadow".


Fichier "dovecot.conf"

Après nettoyage du fichier "/etc/dovecot/dovecot.conf", il reste:


protocols = imap pop3
listen = *
!include conf.d/*.conf

Explications:

  • protocols : définit les protocoles activés. On ne garde que POP3 et IMAP comme désiré.
  • listen : On ne garde que l'étoile qui ne permet que la couche IPV4
  • !include : On inclut dans la configuration, les fichiers de type ".conf" du sous-répertoire "conf.d". Dans ce répertoire "/etc/dovecot/conf.d", on y trouvera une série de fichiers de configurations qui regroupent chacun une partie de la configuration par thème et dans certains cas, des renvoies vers des fichiers de configurations secondaires (extensions ".ext").

Le nom de ce sous-répertoire et de ses fichiers peuvent être changés. Pour ma part, je renvoie vers un autre répertoire où je ne reprends que les fichiers et paramètres utilisés. Ceci me permet d'avoir une vision plus claire, épurée. Les fichiers du répertoire d'origine, intouché, pourront être adaptés par les mises à jour et ainsi servir de référence et d'exemple.


Fichiers du sous-répertoire "conf.d"

Nous garderons que quelques fichiers de ce sous-répertoire car après nettoyage, on s'aperçoit que nombre d'entre eux ne sont pas utilisés ou n’apportent rien car ils ne comportent aucune option.


Fichier "10-master.conf"

Ce fichier est important car les options qui nous concernent, y sont reprises par défaut:


service imap-login {
 inet_listener imap {
  port = 143
  ssl = no
 }
 inet_listener imaps {
  port = 993
  ssl = yes
 }
}
 
service pop3-login {
 inet_listener pop3 {
  port = 110
  ssl = no
 }
 inet_listener pop3s {
  port = 995
  ssl = yes
 }
}
 
service auth {
# Postfix smtp-auth
 unix_listener /var/spool/postfix/private/auth {
  mode = 0666
  user = postfix
  group = postfix
 }

Il définit les n° de ports des protocoles POP3 et IMAP sans ou avec cryptage SSL.

L'option "ssl" peut avoir deux valeurs:

  • "no" : accepte une communication non cryptée ou une approche de type STARTSSL si un certificat est présent et le paramètre directe "ssl=yes" est précisé (voir point suivant).
  • "yes" : accepte une approche de type SSL/TLS (voir point suivant).

Le dernier bloc permet aux processus de type SMTP (Submission et SMTPS) de Postfix d'utiliser l'authentification mise en place par Dovecot.


Fichier "10-ssl.conf"

Comme son nom l'indique, il concerne le cryptage SSL.


ssl = required
ssl_cert = </etc/pki/home/certs/home.pem
ssl_key = </etc/pki/home/private/home.key
ssl_cipher_list = PROFILE=SYSTEM

Comme désiré, le cryptage est activé à la première ligne qu'on a modifié ("ssl=required") et donc les autres options existantes doivent être adaptées. On y précise nos certificats. Voyez l'article sur l'Extension de la CA privée (V3) pour la création de certificats personnels. L'option "ssl=required" spécifie que le cryptage SSL/TLS est exigé.


Fichier "10-auth.conf"

On aborde ici la méthode d'authentification qui est explicitée dans le fichier "auth-system.conf.ext" inclus.


disable_plaintext_auth = yes
auth_mechanisms = plain login
!include auth-system.conf.ext

POP et IMAP utilisent le mode d'authentification PLAIN. Par contre, SMTP utilise habituellement le mode LOGIN. Le problème est que le mot de passe est envoyé en clair mais si c'est au travers du protocole SSL/TLS, il est crypté et d-donc ne pose pas de problème.


Fichier "auth-system.conf.ext"

La méthode d'authentification utilise celle d'Unix pilotée par la couche PAM. On ne change rien à ce fichier.


passdb {
  driver = pam
}
userdb {
  driver = passwd
}


Fichier "10-mail.conf"

Ce fichier défini l'emplacement des messages de l'utilisateur.


mail_location = maildir:~/Maildir:UTF-8

Comme défini dans la configuration de POSTFIX (option: "home_mailbox = Maildir/"), le format est "maildir" et se situe dans le répertoire "Maildir" situé à la racine de l'espace de l'utilisateur noté par le tilde "~/". On modifie la première ligne en conséquence avec l'option "mail_location".

Le paramètre ":UTF-8" permet que tout dossier créé par le client de messagerie de type IMAP, sera créé et apparaîtra sous LINUX avec le format UTF-8.

A la base, le protocole IMAP crée sur le serveur des fichiers et répertoires selon le codage "UTF-7-IMAP". Cette option ":UTF-8" redirige le codage "UTF-7-IMAP" vers le codage "UTF-8" utilisé sous Linux.

Si cette option n'était pas mise, la création du répertoire "Privé" sous IMAP créerait le répertoire sous Linux ".Priv&AOk-" dans le sous-répertoire "Maildir" de l'espace de l'utilisateur. Ce codage affecte la très grande majorité des caractères imprimables autres que ceux de la table ASCII 7 bits autrement dit anglais.

Dans son principe, les caractères de l'alphabet classique latin sans accent plus les chiffres (et quelques caractères spéciaux) restent inchangés. Mais si un caractère accentué (français,...) ou étranger (cyrillique, arabe,...) est rencontré, sa représentation Unicode est transformée selon le codage Base64 et pour être repérable, il est entouré en début par le caractère "&" et en fin par le caractère "-". Donc dans notre exemple, le caractère "é" devient "&AOK-".

On peut utiliser la commande suivante pour passer d'un codage à l'autre:

echo -n "Priv&AOk-" | iconv -f UTF-7-IMAP -t UTF-8

va donner: "Privé" et inversement la commande suivante effectue l'opération inverse:

echo -n "Privé" | iconv -f UTF-8 -t UTF-7-IMAP


Fichier "15-mailboxes.conf"

Il définit les noms de quelques dossiers standards dans une messagerie. Ils sont utilisés dans le protocole IMAP.


namespace inbox {
 inbox = yes
 type = private
 prefix =
 separator = .
 subscriptions = yes
  
 mailbox Drafts {
    special_use = \Drafts
    auto = subscribe
  }
  mailbox Junk {
    special_use = \Junk
    auto = subscribe
  }
  mailbox Trash {
    special_use = \Trash
    auto = subscribe
  }
  mailbox Sent {
    special_use = \Sent
    auto = subscribe
  }
  mailbox Archives {
    special_use = \Archive
    auto = subscribe
  }
}

Les messages arrivent dans l'espace de noms "inbox".

  • Cette endroit est spécifié par l'option "inbox = yes".
  • Cet espace est de type privé (option: "type = private").
  • Tout dossier qui sont créés pour cet espace de noms sous Linux sous le répertoire "Maildir" de l'espace de l'utilisateur Linux, commence par un ".". Par exemple, le dossier des SPAMs ("Junk") pour l'utilisateur "pdupont" sera nommé "/home/pdupont/Maildir/.Junk".
  • L'option "prefix =" sans argument spécifie que dans le client de messagerie de type IMAP, les différents dossiers seront présents directement dans l'arborescence des dossiers.

Explication des dossiers:

  • Inbox : dossier de réception des messages, non individualisé et implicite, se situe sous Linux directement dans le répertoire "Maildir" de l'utilisateur.
  • Drafts : dossier des brouillons
  • Junk : dossier pour les SPAMs
  • Trash : dossier des messages détruits
  • Sent : dossier pour les messages envoyés
  • Archive : dossier d'archivage

Options des dossiers:

  • Les noms de l'option "special_use" sont des noms réservés qui sont standardisé et compris normalement par les clients de messagerie (sauf Microsoft Office Outlook).
  • L'option "auto = subscribe" provoque la création du dossier sous Linux dans l'arborescence de l'utilisateur dans le répertoire "Maildir" dès que le client de messagerie de type IMAP se connecte. En outre ce dossier est automatiquement coché comme "abonné" dans le client de messagerie. A noter que les noms de dossiers standardisés qui sont en anglais, sont automatiquement traduit dans la langue de l'utilisateur (sauf Microsoft Office Outlook). Par exemple, le dossier "Trash" apparaîtra sous le nom "Corbeille".

Cette configuration donnera sous Thunderbird l'aperçu suivant:



On remarque que le nom des dossiers a été traduit de l'anglais (noms standardisés) vers le français.


Et dans le répertoire Linux de l'utilisateur, la commande suivante:

tree -da Maildir

donnera l'arborescence suivante:


Maildir
├── cur
├── new
├── tmp
├── .Archives
│   ├── cur
│   ├── new
│   └── tmp
├── .Drafts
│   ├── cur
│   ├── new
│   └── tmp
├── .Junk
│   ├── cur
│   ├── new
│   └── tmp
├── .Sent
│   ├── cur
│   ├── new
│   └── tmp
└── .Trash
    ├── cur
    ├── new
    └── tmp

Nous remarquons directement dans le répertoire de base "Maildir", les répertoires :

  • "new" : qui va contenir les nouveaux messages non-lus (INBOX)
  • "cur" : qui va contenir les nouveaux messages lus (INBOX)
  • "tmp" : dossier des opérations temporaires (INBOX)

Par contre, les autres dossiers, repris dans la configuration, créés sont individualisés et sont préfixés par un "." comme précisé dans la configuration (option : "separator = ."). En dessous, on retrouve les mêmes sous-répertoires que pour le "dossier" "INBOX" non individualisé.


Activer et lancer le service

Le service à lancer est DOVECOT. La première commande active le service pour qu'à chaque démarrage du serveur, le service se lance. La seconde lance directement le service. La troisième relance le service.

systemctl enable dovecot
systemctl start dovecot
systemctl restart dovecot


Configurer le mur de feu ou FireWall

Vous avez sûrement activé le FireWall du serveur. Dans l'exemple, l'adressage de notre LAN est 192.168.1.0 avec un masque de 255.255.255.0 ou de 24 bits. Comme c'est un service proposé, il faut ouvrir diverses portes. Tout dépend des services proposés et des services distants souhaités. Dans notre cas, nous nous sommes limités au protocoles POP3 (port 110, 995) et IMAP (port 143, 993) cryptés ou non.

Les lignes à ajouter dans le fichier de configuration d'IPTABLES "/etc/sysconfig/iptables" sont les suivantes:

-A INPUT -p tcp -m tcp --dport 110 -s 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 143 -s 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 995 -s 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 993 -s 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT


Vérification

Après démarrage du service, la commande suivante affiche les ports en écoute:

netstat -ntpl | grep dovecot

qui donne:

tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      6633/dovecot
tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN      6633/dovecot
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      6633/dovecot
tcp        0      0 0.0.0.0:995             0.0.0.0:*               LISTEN      6633/dovecot


Tester l'accès à la boîte mail

Comme dans l'article sur Postfix - serveur de messagerie, on peut tester la connexion aux protocoles POP et IMAP via des scripts.


Aller plus loin

Jusque maintenant, nous nous sommes basés sur une configuration de base légèrement modifiée. Mous allons proposer quelques améliorations.





retour au menu de concernant la messagerie