Thunderbird Caching in prefs.js automatisch abschalten

Bei uns wird Thunderbird unter Windows 7 32bit eingesetzt. Ab Version 3.x speichert Thunderbird standardmäßig alle IMAP-Mails im %appdata%ImapMail Ordner des Benutzers zwischen und indexiert sie zusätzlich in der Datei global-messages-db.sqlite.

Diese Dateien ändern sich mit jeder eingehenden Mail und werden wegen der Roaming User Profiles bei jeder An- und Abmeldung zum Server synchronisiert, was zu langen Wartezeiten führt.

Da ich keine Lust hatte jedem Nutzer zu erklären, wie er das abschalten kann, habe ich folgendes Skript für die WPS (Windows PowerShell) geschrieben. Die WPS ist integraler Bestandteil von Windows 7 und erfordert keine Zusatzinstallation.

Dazu wird unten stehenden Skript per GPO als Anmeldeskript aufgerufen.

Vielleicht hilft es ja jemanden. Es erfolgt natürlich alles ohne Garantie:

thunderbird-caching-abschalten.ps1

# Wähle die prefs.js des Benutzers default. Nur diese wird bearbeitet.
# Wird keine gefunden, macht das Skript nichts.
$pfad = (Get-ChildItem $Env:appdatathunderbirdprofiles  | Where-Object {$_.Name -match "(default)"}).fullname
$Datei = Get-ChildItem "$pfadprefs.js"
 
$Aenderung = 0;
 
#Es werden nur 50 Mailkonten berücksichtigt. Mehr sollte keiner haben :o)
for($a = 1; $a -lt 50; $a++){
 #Existiert ein Mailkonto mit dieser Nummer:
 if ($Datei | Select-String -pattern "(mail.server.server$a)" ){
 #Ist für dieses Mailkonto der offline_download-Eintrag nicht vorhanden, lege ihn an
 #Einträge, wo der Parameter von offline_download auf true steht, gibt es nicht, da thunderbird so einen Eintrag
 #aus der Config löschen würde
 if (!($Datei | Select-String -pattern "(mail.server.server$a.offline_download)" )){
 'user_pref("mail.server.server'+$a+'.offline_download", false);' | Out-File -FilePath $Datei -encoding Default -Append
 $Aenderung = 1;
 }
 }
} 
 
#Schalte die globale SQL-Suche ab:
#Einträge, wo der Parameter von indexer.enabled auf true steht, gibt es nicht, da thunderbird so einen Eintrag
#aus der Config löschen würde
if ( !($Datei | Select-String -pattern "(mailnews.database.global.indexer.enabled)" )){
 'user_pref("mailnews.database.global.indexer.enabled", false);' | Out-File -FilePath $Datei -encoding Default -Append
 $Aenderung = 1;
}
 
if($Aenderung){
 
 #Lösche die Datei global-messages-db.sqlite
 #Diese wird zwar neu angelegt, bleibt aber < als 1MB
 Remove-Item "$pfadglobal-messages-db.sqlite"
 
 #Lösche den IMAP-Ordner bis auf die msgFilterRules.dat-Dateien. Verzeichnise bleiben erhalten
 $ImapDateien = (Get-ChildItem "$pfadImapMail" -exclude 'msgFilterRules.dat', *.msf -Recurse | where {! $_.PSIsContainer})
 $ImapDateien | Remove-Item
}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.