Thunderbird gelé au démarrage

Thunderbird s'ouvre, se voile en blanc, et Windows finit par le fermer. Le réflexe est de réinstaller, ou pire de supprimer le profil : dans la grande majorité des cas la cause est la restauration de session, une trentaine d'onglets rouverts d'un coup qui figent l'application avant qu'elle ne rende la main. Cette procédure isole la cause en trois contrôles, corrige sans jamais toucher au courrier, et vérifie la remise en service.

Cible testée : Thunderbird 155 Windows 10 et 11 Aucun message touché La session en cause 9 fois sur 10
Mis à jour le 12 septembre 2026 16 min de lecture
À lire avant de toucher au poste

Conventions et cadre d'intervention

Toutes les valeurs propres au client sont notées en placeholders : imap.serveur.tld pour le nom d'hôte de messagerie, [email protected] pour l'adresse. Sur un mutualisé, ce nom d'hôte est celui affiché dans le panneau d'hébergement, sous Comptes de messagerie puis Connecter des appareils, jamais un alias déduit du nom de domaine.

Les commandes qui suivent utilisent deux variables PowerShell, posées une fois pour toutes à la phase 00 : $p pour le dossier du profil actif, $bk pour le dossier de sauvegarde. Elles se perdent à la fermeture de la console : si vous rouvrez une fenêtre en cours d'intervention, rejouez la phase 00.

Cadre
Ces manipulations se font sur un poste dont on a la charge, avec l'accord explicite du client. L'outil de prise en main à distance est retiré en fin d'intervention, et les identifiants relevés pendant l'intervention ne survivent pas au ticket.
La règle
Rien dans cette procédure ne touche aux messages. Les fichiers manipulés sont des fichiers d'état et d'index, que Thunderbird reconstruit seul au lancement suivant. Si une étape semble demander la suppression d'un dossier de courrier, c'est qu'elle est mal appliquée : arrêter et reprendre à la phase 00.
Réflexe
Le serveur est la source de vérité, jamais le client lourd. Ouvrir le webmail avant toute chose : s'il affiche la boîte et ses dossiers, le courrier est intact quoi qu'il arrive au profil. Ce seul contrôle autorise à travailler sereinement sur le poste, et c'est aussi le filet à laisser à l'utilisateur le temps de l'intervention.

Cette procédure couvre le gel au lancement. Pour le déplacement des boîtes, voir Migration mail POP et IMAP vers IMAP ; pour la reconfiguration des clients, Reconfigurer Outlook et les mobiles après une migration mail.

Quatre symptômes qui doivent être réunis

Reconnaître le cas

Un gel et un plantage se ressemblent pour l'utilisateur, et appellent deux dépannages opposés. Les quatre points ci-dessous doivent être réunis. S'ils ne le sont pas, cette procédure n'est pas la bonne.

  • La fenêtre s'affiche, puis se voile en blanc avec la mention « ne répond pas » dans la barre de titre.
  • Le gel survient très vite après le lancement, en général en moins de 60 secondes, et non en cours d'utilisation.
  • Il se reproduit à chaque tentative, y compris après un redémarrage du poste.
  • Aucun rapport de plantage n'est proposé, parce qu'il s'agit d'un blocage et non d'un arrêt brutal.
Distinguer
Si l'application disparaît au lieu de se figer, ou si le rapport de plantage Mozilla s'ouvre, c'est un plantage : le journal Windows portera un Application Error et non un Application Hang, et le traitement passe par le mode sans échec puis les modules, pas par la session. La phase 01 tranche en une commande.
Par où commencer

Arbre de décision

Le geste à faire dépend de ce que montrent les contrôles, pas de ce que raconte l'écran. Quatre situations proches appellent quatre gestes différents.

Blanc, figé ?

Fenêtre visible, « ne répond pas », pas de rapport de plantage

C'est bien un gel. Le diagnostic complet s'applique, et il s'arrête presque toujours à la session. → Phases 00 à 03

Plus de 10 onglets ?

La session rouvre une pile d'onglets de messages

