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 !
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.
root@host:~# wget https://raw.githubusercontent.com/dovecot/tools/main/courier-dovecot-migrate.pl
root@host:~# chmod +x courier-dovecot-migrate.pl
root@host:~# ./courier-dovecot-migrate.pl --to-dovecot --recursive --convert /data/vmail/std.rocks/
root@host:~# doveadm pw -s ssha512 -p <PASSWORD>
root@host:~# doveadm pw -s ssha512 -p std.rocks
{SSHA512}8lhtRxyXWP5azW1OjllkVUSuMPVABNtTR/MxMVTIEYXLXjoOMwCe/7Bpr1iqPi/nKutRbPxvBddG1pk2BVpgorhZPjI=
john@std.rocks:{SSHA512}8lhtRxyXWP5azW1OjllkVUSuMPVABNtTR/MxMVTIEYXLXjoOMwCe/7Bpr1iqPi/nKutRbPxvBddG1pk2BVpgorhZPjI=::::::
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
}
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
mail_location = maildir:/data/vmail/%d/%n/Maildir
namespace {
prefix = INBOX.
separator = .
inbox = yes
}
auth_mechanisms = plain
!include auth-passwdfile.conf.ext
root@host:~# systemctl restart dovecot.service
Après l'installation et la migration, j'ai dû effectuer quelques modifications, que je détaillerai ici.
root@host:~# mv /etc/dovecot/conf.d/{15-mailboxes.conf,15-mailboxes.conf.disabled}
root@host:~# systemctl restart dovecot.service
Message d'erreur : imap-login: Maximum number of connections from user+IP exceeded (mail_max_userip_connections=10): user=<john@std.rocks> :
mail_max_userip_connections = 30
root@host:~# systemctl restart dovecot.service
Message d'erreur : master: Avertissement : service(imap-login) : limite de processus (100) atteinte, les connexions des clients sont abandonnées
default_process_limit = 200
root@host:~# systemctl restart dovecot.service
Message d'erreur : Warning: Inotify instance limit for user 7200 (UID vmail) exceeded, disabling. Increase /proc/sys/fs/inotify/max_user_instances
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
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)
default_vsz_limit = 512M
root@host:~# systemctl restart dovecot.service
Contact :