"Dirty" items in KMail corrigeren

Dit probleem is direct gerelateerd aan Akonadi bug #436550, die gerapporteerd is in april, 2021. Het komt van de "dirty" items die zo af en toe door akonadictl fsck gevonden worden.

~ $ akonadictl fsck 2
>&1 | grep ^Found
Found 5 external files.
Found 5 external parts.
Found no unreferenced external files.
Found 0 parts to be moved to external files
Found 0 parts to be moved to database
Found 6 collections without RID.
Found 0 items without RID.
Found 750 dirty items.

De vlag "dirty" op een item in pimitemtable (een van de tabellen in de Akonadi database) wordt gebruikt om bepaalde aspecten van asynchrone verwerking te controleren. Deze is op true is gezet wanneer er bewerkingen staan te wachten voor een bepaald e-mailbericht. Meestal wordt de vlag "dirty" een of twee seconden later gewist, wanneer de eens wachtende bewerking beëindigd wordt.

Af en toe, voor redenen die niet geheel helder zijn, kan de vlag "dirty" gezet worden op tientallen of zelfs honderden berichten alles ineens, zoals boven aangegeven. Wanneer dat gebeurt zal het automatische wismechanisme vastlopen en is is niet in staat om zichzelf automatisch te repareren. De primaire reden voor een "dirty" item in deze omstandigheden is dat het veld "remoteid" niet juist is gezet, waardoor ophalen van een "dirty" bericht onmogelijk is in KMail. Het bericht bestaat nog steeds op de schijf. Maar KMail kan het niet vinden.

Er zout een betere manier moeten zijn om dit probleem te corrigeren. Als u een betere manier weet, laat het dan de auteurs weten, zodat deze documentatie verbeterd kan worden. De volgende procedure zal tenminste de databasefouten corrigeren. Maar het vraagt heel wat werk.

  1. Beëindig KMail en stop de Akonadi server met een terminalcommando: akonadictl stop .

  2. Maak een reservekopie van al uw e-mailberichten. U zou PIM gegevensexporteur voor dit doel kunnen gebruiken. Of u kunt Ark gebruiken om een archief te maken of Dolphin om een tweede kopie van ~/.local/share/local-mail/ ergens anders op uw vaste schijf. Als u van avonturen houdt, zou u uw lokale mappen direct naar iets als local-mail-save kunnen hernoemen. Maar het is veiliger om zeker te zijn dat u een reservekopie van uw berichten hebt alvorens u verder gaat.

  3. U zou ook een reservekopie van alle filters die u hebt gemaakt kunnen maken en nagaan dat u weet hoe aangepaste items Map Verzonden e-mail, Map Concepten of Map Sjablonen geassocieerd met uw KMail identiteiten herstelt. De volgende stap zal al uw persoonlijk aangepaste e-mailmappen verwijderen en u zult enige zaken moeten aanpassen nadat Akonadi zijn databasetabellen opnieuw bouwt.

  4. Verwijder nu alle mappen in de map local-mail of hernoem die map tot iets zoals local-mail-save . Start daarna het programma KMail. Dit dwingt Akonadi om alle databasetabelitems geassocieerd met e-mailberichten te wissen. U zult uw oude mapnamen zien, kort, maar deze zullen verdwijnen wanneer Akonadi eindigt met het verwijderen van alle "dirty" items (en alle schone, ook).

  5. Beëindig KMail en stop de Akonadi server zoals uitgelegd in stap 1, herstel daarna de reservekopie van uw berichten (aangemaakt in stap 2) naar de map ~/.local/share/local-mail/ .

  6. KMail opnieuw opstarten en afdwingen dat Akonadi zich opnieuw synchroniseert met de database. De gemakkelijkste manier om dat te doen is BestandE-mail controleren (Ctrl+L); Akonadi synchroniseert automatisch alle mappen wanneer het e-mail ophaalt. Dit kan een aantal minuten duren om te voltooien, afhankelijk van hoeveel berichten u hebt opgeslagen in uw mappen in KMail. Maar wanneer het proces gereed is zullen alle "dirty" items weg zijn.

  7. Tenslotte zult u uw e-mailfilterregels wille herstellen waarvan een reservekopie in stap 3 is gemaakt en controleer dat alle aangepaste mapitems (Map Verzonden e-mail, etc.) voor uw identiteiten ingesteld zijn op de manier die u wilt. Het is ook nodig om elke aangepaste mapeigenschap die u hebt ingesteld terug te zetten en u zult waarschijnlijk wat moeten doen met een aantal onverwachte "Ongelezen bericht" meldingen. Maar uw Akonadi databasetabellen zullen weer schoon en glanzend zijn!