Cause la plus fréquente, et la plus rapide à corriger. On déplace le fichier de session, on ne supprime rien. → Phase 04, puis vérification

Session vide, gel quand même ?

Un index est en cause, pas la session

Index de recherche global, ou index d'un dossier précis si le gel se produit toujours au même endroit. → Phase 05

Après une mise à jour ?

Module incompatible, ou accélération graphique

Un module resté sur la version précédente bloque le démarrage sans le dire. → Phase 06, mode sans échec d'abord

00

Repérer le profil actif

Quand : en premier, Thunderbird fermé, avant toute autre commande.

Un poste peut porter plusieurs profils, dont d'anciens abandonnés lors d'une réinstallation. Travailler sur le mauvais donne une intervention sans effet, et un utilisateur qui retrouve son problème intact. Ne jamais deviner le dossier : le fichier profiles.ini désigne celui qui sert.

PowerShell · session utilisateurps1
$tb  = "$env:APPDATA\Thunderbird"
$rel = (Select-String "$tb\profiles.ini" -Pattern '^Default=Profiles/' | Select-Object -First 1).Line -replace '^Default=', ''
$p   = Join-Path $tb ($rel -replace '/', '\')
$p                                  # le chemin retenu pour toute la suite
Test-Path $p                        # True, sinon le profil designe n'existe plus
Attendu
Un chemin qui se termine par .default-esr ou .default, et un True. Relever au passage la taille du profil et la date du dernier lancement : un profil volumineux explique le gel de session, une date ancienne trahit un profil abandonné.
Sinon
Rien en retour : la ligne Default= est absente, ce qui arrive sur une installation qui n'a jamais démarré ou sur un profil déplacé à la main. Ouvrir profiles.ini, repérer la section [Profile…] dont le chemin existe réellement sur le disque, et poser $p à la main. Si IsRelative=0, le chemin est absolu et se lit tel quel, y compris sur un autre disque.
01

Confirmer le blocage dans le journal Windows

Quand : avant de modifier quoi que ce soit, pour prouver le gel et le dater.

C'est la preuve objective. Elle distingue un vrai gel d'une lenteur ressentie, elle date le début du problème, et elle servira de point de comparaison à la vérification.

PowerShell · journal Applicationps1
Get-WinEvent -FilterHashtable @{LogName='Application'; ProviderName='Application Hang'; StartTime=(Get-Date).AddDays(-7)} -ErrorAction SilentlyContinue |
  Where-Object { $_.Message -match 'thunderbird' } |
  Select-Object TimeCreated, Id
Attendu
Des événements Id 1002, libellés « a cessé d'interagir avec Windows et a été fermé ». Comparer l'heure relevée à celle du lancement : moins d'une minute d'écart confirme un gel au démarrage. La date du plus ancien donne le début du problème, à rapprocher d'une mise à jour ou d'une migration.
Sinon
Liste vide : rejouer la commande en remplaçant Application Hang par Application Error. Si c'est là que les événements apparaissent, il s'agit d'un plantage et non d'un gel, cette procédure ne s'applique pas : passer directement à la phase 06. Deux listes vides et un utilisateur qui maintient le symptôme : chercher du côté de la lenteur et non du blocage, en commençant par l'espace libre sur C: et par l'antivirus.
02

Mettre le serveur de messagerie hors de cause

Quand : avant de toucher au profil, pour savoir de quel côté est le problème.

Thunderbird interroge le serveur dès le lancement, pour chaque compte et pour chaque onglet restauré. Un serveur qui répond en plusieurs secondes suffit à figer l'application : inutile de démonter un profil qui n'a rien fait. La sonde ci-dessous ouvre la connexion chiffrée et lit la bannière, sans authentification et sans envoyer le moindre message.

PowerShell · sonde IMAP, lecture de banniereps1
$h = 'imap.serveur.tld'             # le nom d'hote releve dans le panneau
$c = New-Object Net.Sockets.TcpClient
$c.Connect($h, 993)
$s = New-Object Net.Security.SslStream($c.GetStream(), $false, ({ $true } -as [Net.Security.RemoteCertificateValidationCallback]))
$s.AuthenticateAsClient($h)
(New-Object IO.StreamReader($s)).ReadLine()
$c.Close()
Attendu
Une bannière du type * OK [CAPABILITY ...] ready. en une fraction de seconde. Le serveur est hors de cause, le problème est sur le poste : continuer.
Sinon
Pas de réponse, ou plusieurs secondes d'attente : traiter d'abord le réseau, le pare-feu du poste ou l'hébergeur, et ne rien modifier dans le profil. Un antivirus qui « analyse le courrier chiffré » intercepte la session TLS et produit exactement ce symptôme. Le détail des cas de refus est dans le runbook Reconfigurer Outlook et les mobiles.
Stop
Si la sonde se met à timeouter alors qu'elle répondait, après plusieurs essais d'identifiants sur le poste : suspecter un blocage d'IP anti brute force du pare-feu de l'hébergeur. Cesser immédiatement les tentatives, chaque nouvel essai prolonge le blocage.
03

Compter les onglets restaurés au lancement

Quand : dernier contrôle, et dans la grande majorité des cas celui qui donne la réponse.

Thunderbird rouvre au démarrage tous les onglets laissés ouverts à la fermeture. Chaque onglet de message déclenche une requête sur le serveur, et un onglet de pièce jointe recharge le fichier entier : une session trop chargée fige l'application avant qu'elle n'ait rendu la main. Comme elle est rechargée à chaque lancement, le symptôme se reproduit indéfiniment, et c'est ce caractère systématique qui fait croire à une installation corrompue.

PowerShell · lecture seule du fichier de sessionps1
(Get-Content "$p\session.json" -Raw | Select-String '"mode":"' -AllMatches).Matches.Count
[math]::Round((Get-Item "$p\session.json").Length / 1KB)   # une session saine pese quelques Ko
Attendu
Sur un poste sain, 1 à 3 : l'onglet de courrier, éventuellement un agenda et un carnet d'adresses.
Au delà de 10
La cause est trouvée, passer à la phase 04. Inutile de chercher plus loin, et surtout inutile de reconstruire un index : la correction prend deux minutes et se vérifie immédiatement.
Fichier absent
Pas de session.json : soit la restauration de session est désactivée, soit le fichier a déjà été retiré. Ce n'est donc pas la cause, continuer en phase 05.
04

Fermer l'application, puis retirer la session

Quand : dès que la phase 03 a dépassé la dizaine d'onglets. C'est la correction.

Fermer Thunderbird pour de bon

Un processus resté en mémoire verrouille le profil par le fichier parent.lock et fait échouer la suite en silence : le déplacement paraît accepté, et Thunderbird réécrit la session en se fermant. Vérifier que plus rien ne tourne, sans se contenter de la fenêtre disparue.

PowerShell · session utilisateurps1
Get-Process thunderbird -ErrorAction SilentlyContinue | Stop-Process -Force
Get-Process thunderbird -ErrorAction SilentlyContinue   # ne doit plus rien renvoyer

Sauvegarder puis déplacer le fichier de session

On déplace, on ne supprime pas. Thunderbird recrée une session vierge au lancement suivant, et la sauvegarde permet de revenir en arrière si l'utilisateur réclame ses onglets. Le fichier .backup part avec : laissé sur place, il peut être repris et ramener la pile d'onglets, donc le gel.

PowerShell · deplacement, aucune suppressionps1
$bk = "$env:USERPROFILE\Desktop\tb-sauvegarde"
New-Item -ItemType Directory -Force $bk | Out-Null
Move-Item "$p\session.json"        $bk -Force -ErrorAction SilentlyContinue
Move-Item "$p\session.json.backup" $bk -Force -ErrorAction SilentlyContinue
Get-ChildItem $bk                   # trace de ce qui a ete retire

Relancer Thunderbird. Dans la très grande majorité des cas la procédure s'arrête ici : passer directement à la vérification, et ne rien reconstruire tant que le gel n'est pas revenu.

Consigne
Prévenir l'utilisateur : ses onglets ouverts ont disparu, ses messages non. Dit avant le relancement, c'est une information ; découvert après, c'est un incident. La sauvegarde reste sur le bureau le temps de l'intervention, et se retire à la clôture du ticket.
05

Reconstruire les index, et eux seuls

Quand : uniquement si le gel revient avec une session vide.

L'index de recherche global

Ce fichier est un index, pas un stockage de courrier : il sert la recherche globale et la vue par conversation. Thunderbird le régénère en tâche de fond, ce qui fait chauffer le processeur pendant quelques dizaines de minutes sur une grosse boîte. Prévenir l'utilisateur, et ne pas lancer l'opération juste avant de rendre le poste.

PowerShell · Thunderbird ferme, $p et $bk posesps1
Move-Item "$p\global-messages-db.sqlite" "$bk\global-messages-db.sqlite.old" -Force

L'index d'un dossier précis

Si le gel se produit toujours à l'ouverture du même dossier, c'est son index local qui est en cause et non l'index global. Le réparer depuis l'application et non depuis l'explorateur : clic droit sur le dossier, Propriétés, onglet Général, Réparer le dossier. Thunderbird reconstruit le fichier .msf correspondant à partir du serveur.

Attention
Sur un compte POP ou sur des dossiers locaux, il n'y a pas de copie serveur : réparer un dossier relit le fichier de courrier local, ce qui est sans danger, mais supprimer ce fichier perdrait les messages. C'est la seule zone du profil où la distinction compte vraiment. En cas de doute sur la nature du compte, ne rien déplacer et passer à la phase 06.
06

Isoler les modules, puis le profil

Quand : en dernier recours, ou d'emblée si le gel a suivi une mise à jour.

Le mode sans échec désactive les modules complémentaires et l'accélération graphique, sans rien modifier au profil. C'est un essai réversible : il ne corrige rien, il désigne.

Invite de commandes ou Executercmd
"C:\Program Files\Mozilla Thunderbird\thunderbird.exe" -safe-mode
"C:\Program Files\Mozilla Thunderbird\thunderbird.exe" -P            # gestionnaire de profils
  • Le gel disparaît en mode sans échec : réactiver les modules un par un, en relançant entre chaque. Le fautif est presque toujours un module resté sur la version précédente.
  • Le gel persiste : créer un profil de test avec -P. Un profil neuf qui fonctionne désigne le profil d'origine ; un profil neuf qui gèle désigne l'installation, et c'est là seulement qu'une réinstallation se justifie.
  • Le profil de test se crée à côté de l'existant, qui n'est ni modifié ni supprimé. Ne jamais cocher la suppression d'un profil dans ce gestionnaire : c'est le seul écran de Thunderbird qui efface du courrier.
Piste
Si un profil neuf gèle aussi, tester l'accélération graphique seule : dans Paramètres, Général, Performances, décocher l'utilisation du matériel graphique. Un pilote d'affichage ancien produit un gel au tout premier rendu de la fenêtre, donc avant même le chargement des comptes.
07

Vérification avant de rendre le poste

Quand : après le relancement, cinq minutes de fonctionnement plus tard.

Ne pas se contenter de voir la fenêtre s'ouvrir : un gel se produit justement après l'affichage. Laisser tourner cinq minutes, puis contrôler les deux indicateurs.

PowerShell · controle de remise en serviceps1
Get-Process thunderbird | Where-Object MainWindowTitle |
  Select-Object Responding, @{n='RAM_Mo'; e={[math]::Round($_.WorkingSet64/1MB)}}, MainWindowTitle

Get-WinEvent -FilterHashtable @{LogName='Application'; ProviderName='Application Hang'; StartTime=(Get-Date).AddMinutes(-10)} -ErrorAction SilentlyContinue |
  Where-Object { $_.Message -match 'thunderbird' }
Attendu
Responding = True, une occupation mémoire stable de l'ordre de quelques centaines de Mo, et aucun nouvel événement de blocage sur les dix dernières minutes. Une application chargée normalement se stabilise ; une application figée reste au même chiffre avec une consommation processeur nulle.

Puis valider les deux chemins, parce qu'ils sont indépendants : envoyer un message de test vers une adresse externe, et relever un dossier pour contrôler la réception. Une réception qui marche ne prouve rien sur l'envoi.

Ne pas conclure trop vite
Si l'index global a été reconstruit en phase 05, l'application reste lente et le processeur chargé le temps de la réindexation. C'est attendu, et ce n'est pas un gel : Responding reste à True. Le dire à l'utilisateur, sinon il rappelle le soir même.
Ce qui évite la récidive

Entretien du profil

Le gel de session se produit d'autant plus facilement que le profil est lourd. Ces valeurs se relèvent en une commande, à chaque intervention sur le poste.

PowerShell · releve du profil, lecture seuleps1
$all = Get-ChildItem $p -Recurse -File
'Profil : {0:N2} Go' -f ((($all | Measure-Object Length -Sum).Sum) / 1GB)
$all | Sort-Object Length -Descending |
  Select-Object -First 6 @{n='Mo'; e={[math]::Round($_.Length/1MB, 1)}}, FullName

Get-PSDrive C | Select-Object @{n='Libre_Go'; e={[math]::Round($_.Free/1GB, 1)}}
  • Vider les corbeilles, puis clic droit sur chaque dossier de plus de 300 Mo et Compacter. Le compactage écrit un fichier temporaire de la taille du dossier : vérifier l'espace libre avant de le lancer, sinon il échoue à mi-parcours.
  • Fermer les onglets de messages avant de quitter l'application. C'est la consigne à donner à l'utilisateur, et c'est elle qui évite la récidive. Une seule phrase, dite au moment de rendre le poste.
  • Sur un profil vraiment lourd, descendre les vieilles archives en dossiers locaux plutôt que de les garder synchronisées. Ces dossiers n'existent alors plus que sur le poste : ils entrent dans la sauvegarde du client, ou ils n'y sont pas.
  • Régler le courrier conservé hors connexion sur quelques mois au lieu de la boîte entière, sur un poste dont le disque est juste.

Relevé d'un poste traité le 12 septembre 2026

Les valeurs qui ont conduit au diagnostic, pour donner des ordres de grandeur.

MesureRelevéLecture
Taille du profil1,68 GoLourd sans être anormal pour deux comptes.
Boîte de réception629 MoAu delà de 300 Mo : candidate au compactage.
Corbeille277 MoJamais vidée, donc jamais compactée.
Index de recherche global141 MoProportionné, aucune raison de le reconstruire.
Onglets restaurés31la cause pour un attendu de 1 à 3.
Espace libre sur C:22,6 GoSuffisant pour compacter les gros dossiers.

Sur ce poste, la session contenait vingt-huit onglets de messages répartis sur deux comptes, et un onglet de visionneuse qui rechargeait un PDF directement depuis le serveur. Le seul retrait du fichier de session a suffi, sans rien reconstruire, sans réinstaller, et sans toucher au courrier.

Ce qui fait perdre des heures

Les pièges et leurs parades

Chaque ligne est ancrable : le lien de la ligne pointe directement dessus.

Ce que montre le contrôleCause réelleParadeGravité
Le gel revient après une réinstallation complèteLa réinstallation remplace le programme, pas le profil, et la session fautive est dans le profilTraiter le profil (phase 03). Réinstaller ne se justifie qu'après un profil de test qui gèle aussi.piège
Le déplacement de session n'a aucun effetPlusieurs profils sur le poste, la manipulation a porté sur un profil abandonnéprofiles.ini fait foi (phase 00), jamais le dossier le plus gros ni le plus récent.bloquant
Le fichier de session est revenu tout seulUn processus Thunderbird tournait encore et a réécrit la session en se fermantVérifier par Get-Process que plus rien ne tourne avant de déplacer (phase 04).piège
Le gel revient au deuxième lancementsession.json.backup laissé sur place, puis reprisDéplacer les deux fichiers de session dans la sauvegarde.piège
Aucun Application Hang, mais des Application ErrorC'est un plantage et non un gel : la session n'y est pour rienMode sans échec puis modules (phase 06).piège
La sonde IMAP répond en plusieurs secondesRéseau, pare-feu du poste, antivirus qui intercepte le TLS, ou hébergeur en peineTraiter la connexion. Ne rien modifier dans le profil tant que le serveur traîne.bloquant
Index global reconstruit alors que la session comptait trente ongletsCorrection prise dans le désordre : la cause était en amontSuivre l'ordre des phases. L'index ne se reconstruit qu'avec une session vide.piège
Moins de 10 % libres sur le disqueLe compactage écrit un temporaire de la taille du dossier, et la synchronisation échoue sans message clairLibérer de l'espace avant toute manipulation du profil.bloquant
Gel à l'ouverture d'un message précisMessage malformé, ou pièce jointe très lourde rechargée depuis le serveurSupprimer ou déplacer le message depuis le webmail, puis relancer le poste.piège
Gel apparu juste après une mise à jourModule resté sur la version précédente, ou accélération graphique sur un pilote ancienMode sans échec, puis réactivation module par module (phase 06).piège
Des messages manquent après une « réparation »Un dossier local ou un compte POP n'a pas de copie serveur à relireRéparer depuis l'application, ne jamais supprimer un fichier de courrier local.données
Tout le courrier a disparu après l'interventionProfil supprimé dans le gestionnaire -P, qui efface le dossier avec les messagesCréer un profil de test à côté, ne jamais cocher la suppression.bloquant
Poste lent juste après l'interventionRéindexation en tâche de fond, attendue et temporaireLe dire à l'utilisateur. Responding = True distingue la lenteur du gel.à annoncer
Le gel revient quelques semaines plus tardL'habitude d'empiler les onglets a repris, la session se rechargeConsigne de fermeture des onglets, et compactage des gros dossiers.piège
Savoir ce qu'on regarde

Repères dans le profil

Profils
%APPDATA%\Thunderbird\profiles.ini, la liste et le profil par défaut.
Profil
%APPDATA%\Thunderbird\Profiles\<id>.default-esr\, la valeur de $p.
Session
session.json et session.json.backup, les onglets restaurés. Aucun message.
Index global
global-messages-db.sqlite, l'index de recherche. Reconstruit seul.
Index dossier
*.msf, à côté de chaque fichier de courrier. Reconstruit depuis l'application.
Comptes IMAP
ImapMail\<serveur>\, le cache local des dossiers du serveur.
Dossiers locaux
Mail\Local Folders\, du courrier qui n'existe que sur ce poste.
Réglages
prefs.js, les comptes et les préférences. Ne se modifie pas application ouverte.
Verrou
parent.lock, présent tant qu'une instance tourne.
Programme
C:\Program Files\Mozilla Thunderbird\thunderbird.exe.
À savoir
Le dossier ImapMail conserve le nom d'hôte d'origine du compte, parfois des années après un changement de serveur. Un sous-dossier au nom d'un ancien hébergeur n'est donc pas un résidu : c'est bien le cache du compte en service. Vérifier la correspondance dans prefs.js, ligne mail.server.serverN.directory, avant de toucher à quoi que ce soit.
Vous êtes bloqué sur une de ces étapes ?

Je peux la jouer pour vous

Cette procédure est publiée telle qu'elle est appliquée en intervention réelle. Si vous préférez la déléguer, ou si votre cas sort du cadre décrit ici, écrivez-moi : je reprends la migration de bout en bout, boîtes et postes compris.

Décrire mon cas  ·  Les autres procédures

Parlons-en

Une migration ou une reprise technique à faire ?

Décrivez votre situation, je vous dis ce qui est faisable, en combien de temps et à quel prix.

Réponse sous 48h · Premier rendez-vous gratuit · contact@julienchretien.com