rss logo

Migration de Courier-IMAP vers Dovecot sur Linux

Logo Dovecot IMAP

En raison de problèmes récurrents de performance et de service qui plante, j'ai récemment migré le service IMAP d'un serveur de messagerie de Courier-IMAP vers Dovecot. Ce dernier est réputé pour sa robustesse et sa maintenance active. Dans cet article, je partagerai les notes qui m'ont aidé à effectuer cette migration. Elles sont spécifiques à mon architecture (Courier-IMAP + Courier-SMTP avec une authentification authuserdb), mais j'espère qu'elles pourront aider d'autres personnes également. Bien sûr, il est fortement recommandé de sauvegarder vos données avant d'apporter toute modification. Bonne lecture !

Installation

  • Installer Dovecot :
root@host:~# apt update && apt install dovecot-imapd

Dovecot fournit le script courier-dovecot-migrate.pl, qui permet de migrer de Courier-IMAP tout en préservant les UID IMAP en convertissant le fichier courierimapuiddb en un fichier dovecot-uidlist. Source : https://wiki.dovecot.org/Migration/Courier.

  • Télécharger courier-dovecot-migrate.pl et donner les permissions en exécution :
root@host:~# wget https://raw.githubusercontent.com/dovecot/tools/main/courier-dovecot-migrate.pl root@host:~# chmod +x courier-dovecot-migrate.pl

Migration

Conversion

  • Exécuter l'outil de conversion courier-dovecot-migrate.pl :
root@host:~# ./courier-dovecot-migrate.pl --to-dovecot --recursive --convert /data/vmail/std.rocks/

Comptes utilisateurs

  • Pour chaque utilisateur, nous devons ajouter un mot de passe Dovecot. Pour ce faire, nous pouvons utiliser la commande doveadm pw et ajouter le nom d'utilisateur et le mot de passe au fichier /etc/dovecot/passwd :
root@host:~# doveadm pw -s ssha512 -p <PASSWORD>
  • Exemple ici avec le mot de passe std.rocks pour l'utilisateur john@std.rocks :
root@host:~# doveadm pw -s ssha512 -p std.rocks {SSHA512}8lhtRxyXWP5azW1OjllkVUSuMPVABNtTR/MxMVTIEYXLXjoOMwCe/7Bpr1iqPi/nKutRbPxvBddG1pk2BVpgorhZPjI=
  • Modifier le fichier /etc/dovecot/passwd avec “username:{SSHA512}sha512generatedpassword::::::”: :
john@std.rocks:{SSHA512}8lhtRxyXWP5azW1OjllkVUSuMPVABNtTR/MxMVTIEYXLXjoOMwCe/7Bpr1iqPi/nKutRbPxvBddG1pk2BVpgorhZPjI=::::::
  • Modifier le fichier /etc/dovecot/conf.d/auth-passwdfile.conf.ext :
passdb { #méthode d'authentification driver = passwd-file #spécifie le format du nom d'utilisateur dans le fichier de mot de passe. args = username_format=%u /etc/dovecot/passwd } userdb { driver = static #spécifie le chemin du répertoire principal pour la boîte aux lettres, où %d représente le domaine et %n représente le nom d'utilisateur. args = uid=vmail gid=vmail home=/data/vmail/%d/%n }

Configuration

  • Modifier le fichier /etc/dovecot/conf.d/10-ssl.conf :
ssl = yes #certificats de courier : #ssl_cert = <etc/courier/imapd.pem #Remarque : séparer imapd.pem de -----BEGIN PRIVATE KEY----- jusqu'à la fin pour créer server.key #ssl_key = <etc/courier/server.key #certificats Let's Encrypt : ssl_cert = <etc/courier/fullchain.pem ssl_key = <etc/courier/privkey.pem
  • Modifier le fichier /etc/dovecot/conf.d/10-mail.conf :
mail_location = maildir:/data/vmail/%d/%n/Maildir namespace { prefix = INBOX. separator = . inbox = yes }
  • Modifier le fichier /etc/dovecot/conf.d/10-auth.conf :
auth_mechanisms = plain !include auth-passwdfile.conf.ext
  • Redémarrer le service dovecot :
root@host:~# systemctl restart dovecot.service

Correction des erreurs après migration

Après l'installation et la migration, j'ai dû effectuer quelques modifications, que je détaillerai ici.

Les dossiers apparaissent en double dans Thunderbird

  • Désactiver le fichier de configuration /etc/dovecot/conf.d/15-mailboxes.conf :
root@host:~# mv /etc/dovecot/conf.d/{15-mailboxes.conf,15-mailboxes.conf.disabled} root@host:~# systemctl restart dovecot.service

Nombre maximum de connexions

Message d'erreur : imap-login: Maximum number of connections from user+IP exceeded (mail_max_userip_connections=10): user=<john@std.rocks> :

  • Modifier le fichier /etc/dovecot/conf.d/20-imap.conf :
mail_max_userip_connections = 30 root@host:~# systemctl restart dovecot.service

Limite de processus atteinte

Message d'erreur : master: Avertissement : service(imap-login) : limite de processus (100) atteinte, les connexions des clients sont abandonnées

  • Modifier le fichier /etc/dovecot/conf.d/10-master.conf :
default_process_limit = 200 root@host:~# systemctl restart dovecot.service

Limite d'instances Inotify pour l'utilisateur

Message d'erreur : Warning: Inotify instance limit for user 7200 (UID vmail) exceeded, disabling. Increase /proc/sys/fs/inotify/max_user_instances

  • Modifier le fichier /etc/sysctl.conf :
fs.inotify.max_user_instances = 65535 fs.inotify.max_user_watches = 65535 root@host:~# sysctl -p /etc/sysctl.conf root@host:~# systemctl restart dovecot.service

Manque de mémoire

Message d'erreur : imap(john@std.rocks)<1123794><2epGbh79Cui4hVBj> Fatal: master: service(imap): child 1313798 returned error 83 (Out of mem ory (service imap { vsz_limit=256 MB }, you may need to increase it) - set CORE_OUTOFMEM=1 environment to get core dump)

  • Modifier le fichier /etc/dovecot/conf.d/10-master.conf :
default_vsz_limit = 512M root@host:~# systemctl restart dovecot.service
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Contact :

contact mail address